From d443b7eba978b515970dbe1c838ace5e633de692 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: Mon, 9 Jan 2023 18:35:54 +0800 Subject: [PATCH] Upload source code for v6.0 --- .gitattributes | 5 + .gitignore | 25 + LICENSE | 21 + README.md | 10 + build.gradle | 178 ++ gradle.properties | 4 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 60756 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 240 +++ gradlew.bat | 91 + settings.gradle | 6 + .../emeraldcraft/EmeraldCraft.java | 176 ++ .../emeraldcraft/api/camp/CampType.java | 22 + .../emeraldcraft/api/camp/CampTypes.java | 49 + .../emeraldcraft/api/codec/APIEnumCodec.java | 45 + .../ContinuousMinerCustomLoot.java | 22 + .../emeraldcraft/api/fluid/FluidType.java | 13 + .../emeraldcraft/api/fluid/FluidTypes.java | 133 ++ .../emeraldcraft/api/package-info.java | 8 + .../api/tradable/ITradableDataFactory.java | 28 + .../client/ClientEventHandler.java | 13 + .../client/ClientMobEventSubscriber.java | 45 + .../emeraldcraft/client/ClientProxy.java | 148 ++ .../emeraldcraft/client/MapCustomIcons.java | 17 + .../client/models/HerringModel.java | 59 + .../client/models/MantaModel.java | 69 + .../client/models/NetherLambmanModel.java | 24 + .../client/models/NetherPigmanModel.java | 24 + .../client/models/PiglinCuteyModel.java | 281 ++++ .../models/PurpleSpottedBigeyeModel.java | 58 + .../client/models/WraithModel.java | 63 + .../client/renderers/ECBoatRenderer.java | 63 + .../client/renderers/HerringRenderer.java | 24 + .../client/renderers/MantaRenderer.java | 24 + .../renderers/NetherLambmanRenderer.java | 24 + .../renderers/NetherPigmanRenderer.java | 24 + .../client/renderers/PiglinCuteyRenderer.java | 24 + .../PurpleSpottedBigeyeRenderer.java | 24 + .../client/renderers/WraithRenderer.java | 24 + .../client/screens/CarpentryTableScreen.java | 183 ++ .../client/screens/ContinuousMinerScreen.java | 71 + .../client/screens/GlassKilnScreen.java | 133 ++ .../client/screens/IceMakerScreen.java | 81 + .../client/screens/MelterScreen.java | 79 + .../client/screens/MineralTableScreen.java | 65 + .../screens/PiglinCuteyMerchantScreen.java | 335 ++++ .../emeraldcraft/common/CommonProxy.java | 39 + .../emeraldcraft/common/ECContent.java | 67 + .../emeraldcraft/common/ECSaveData.java | 40 + .../common/MobAttributeEventSubscriber.java | 24 + .../emeraldcraft/common/ModVanillaCompat.java | 88 + .../entity/ContinuousMinerBlockEntity.java | 370 +++++ .../blocks/entity/GlassKilnBlockEntity.java | 432 +++++ .../blocks/entity/IceMakerBlockEntity.java | 382 +++++ .../blocks/entity/MelterBlockEntity.java | 431 +++++ .../entity/MineralTableBlockEntity.java | 428 +++++ .../blocks/nylium/PurpuraceusNyliumBlock.java | 36 + .../common/blocks/plant/ChiliBlock.java | 38 + .../blocks/plant/HiganBanaFlowerBlock.java | 63 + .../common/blocks/plant/WarpedWartBlock.java | 98 ++ .../blocks/sculpture/SculptureBlock.java | 52 + .../workstation/CarpentryTableBlock.java | 93 ++ .../workstation/ContinuousMinerBlock.java | 139 ++ .../workstation/CrystalballTableBlock.java | 92 + .../blocks/workstation/GlassKilnBlock.java | 133 ++ .../blocks/workstation/IceMakerBlock.java | 103 ++ .../blocks/workstation/MelterBlock.java | 132 ++ .../blocks/workstation/MineralTableBlock.java | 136 ++ .../blocks/workstation/SqueezerBlock.java | 153 ++ .../common/config/ECCommonConfig.java | 61 + .../common/crafting/CarpentryTableRecipe.java | 38 + .../common/crafting/GlassKilnRecipe.java | 37 + .../common/crafting/IceMakerRecipe.java | 100 ++ .../common/crafting/MelterRecipe.java | 108 ++ .../common/crafting/MineralTableRecipe.java | 40 + .../common/crafting/TradeShadowRecipe.java | 138 ++ .../crafting/cache/CachedRecipeList.java | 87 + .../common/crafting/cache/IListRecipe.java | 9 + .../compat/ModsLoadedEventSubscriber.java | 32 + .../compat/create/CreateFluidTypes.java | 18 + .../EmeraldCraftContinuousMinerBlocks.java | 47 + .../immersive_engineering/IEFluidTypes.java | 46 + .../jei/CarpentryTableRecipeCategory.java | 64 + .../compat/jei/GlassKilnRecipeCategory.java | 126 ++ .../compat/jei/IceMakerRecipeCategory.java | 133 ++ .../common/crafting/compat/jei/JEIHelper.java | 171 ++ .../compat/jei/MelterRecipeCategory.java | 138 ++ .../jei/MineralTableRecipeCategory.java | 105 ++ .../compat/jei/VillagerTradeCategory.java | 160 ++ .../crafting/compat/jei/package-info.java | 8 + .../crafting/menu/CarpentryTableMenu.java | 234 +++ .../crafting/menu/ContinuousMinerMenu.java | 139 ++ .../common/crafting/menu/GlassKilnMenu.java | 250 +++ .../common/crafting/menu/IceMakerMenu.java | 227 +++ .../common/crafting/menu/MelterMenu.java | 225 +++ .../crafting/menu/MineralTableMenu.java | 219 +++ .../menu/PiglinCuteyMerchantMenu.java | 247 +++ .../GlassKilnRecipeBookComponent.java | 83 + .../CarpentryTableRecipeSerializer.java | 58 + .../serializer/GlassKilnRecipeSerializer.java | 76 + .../serializer/IceMakerRecipeSerializer.java | 82 + .../serializer/MelterRecipeSerializer.java | 71 + .../MineralTableRecipeSerializer.java | 77 + .../TradeShadowRecipeSerializer.java | 72 + .../ECBoatDispenseItemBehaviour.java | 67 + .../emeraldcraft/common/entities/ECBoat.java | 169 ++ .../common/entities/ECChestBoat.java | 131 ++ .../emeraldcraft/common/entities/IECBoat.java | 6 + .../common/entities/ai/MantaAi.java | 78 + .../goals/OfferFlowerToPlayerGoal.java | 53 + .../common/entities/mobs/HerringEntity.java | 42 + .../common/entities/mobs/MantaEntity.java | 322 ++++ .../entities/mobs/NetherLambmanEntity.java | 196 +++ .../entities/mobs/NetherPigmanEntity.java | 196 +++ .../common/entities/mobs/PiglinCuteyData.java | 36 + .../entities/mobs/PiglinCuteyDataHolder.java | 7 + .../entities/mobs/PiglinCuteyEntity.java | 557 +++++++ .../entities/mobs/PlayerRideableFlying.java | 12 + .../mobs/PurpleSpottedBigeyeEntity.java | 42 + .../common/entities/mobs/WraithEntity.java | 144 ++ .../common/items/BottleFoodItem.java | 68 + .../items/ChorusFlowerEggdropSoupItem.java | 25 + .../emeraldcraft/common/items/ECBoatItem.java | 86 + .../common/items/EmeraldArmorItem.java | 84 + .../common/items/LapisArmorItem.java | 84 + .../common/items/StickFoodItem.java | 31 + .../common/register/ECBannerPatterns.java | 48 + .../common/register/ECBiomeKeys.java | 53 + .../common/register/ECBiomeTags.java | 34 + .../common/register/ECBiomes.java | 527 ++++++ .../common/register/ECBlockEntity.java | 45 + .../common/register/ECBlocks.java | 1168 +++++++++++++ .../common/register/ECBrewingRecipes.java | 97 ++ .../common/register/ECConfiguredFeatures.java | 308 ++++ .../common/register/ECContainerTypes.java | 40 + .../common/register/ECEntities.java | 70 + .../register/ECEntityActionPacketActions.java | 7 + .../common/register/ECFeatures.java | 23 + .../emeraldcraft/common/register/ECItems.java | 422 +++++ .../common/register/ECLootModifiers.java | 53 + .../common/register/ECMapDecorationTypes.java | 8 + .../common/register/ECPlacedFeatures.java | 137 ++ .../register/ECPlacementModifierType.java | 22 + .../common/register/ECPotions.java | 51 + .../common/register/ECProperties.java | 10 + .../common/register/ECRecipeBookTypes.java | 31 + .../common/register/ECRecipeSerializer.java | 38 + .../common/register/ECRecipes.java | 39 + .../common/register/ECStructureKeys.java | 29 + .../register/ECStructurePieceTypes.java | 42 + .../common/register/ECStructureSetKeys.java | 19 + .../common/register/ECStructureSets.java | 58 + .../common/register/ECStructureTags.java | 17 + .../common/register/ECStructureTypes.java | 16 + .../common/register/ECStructures.java | 128 ++ .../common/register/ECTriggers.java | 12 + .../register/ECVillagePlacedFeatures.java | 35 + .../common/register/ECWoodType.java | 12 + .../emeraldcraft/common/util/BiomeUtil.java | 174 ++ .../emeraldcraft/common/util/Convertible.java | 24 + .../emeraldcraft/common/util/ECFoods.java | 99 ++ .../emeraldcraft/common/util/ECLogger.java | 48 + .../emeraldcraft/common/util/ECSounds.java | 87 + .../common/util/ListAppendable.java | 11 + .../common/util/PlayerHealable.java | 15 + .../common/util/RegistryHelper.java | 28 + .../emeraldcraft/common/util/TradeUtil.java | 74 + .../emeraldcraft/common/util/Vec3Util.java | 12 + .../AboveHeightmapFilter.java | 37 + .../util/triggers/CuredPhantomTrigger.java | 60 + .../triggers/CuredZombifiedPiglinTrigger.java | 60 + .../util/triggers/PiglinCuteyTrigger.java | 36 + .../common/world/ECBiomeModifiers.java | 50 + .../common/world/ECOverworldBiomeBuilder.java | 816 +++++++++ .../common/world/ECProcessorLists.java | 36 + .../world/VolcanicCavesLavaPoolFeature.java | 98 ++ .../world/ZombieVillagerRoomFeature.java | 133 ++ .../world/compat/ECNetherBiomeRegion.java | 43 + .../world/compat/ECOverworldBiomeRegion.java | 28 + .../common/world/grower/GinkgoTreeGrower.java | 19 + .../common/world/grower/PalmTreeGrower.java | 19 + .../common/world/grower/PeachTreeGrower.java | 19 + .../world/pools/NetherWarfieldPools.java | 165 ++ .../common/world/pools/SwampVillagePools.java | 153 ++ .../world/structures/camp/CampFeature.java | 52 + .../world/structures/camp/CampPieces.java | 93 ++ .../entrenchment/EntrenchmentFeature.java | 51 + .../entrenchment/EntrenchmentPieces.java | 1476 +++++++++++++++++ .../structures/shelter/ShelterFeature.java | 37 + .../structures/shelter/ShelterPieces.java | 56 + .../common/world/surface/ECSurfaceRules.java | 882 ++++++++++ .../common/world/village/ECTrades.java | 611 +++++++ .../common/world/village/Villages.java | 398 +++++ .../mixin/AbstractPiglinEntityMixin.java | 74 + .../mixin/AbstractSkeletonMixin.java | 18 + .../mixin/BlockEntityTypeAccess.java | 19 + .../mixin/ClientPacketListenerMixin.java | 32 + .../mixin/HeroGiftsTaskAccess.java | 17 + .../mixin/IronGolemEntityMixin.java | 36 + .../emeraldcraft/mixin/LocalPlayerMixin.java | 47 + .../mixin/MapDecorationTypeMixin.java | 41 + .../emeraldcraft/mixin/MapInstanceMixin.java | 34 + .../mixin/MapItemSavedDataMixin.java | 30 + .../emeraldcraft/mixin/MobEntityMixin.java | 81 + .../mixin/PhantomEntityMixin.java | 145 ++ .../emeraldcraft/mixin/PiglinAiMixin.java | 60 + .../mixin/PiglinBruteAiMixin.java | 38 + .../mixin/PiglinSpecificSensorMixin.java | 19 + .../mixin/RecipeManagerAccess.java | 19 + .../mixin/ServerPlayNetHandlerMixin.java | 49 + .../emeraldcraft/mixin/ServerPlayerMixin.java | 36 + ...erboundPlayerCommandPacketActionMixin.java | 34 + .../mixin/SingleJigsawAccess.java | 21 + .../emeraldcraft/mixin/StructureSetMixin.java | 35 + .../emeraldcraft/mixin/VillagePoolsMixin.java | 16 + .../emeraldcraft/mixin/WorkAtPoiMixin.java | 58 + .../emeraldcraft/mixin/ZombieEntityMixin.java | 40 + .../mixin/ZombifiedPiglinEntityMixin.java | 142 ++ .../resources/META-INF/accesstransformer.cfg | 18 + src/main/resources/META-INF/mods.toml | 42 + .../blockstates/aluminum_stairs.json | 209 +++ .../blockstates/aluminum_wall.json | 90 + .../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 + .../emeraldcraft/blockstates/chili.json | 28 + .../blockstates/constantan_stairs.json | 209 +++ .../blockstates/constantan_wall.json | 90 + .../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_dark_sandstone.json | 7 + .../blockstates/cut_dark_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/cyan_petunia.json | 7 + .../emeraldcraft/blockstates/dark_sand.json | 21 + .../blockstates/dark_sandstone.json | 7 + .../blockstates/dark_sandstone_slab.json | 13 + .../blockstates/dark_sandstone_stairs.json | 209 +++ .../blockstates/dark_sandstone_wall.json | 90 + .../blockstates/diamond_slab.json | 13 + .../blockstates/diamond_stairs.json | 209 +++ .../blockstates/diamond_wall.json | 90 + .../blockstates/electrum_stairs.json | 209 +++ .../blockstates/electrum_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 + .../blockstates/ginkgo_button.json | 118 ++ .../emeraldcraft/blockstates/ginkgo_door.json | 124 ++ .../blockstates/ginkgo_fence.json | 48 + .../blockstates/ginkgo_fence_gate.json | 80 + .../blockstates/ginkgo_leaves.json | 7 + .../emeraldcraft/blockstates/ginkgo_log.json | 16 + .../blockstates/ginkgo_planks.json | 7 + .../blockstates/ginkgo_pressure_plate.json | 10 + .../blockstates/ginkgo_sapling.json | 7 + .../emeraldcraft/blockstates/ginkgo_sign.json | 7 + .../emeraldcraft/blockstates/ginkgo_slab.json | 13 + .../blockstates/ginkgo_stairs.json | 209 +++ .../blockstates/ginkgo_trapdoor.json | 69 + .../blockstates/ginkgo_wall_sign.json | 7 + .../emeraldcraft/blockstates/ginkgo_wood.json | 16 + .../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/higan_bana.json | 10 + .../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/lead_stairs.json | 209 +++ .../emeraldcraft/blockstates/lead_wall.json | 90 + .../blockstates/magenta_petunia.json | 7 + .../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 + .../blockstates/nickel_stairs.json | 209 +++ .../emeraldcraft/blockstates/nickel_wall.json | 90 + .../emeraldcraft/blockstates/palm_button.json | 118 ++ .../emeraldcraft/blockstates/palm_door.json | 124 ++ .../emeraldcraft/blockstates/palm_fence.json | 48 + .../blockstates/palm_fence_gate.json | 80 + .../emeraldcraft/blockstates/palm_leaves.json | 7 + .../emeraldcraft/blockstates/palm_log.json | 16 + .../emeraldcraft/blockstates/palm_planks.json | 7 + .../blockstates/palm_pressure_plate.json | 10 + .../blockstates/palm_sapling.json | 7 + .../emeraldcraft/blockstates/palm_sign.json | 7 + .../emeraldcraft/blockstates/palm_slab.json | 13 + .../emeraldcraft/blockstates/palm_stairs.json | 209 +++ .../blockstates/palm_trapdoor.json | 69 + .../blockstates/palm_wall_sign.json | 7 + .../emeraldcraft/blockstates/palm_wood.json | 16 + .../blockstates/peach_button.json | 118 ++ .../emeraldcraft/blockstates/peach_door.json | 124 ++ .../emeraldcraft/blockstates/peach_fence.json | 48 + .../blockstates/peach_fence_gate.json | 80 + .../blockstates/peach_leaves.json | 7 + .../emeraldcraft/blockstates/peach_log.json | 16 + .../blockstates/peach_planks.json | 7 + .../blockstates/peach_pressure_plate.json | 10 + .../blockstates/peach_sapling.json | 7 + .../emeraldcraft/blockstates/peach_sign.json | 7 + .../emeraldcraft/blockstates/peach_slab.json | 13 + .../blockstates/peach_stairs.json | 209 +++ .../blockstates/peach_trapdoor.json | 69 + .../blockstates/peach_wall_sign.json | 7 + .../emeraldcraft/blockstates/peach_wood.json | 16 + .../blockstates/potted_cyan_petunia.json | 7 + .../blockstates/potted_ginkgo_sapling.json | 7 + .../blockstates/potted_higan_bana.json | 7 + .../blockstates/potted_magenta_petunia.json | 7 + .../blockstates/potted_palm_sapling.json | 7 + .../blockstates/potted_peach_sapling.json | 7 + .../potted_purpuraceus_fungus.json | 7 + .../blockstates/potted_purpuraceus_roots.json | 7 + .../blockstates/purple_nether_brick_slab.json | 13 + .../purple_nether_brick_stairs.json | 209 +++ .../blockstates/purple_nether_brick_wall.json | 90 + .../blockstates/purple_nether_bricks.json | 7 + .../blockstates/purpuraceus_button.json | 118 ++ .../blockstates/purpuraceus_door.json | 124 ++ .../blockstates/purpuraceus_fence.json | 48 + .../blockstates/purpuraceus_fence_gate.json | 80 + .../blockstates/purpuraceus_fungus.json | 7 + .../blockstates/purpuraceus_hyphae.json | 16 + .../blockstates/purpuraceus_nylium.json | 7 + .../blockstates/purpuraceus_planks.json | 7 + .../purpuraceus_pressure_plate.json | 10 + .../blockstates/purpuraceus_roots.json | 7 + .../blockstates/purpuraceus_sign.json | 7 + .../blockstates/purpuraceus_slab.json | 13 + .../blockstates/purpuraceus_stairs.json | 209 +++ .../blockstates/purpuraceus_stem.json | 16 + .../blockstates/purpuraceus_trapdoor.json | 69 + .../blockstates/purpuraceus_wall_sign.json | 7 + .../blockstates/purpuraceus_wart_block.json | 7 + .../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/silver_stairs.json | 209 +++ .../emeraldcraft/blockstates/silver_wall.json | 90 + .../blockstates/smooth_azure_sandstone.json | 7 + .../smooth_azure_sandstone_slab.json | 13 + .../smooth_azure_sandstone_stairs.json | 209 +++ .../blockstates/smooth_dark_sandstone.json | 7 + .../smooth_dark_sandstone_slab.json | 13 + .../smooth_dark_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/steel_stairs.json | 209 +++ .../emeraldcraft/blockstates/steel_wall.json | 90 + .../blockstates/stripped_ginkgo_log.json | 16 + .../blockstates/stripped_ginkgo_wood.json | 16 + .../blockstates/stripped_palm_log.json | 16 + .../blockstates/stripped_palm_wood.json | 16 + .../blockstates/stripped_peach_log.json | 16 + .../blockstates/stripped_peach_wood.json | 16 + .../stripped_purpuraceus_hyphae.json | 16 + .../stripped_purpuraceus_stem.json | 16 + .../blockstates/uranium_stairs.json | 209 +++ .../blockstates/uranium_wall.json | 90 + .../blockstates/vitrified_sand.json | 21 + .../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 + .../emeraldcraft/blockstates/zinc_slab.json | 13 + .../emeraldcraft/blockstates/zinc_stairs.json | 209 +++ .../emeraldcraft/blockstates/zinc_wall.json | 90 + .../assets/emeraldcraft/lang/en_gb.json | 538 ++++++ .../assets/emeraldcraft/lang/en_ud.json | 538 ++++++ .../assets/emeraldcraft/lang/en_us.json | 538 ++++++ .../assets/emeraldcraft/lang/ja_jp.json | 538 ++++++ .../assets/emeraldcraft/lang/ru_ru.json | 514 ++++++ .../assets/emeraldcraft/lang/zh_cn.json | 538 ++++++ .../assets/emeraldcraft/lang/zh_tw.json | 538 ++++++ .../models/block/aluminum_stairs.json | 8 + .../models/block/aluminum_stairs_inner.json | 8 + .../models/block/aluminum_stairs_outer.json | 8 + .../models/block/aluminum_wall_inventory.json | 6 + .../models/block/aluminum_wall_post.json | 6 + .../models/block/aluminum_wall_side.json | 6 + .../models/block/aluminum_wall_side_tall.json | 6 + .../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 | 33 + .../models/block/chili_stage0.json | 7 + .../models/block/chili_stage1.json | 7 + .../models/block/chili_stage2.json | 7 + .../models/block/chili_stage3.json | 7 + .../models/block/constantan_stairs.json | 8 + .../models/block/constantan_stairs_inner.json | 8 + .../models/block/constantan_stairs_outer.json | 8 + .../block/constantan_wall_inventory.json | 6 + .../models/block/constantan_wall_post.json | 6 + .../models/block/constantan_wall_side.json | 6 + .../block/constantan_wall_side_tall.json | 6 + .../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 | 38 + .../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_dark_sandstone.json | 7 + .../models/block/cut_dark_sandstone_slab.json | 8 + .../block/cut_dark_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/cyan_petunia.json | 7 + .../emeraldcraft/models/block/dark_sand.json | 6 + .../models/block/dark_sandstone.json | 8 + .../models/block/dark_sandstone_slab.json | 8 + .../models/block/dark_sandstone_slab_top.json | 8 + .../models/block/dark_sandstone_stairs.json | 8 + .../block/dark_sandstone_stairs_inner.json | 8 + .../block/dark_sandstone_stairs_outer.json | 8 + .../block/dark_sandstone_wall_inventory.json | 6 + .../block/dark_sandstone_wall_post.json | 6 + .../block/dark_sandstone_wall_side.json | 6 + .../block/dark_sandstone_wall_side_tall.json | 6 + .../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/electrum_stairs.json | 8 + .../models/block/electrum_stairs_inner.json | 8 + .../models/block/electrum_stairs_outer.json | 8 + .../models/block/electrum_wall_inventory.json | 6 + .../models/block/electrum_wall_post.json | 6 + .../models/block/electrum_wall_side.json | 6 + .../models/block/electrum_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 + .../models/block/ginkgo_button.json | 6 + .../models/block/ginkgo_button_inventory.json | 6 + .../models/block/ginkgo_button_pressed.json | 6 + .../models/block/ginkgo_door_bottom_left.json | 8 + .../block/ginkgo_door_bottom_left_open.json | 8 + .../block/ginkgo_door_bottom_right.json | 8 + .../block/ginkgo_door_bottom_right_open.json | 8 + .../models/block/ginkgo_door_top_left.json | 8 + .../block/ginkgo_door_top_left_open.json | 8 + .../models/block/ginkgo_door_top_right.json | 8 + .../block/ginkgo_door_top_right_open.json | 8 + .../models/block/ginkgo_fence_gate.json | 6 + .../models/block/ginkgo_fence_gate_open.json | 6 + .../models/block/ginkgo_fence_gate_wall.json | 6 + .../block/ginkgo_fence_gate_wall_open.json | 6 + .../models/block/ginkgo_fence_inventory.json | 6 + .../models/block/ginkgo_fence_post.json | 6 + .../models/block/ginkgo_fence_side.json | 6 + .../models/block/ginkgo_leaves.json | 7 + .../emeraldcraft/models/block/ginkgo_log.json | 7 + .../models/block/ginkgo_log_horizontal.json | 7 + .../models/block/ginkgo_planks.json | 6 + .../models/block/ginkgo_pressure_plate.json | 6 + .../block/ginkgo_pressure_plate_down.json | 6 + .../models/block/ginkgo_sapling.json | 7 + .../models/block/ginkgo_sign.json | 5 + .../models/block/ginkgo_slab.json | 8 + .../models/block/ginkgo_slab_top.json | 8 + .../models/block/ginkgo_stairs.json | 8 + .../models/block/ginkgo_stairs_inner.json | 8 + .../models/block/ginkgo_stairs_outer.json | 8 + .../models/block/ginkgo_trapdoor_bottom.json | 7 + .../models/block/ginkgo_trapdoor_open.json | 7 + .../models/block/ginkgo_trapdoor_top.json | 7 + .../models/block/ginkgo_wood.json | 7 + .../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/higan_bana.json | 7 + .../models/block/higan_bana_no_leaf.json | 7 + .../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 + .../models/block/lead_stairs.json | 8 + .../models/block/lead_stairs_inner.json | 8 + .../models/block/lead_stairs_outer.json | 8 + .../models/block/lead_wall_inventory.json | 6 + .../models/block/lead_wall_post.json | 6 + .../models/block/lead_wall_side.json | 6 + .../models/block/lead_wall_side_tall.json | 6 + .../models/block/magenta_petunia.json | 7 + .../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/nickel_stairs.json | 8 + .../models/block/nickel_stairs_inner.json | 8 + .../models/block/nickel_stairs_outer.json | 8 + .../models/block/nickel_wall_inventory.json | 6 + .../models/block/nickel_wall_post.json | 6 + .../models/block/nickel_wall_side.json | 6 + .../models/block/nickel_wall_side_tall.json | 6 + .../models/block/palm_button.json | 6 + .../models/block/palm_button_inventory.json | 6 + .../models/block/palm_button_pressed.json | 6 + .../models/block/palm_door_bottom_left.json | 8 + .../block/palm_door_bottom_left_open.json | 8 + .../models/block/palm_door_bottom_right.json | 8 + .../block/palm_door_bottom_right_open.json | 8 + .../models/block/palm_door_top_left.json | 8 + .../models/block/palm_door_top_left_open.json | 8 + .../models/block/palm_door_top_right.json | 8 + .../block/palm_door_top_right_open.json | 8 + .../models/block/palm_fence_gate.json | 6 + .../models/block/palm_fence_gate_open.json | 6 + .../models/block/palm_fence_gate_wall.json | 6 + .../block/palm_fence_gate_wall_open.json | 6 + .../models/block/palm_fence_inventory.json | 6 + .../models/block/palm_fence_post.json | 6 + .../models/block/palm_fence_side.json | 6 + .../models/block/palm_leaves.json | 7 + .../emeraldcraft/models/block/palm_log.json | 7 + .../models/block/palm_log_horizontal.json | 7 + .../models/block/palm_planks.json | 6 + .../models/block/palm_pressure_plate.json | 6 + .../block/palm_pressure_plate_down.json | 6 + .../models/block/palm_sapling.json | 7 + .../emeraldcraft/models/block/palm_sign.json | 5 + .../emeraldcraft/models/block/palm_slab.json | 8 + .../models/block/palm_slab_top.json | 8 + .../models/block/palm_stairs.json | 8 + .../models/block/palm_stairs_inner.json | 8 + .../models/block/palm_stairs_outer.json | 8 + .../models/block/palm_trapdoor_bottom.json | 7 + .../models/block/palm_trapdoor_open.json | 7 + .../models/block/palm_trapdoor_top.json | 7 + .../emeraldcraft/models/block/palm_wood.json | 7 + .../models/block/peach_button.json | 6 + .../models/block/peach_button_inventory.json | 6 + .../models/block/peach_button_pressed.json | 6 + .../models/block/peach_door_bottom_left.json | 8 + .../block/peach_door_bottom_left_open.json | 8 + .../models/block/peach_door_bottom_right.json | 8 + .../block/peach_door_bottom_right_open.json | 8 + .../models/block/peach_door_top_left.json | 8 + .../block/peach_door_top_left_open.json | 8 + .../models/block/peach_door_top_right.json | 8 + .../block/peach_door_top_right_open.json | 8 + .../models/block/peach_fence_gate.json | 6 + .../models/block/peach_fence_gate_open.json | 6 + .../models/block/peach_fence_gate_wall.json | 6 + .../block/peach_fence_gate_wall_open.json | 6 + .../models/block/peach_fence_inventory.json | 6 + .../models/block/peach_fence_post.json | 6 + .../models/block/peach_fence_side.json | 6 + .../models/block/peach_leaves.json | 7 + .../emeraldcraft/models/block/peach_log.json | 7 + .../models/block/peach_log_horizontal.json | 7 + .../models/block/peach_planks.json | 6 + .../models/block/peach_pressure_plate.json | 6 + .../block/peach_pressure_plate_down.json | 6 + .../models/block/peach_sapling.json | 7 + .../emeraldcraft/models/block/peach_sign.json | 5 + .../emeraldcraft/models/block/peach_slab.json | 8 + .../models/block/peach_slab_top.json | 8 + .../models/block/peach_stairs.json | 8 + .../models/block/peach_stairs_inner.json | 8 + .../models/block/peach_stairs_outer.json | 8 + .../models/block/peach_trapdoor_bottom.json | 7 + .../models/block/peach_trapdoor_open.json | 7 + .../models/block/peach_trapdoor_top.json | 7 + .../emeraldcraft/models/block/peach_wood.json | 7 + .../models/block/potted_cyan_petunia.json | 7 + .../models/block/potted_ginkgo_sapling.json | 7 + .../models/block/potted_higan_bana.json | 7 + .../models/block/potted_magenta_petunia.json | 7 + .../models/block/potted_palm_sapling.json | 6 + .../models/block/potted_peach_sapling.json | 6 + .../block/potted_purpuraceus_fungus.json | 7 + .../block/potted_purpuraceus_roots.json | 7 + .../block/purple_nether_brick_slab.json | 8 + .../block/purple_nether_brick_slab_top.json | 8 + .../block/purple_nether_brick_stairs.json | 8 + .../purple_nether_brick_stairs_inner.json | 8 + .../purple_nether_brick_stairs_outer.json | 8 + .../purple_nether_brick_wall_inventory.json | 6 + .../block/purple_nether_brick_wall_post.json | 6 + .../block/purple_nether_brick_wall_side.json | 6 + .../purple_nether_brick_wall_side_tall.json | 6 + .../models/block/purple_nether_bricks.json | 6 + .../models/block/purpuraceus_button.json | 6 + .../block/purpuraceus_button_inventory.json | 6 + .../block/purpuraceus_button_pressed.json | 6 + .../block/purpuraceus_door_bottom_left.json | 8 + .../purpuraceus_door_bottom_left_open.json | 8 + .../block/purpuraceus_door_bottom_right.json | 8 + .../purpuraceus_door_bottom_right_open.json | 8 + .../block/purpuraceus_door_top_left.json | 8 + .../block/purpuraceus_door_top_left_open.json | 8 + .../block/purpuraceus_door_top_right.json | 8 + .../purpuraceus_door_top_right_open.json | 8 + .../models/block/purpuraceus_fence_gate.json | 6 + .../block/purpuraceus_fence_gate_open.json | 6 + .../block/purpuraceus_fence_gate_wall.json | 6 + .../purpuraceus_fence_gate_wall_open.json | 6 + .../block/purpuraceus_fence_inventory.json | 6 + .../models/block/purpuraceus_fence_post.json | 6 + .../models/block/purpuraceus_fence_side.json | 6 + .../models/block/purpuraceus_fungus.json | 7 + .../models/block/purpuraceus_hyphae.json | 7 + .../models/block/purpuraceus_nylium.json | 8 + .../models/block/purpuraceus_planks.json | 6 + .../block/purpuraceus_pressure_plate.json | 6 + .../purpuraceus_pressure_plate_down.json | 6 + .../models/block/purpuraceus_roots.json | 7 + .../models/block/purpuraceus_sign.json | 5 + .../models/block/purpuraceus_slab.json | 8 + .../models/block/purpuraceus_slab_top.json | 8 + .../models/block/purpuraceus_stairs.json | 8 + .../block/purpuraceus_stairs_inner.json | 8 + .../block/purpuraceus_stairs_outer.json | 8 + .../models/block/purpuraceus_stem.json | 7 + .../block/purpuraceus_trapdoor_bottom.json | 7 + .../block/purpuraceus_trapdoor_open.json | 7 + .../block/purpuraceus_trapdoor_top.json | 7 + .../models/block/purpuraceus_wart_block.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/silver_stairs.json | 8 + .../models/block/silver_stairs_inner.json | 8 + .../models/block/silver_stairs_outer.json | 8 + .../models/block/silver_wall_inventory.json | 6 + .../models/block/silver_wall_post.json | 6 + .../models/block/silver_wall_side.json | 6 + .../models/block/silver_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_dark_sandstone.json | 6 + .../block/smooth_dark_sandstone_slab.json | 8 + .../block/smooth_dark_sandstone_slab_top.json | 8 + .../block/smooth_dark_sandstone_stairs.json | 8 + .../smooth_dark_sandstone_stairs_inner.json | 8 + .../smooth_dark_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/steel_stairs.json | 8 + .../models/block/steel_stairs_inner.json | 8 + .../models/block/steel_stairs_outer.json | 8 + .../models/block/steel_wall_inventory.json | 6 + .../models/block/steel_wall_post.json | 6 + .../models/block/steel_wall_side.json | 6 + .../models/block/steel_wall_side_tall.json | 6 + .../models/block/stripped_ginkgo_log.json | 7 + .../block/stripped_ginkgo_log_horizontal.json | 7 + .../models/block/stripped_ginkgo_wood.json | 7 + .../models/block/stripped_palm_log.json | 7 + .../block/stripped_palm_log_horizontal.json | 7 + .../models/block/stripped_palm_wood.json | 7 + .../models/block/stripped_peach_log.json | 7 + .../block/stripped_peach_log_horizontal.json | 7 + .../models/block/stripped_peach_wood.json | 7 + .../block/stripped_purpuraceus_hyphae.json | 7 + .../block/stripped_purpuraceus_stem.json | 7 + .../models/block/uranium_stairs.json | 8 + .../models/block/uranium_stairs_inner.json | 8 + .../models/block/uranium_stairs_outer.json | 8 + .../models/block/uranium_wall_inventory.json | 6 + .../models/block/uranium_wall_post.json | 6 + .../models/block/uranium_wall_side.json | 6 + .../models/block/uranium_wall_side_tall.json | 6 + .../models/block/vitrified_sand.json | 6 + .../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 | 7 + .../models/block/warped_wart_stage1.json | 7 + .../models/block/warped_wart_stage2.json | 7 + .../emeraldcraft/models/block/zinc_slab.json | 8 + .../models/block/zinc_slab_top.json | 8 + .../models/block/zinc_stairs.json | 8 + .../models/block/zinc_stairs_inner.json | 8 + .../models/block/zinc_stairs_outer.json | 8 + .../models/block/zinc_wall_inventory.json | 6 + .../models/block/zinc_wall_post.json | 6 + .../models/block/zinc_wall_side.json | 6 + .../models/block/zinc_wall_side_tall.json | 6 + .../emeraldcraft/models/item/agate_apple.json | 6 + .../models/item/aluminum_concentrate.json | 6 + .../models/item/aluminum_stairs.json | 3 + .../models/item/aluminum_wall.json | 3 + .../emeraldcraft/models/item/apple_juice.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/beef_and_potato_stew.json | 6 + .../models/item/beetroot_juice.json | 6 + .../models/item/bigeye_bucket.json | 6 + .../models/item/bigeye_spawn_egg.json | 3 + .../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 + .../emeraldcraft/models/item/boiled_egg.json | 6 + .../models/item/bottle_banner_pattern.json | 6 + .../models/item/braised_chicken.json | 6 + .../models/item/caramelized_potato.json | 6 + .../models/item/carpentry_table.json | 3 + .../models/item/carrot_juice.json | 6 + .../emeraldcraft/models/item/chili.json | 6 + .../emeraldcraft/models/item/chili_seed.json | 6 + .../item/chorus_flower_eggdrop_soup.json | 6 + .../models/item/constantan_stairs.json | 3 + .../models/item/constantan_wall.json | 3 + .../models/item/continuous_miner.json | 3 + .../models/item/cooked_herring.json | 6 + .../item/cooked_purple_spotted_bigeye.json | 6 + .../item/cooked_purpuraceus_fungus.json | 6 + .../models/item/cooked_sausage.json | 6 + .../models/item/cooked_tropical_fish.json | 6 + .../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_dark_sandstone.json | 3 + .../models/item/cut_dark_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/cyan_petunia.json | 6 + .../emeraldcraft/models/item/dark_sand.json | 3 + .../models/item/dark_sandstone.json | 3 + .../models/item/dark_sandstone_slab.json | 3 + .../models/item/dark_sandstone_stairs.json | 3 + .../models/item/dark_sandstone_wall.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/electrum_stairs.json | 3 + .../models/item/electrum_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/ginkgo_boat.json | 6 + .../models/item/ginkgo_button.json | 3 + .../models/item/ginkgo_chest_boat.json | 6 + .../emeraldcraft/models/item/ginkgo_door.json | 6 + .../models/item/ginkgo_fence.json | 3 + .../models/item/ginkgo_fence_gate.json | 3 + .../models/item/ginkgo_leaves.json | 3 + .../emeraldcraft/models/item/ginkgo_log.json | 3 + .../emeraldcraft/models/item/ginkgo_nut.json | 6 + .../models/item/ginkgo_planks.json | 3 + .../models/item/ginkgo_pressure_plate.json | 3 + .../models/item/ginkgo_sapling.json | 6 + .../emeraldcraft/models/item/ginkgo_sign.json | 6 + .../emeraldcraft/models/item/ginkgo_slab.json | 3 + .../models/item/ginkgo_stairs.json | 3 + .../models/item/ginkgo_trapdoor.json | 3 + .../emeraldcraft/models/item/ginkgo_wood.json | 3 + .../emeraldcraft/models/item/glass_kiln.json | 3 + .../emeraldcraft/models/item/gluten.json | 6 + .../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 + .../models/item/golden_peach.json | 6 + .../emeraldcraft/models/item/herring.json | 6 + .../models/item/herring_bucket.json | 6 + .../models/item/herring_spawn_egg.json | 3 + .../emeraldcraft/models/item/higan_bana.json | 6 + .../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/lead_concentrate.json | 6 + .../emeraldcraft/models/item/lead_stairs.json | 3 + .../emeraldcraft/models/item/lead_wall.json | 3 + .../models/item/magenta_petunia.json | 6 + .../models/item/manta_spawn_egg.json | 3 + .../emeraldcraft/models/item/melon_juice.json | 6 + .../models/item/melted_aluminum_bucket.json | 6 + .../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 + .../models/item/melted_lead_bucket.json | 6 + .../models/item/melted_nickel_bucket.json | 6 + .../models/item/melted_silver_bucket.json | 6 + .../models/item/melted_uranium_bucket.json | 6 + .../models/item/melted_zinc_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/nickel_concentrate.json | 6 + .../models/item/nickel_stairs.json | 3 + .../emeraldcraft/models/item/nickel_wall.json | 3 + .../emeraldcraft/models/item/palm_boat.json | 6 + .../emeraldcraft/models/item/palm_button.json | 3 + .../models/item/palm_chest_boat.json | 6 + .../emeraldcraft/models/item/palm_door.json | 6 + .../emeraldcraft/models/item/palm_fence.json | 3 + .../models/item/palm_fence_gate.json | 3 + .../emeraldcraft/models/item/palm_leaves.json | 3 + .../emeraldcraft/models/item/palm_log.json | 3 + .../emeraldcraft/models/item/palm_nut.json | 6 + .../emeraldcraft/models/item/palm_planks.json | 3 + .../models/item/palm_pressure_plate.json | 3 + .../models/item/palm_sapling.json | 6 + .../emeraldcraft/models/item/palm_sign.json | 6 + .../emeraldcraft/models/item/palm_slab.json | 3 + .../emeraldcraft/models/item/palm_stairs.json | 3 + .../models/item/palm_trapdoor.json | 3 + .../emeraldcraft/models/item/palm_wood.json | 3 + .../emeraldcraft/models/item/peach.json | 6 + .../emeraldcraft/models/item/peach_boat.json | 6 + .../models/item/peach_button.json | 3 + .../models/item/peach_chest_boat.json | 6 + .../emeraldcraft/models/item/peach_door.json | 6 + .../emeraldcraft/models/item/peach_fence.json | 3 + .../models/item/peach_fence_gate.json | 3 + .../emeraldcraft/models/item/peach_juice.json | 6 + .../models/item/peach_leaves.json | 3 + .../emeraldcraft/models/item/peach_log.json | 3 + .../models/item/peach_planks.json | 3 + .../models/item/peach_pressure_plate.json | 3 + .../models/item/peach_sapling.json | 6 + .../emeraldcraft/models/item/peach_sign.json | 6 + .../emeraldcraft/models/item/peach_slab.json | 3 + .../models/item/peach_stairs.json | 3 + .../models/item/peach_trapdoor.json | 3 + .../emeraldcraft/models/item/peach_wood.json | 3 + .../models/item/piglin_cutey_spawn_egg.json | 3 + .../models/item/potion_banner_pattern.json | 6 + .../models/item/potion_cookie.json | 6 + .../models/item/pumpkin_juice.json | 6 + .../models/item/purple_nether_brick_slab.json | 3 + .../item/purple_nether_brick_stairs.json | 3 + .../models/item/purple_nether_brick_wall.json | 3 + .../models/item/purple_nether_bricks.json | 3 + .../models/item/purple_spotted_bigeye.json | 6 + .../models/item/purpuraceus_button.json | 3 + .../models/item/purpuraceus_door.json | 6 + .../models/item/purpuraceus_fence.json | 3 + .../models/item/purpuraceus_fence_gate.json | 3 + .../models/item/purpuraceus_fungus.json | 6 + .../models/item/purpuraceus_hyphae.json | 3 + .../models/item/purpuraceus_nylium.json | 3 + .../models/item/purpuraceus_planks.json | 3 + .../item/purpuraceus_pressure_plate.json | 3 + .../models/item/purpuraceus_roots.json | 6 + .../models/item/purpuraceus_sign.json | 6 + .../models/item/purpuraceus_slab.json | 3 + .../models/item/purpuraceus_stairs.json | 3 + .../models/item/purpuraceus_stem.json | 3 + .../models/item/purpuraceus_trapdoor.json | 3 + .../models/item/purpuraceus_wart_block.json | 3 + .../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 + .../emeraldcraft/models/item/rougamo.json | 6 + .../emeraldcraft/models/item/sausage.json | 6 + .../models/item/silver_concentrate.json | 6 + .../models/item/silver_stairs.json | 3 + .../emeraldcraft/models/item/silver_wall.json | 3 + .../models/item/smooth_azure_sandstone.json | 3 + .../item/smooth_azure_sandstone_slab.json | 3 + .../item/smooth_azure_sandstone_stairs.json | 3 + .../models/item/smooth_dark_sandstone.json | 3 + .../item/smooth_dark_sandstone_slab.json | 3 + .../item/smooth_dark_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/steel_stairs.json | 3 + .../emeraldcraft/models/item/steel_wall.json | 3 + .../models/item/stir_fried_warden_heart.json | 6 + .../models/item/stripped_ginkgo_log.json | 3 + .../models/item/stripped_ginkgo_wood.json | 3 + .../models/item/stripped_palm_log.json | 3 + .../models/item/stripped_palm_wood.json | 3 + .../models/item/stripped_peach_log.json | 3 + .../models/item/stripped_peach_wood.json | 3 + .../item/stripped_purpuraceus_hyphae.json | 3 + .../item/stripped_purpuraceus_stem.json | 3 + .../models/item/uranium_concentrate.json | 6 + .../models/item/uranium_stairs.json | 3 + .../models/item/uranium_wall.json | 3 + .../models/item/vitrified_sand.json | 3 + .../models/item/warden_heart.json | 6 + .../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 + .../models/item/wraith_spawn_egg.json | 3 + .../models/item/zinc_concentrate.json | 6 + .../emeraldcraft/models/item/zinc_slab.json | 3 + .../emeraldcraft/models/item/zinc_stairs.json | 3 + .../emeraldcraft/models/item/zinc_wall.json | 3 + .../resources/assets/emeraldcraft/sounds.json | 336 ++++ .../assets/emeraldcraft/sounds/fish/flop1.ogg | Bin 0 -> 14125 bytes .../assets/emeraldcraft/sounds/fish/flop2.ogg | Bin 0 -> 15242 bytes .../assets/emeraldcraft/sounds/fish/flop3.ogg | Bin 0 -> 11320 bytes .../assets/emeraldcraft/sounds/fish/flop4.ogg | Bin 0 -> 12102 bytes .../assets/emeraldcraft/sounds/fish/hurt1.ogg | Bin 0 -> 17697 bytes .../assets/emeraldcraft/sounds/fish/hurt2.ogg | Bin 0 -> 19945 bytes .../assets/emeraldcraft/sounds/fish/hurt3.ogg | Bin 0 -> 13973 bytes .../assets/emeraldcraft/sounds/fish/hurt4.ogg | Bin 0 -> 21995 bytes .../sounds/flower/drop_leaves1.ogg | Bin 0 -> 16467 bytes .../sounds/flower/drop_leaves2.ogg | Bin 0 -> 16267 bytes .../sounds/flower/drop_leaves3.ogg | Bin 0 -> 10243 bytes .../emeraldcraft/sounds/manta/ambient1.ogg | Bin 0 -> 44869 bytes .../emeraldcraft/sounds/manta/ambient2.ogg | Bin 0 -> 40604 bytes .../emeraldcraft/sounds/manta/hurt1.ogg | Bin 0 -> 33821 bytes .../emeraldcraft/sounds/manta/hurt2.ogg | Bin 0 -> 23652 bytes .../sounds/nether_lambman/lambman1.ogg | Bin 0 -> 13198 bytes .../sounds/nether_lambman/lambman2.ogg | Bin 0 -> 15102 bytes .../sounds/nether_pigman/pigman1.ogg | Bin 0 -> 16291 bytes .../sounds/nether_pigman/pigman2.ogg | Bin 0 -> 16520 bytes .../sounds/piglin_cutey/ambient1.ogg | Bin 0 -> 16704 bytes .../sounds/piglin_cutey/ambient2.ogg | Bin 0 -> 14327 bytes .../sounds/piglin_cutey/celebrate.ogg | Bin 0 -> 14612 bytes .../sounds/piglin_cutey/death.ogg | Bin 0 -> 35196 bytes .../sounds/piglin_cutey/hurt1.ogg | Bin 0 -> 19687 bytes .../sounds/piglin_cutey/hurt2.ogg | Bin 0 -> 7929 bytes .../emeraldcraft/sounds/piglin_cutey/no.ogg | Bin 0 -> 17237 bytes .../sounds/piglin_cutey/trade.ogg | Bin 0 -> 7530 bytes .../emeraldcraft/sounds/piglin_cutey/yes.ogg | Bin 0 -> 7835 bytes .../sounds/villager/work_astrologist.ogg | Bin 0 -> 95131 bytes .../sounds/villager/work_beekeeper.ogg | Bin 0 -> 59454 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 -> 124462 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 -> 17237 bytes .../emeraldcraft/sounds/wraith/ambient.ogg | Bin 0 -> 30287 bytes .../emeraldcraft/sounds/wraith/hurt.ogg | Bin 0 -> 23372 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 .../textures/block/chili_stage0.png | Bin 0 -> 1482 bytes .../textures/block/chili_stage1.png | Bin 0 -> 1759 bytes .../textures/block/chili_stage2.png | Bin 0 -> 2104 bytes .../textures/block/chili_stage3.png | Bin 0 -> 1729 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_dark_sandstone.png | Bin 0 -> 1847 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/cyan_petunia.png | Bin 0 -> 2046 bytes .../emeraldcraft/textures/block/dark_sand.png | Bin 0 -> 1899 bytes .../textures/block/dark_sandstone.png | Bin 0 -> 1967 bytes .../textures/block/dark_sandstone_bottom.png | Bin 0 -> 1969 bytes .../textures/block/dark_sandstone_top.png | Bin 0 -> 1834 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/ginkgo_door_bottom.png | Bin 0 -> 1882 bytes .../textures/block/ginkgo_door_top.png | Bin 0 -> 2026 bytes .../textures/block/ginkgo_leaves.png | Bin 0 -> 1835 bytes .../textures/block/ginkgo_log.png | Bin 0 -> 2200 bytes .../textures/block/ginkgo_log_top.png | Bin 0 -> 1845 bytes .../textures/block/ginkgo_planks.png | Bin 0 -> 1762 bytes .../textures/block/ginkgo_sapling.png | Bin 0 -> 1866 bytes .../textures/block/ginkgo_trapdoor.png | Bin 0 -> 1640 bytes .../textures/block/glass_kiln_front.png | Bin 0 -> 2052 bytes .../textures/block/glass_kiln_front_on.png | Bin 0 -> 2307 bytes .../textures/block/glass_kiln_side.png | Bin 0 -> 1843 bytes .../textures/block/glass_kiln_top.png | Bin 0 -> 1863 bytes .../textures/block/higan_bana.png | Bin 0 -> 389 bytes .../textures/block/higan_bana_no_leaf.png | Bin 0 -> 2209 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/magenta_petunia.png | Bin 0 -> 1839 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/palm_door_bottom.png | Bin 0 -> 2099 bytes .../textures/block/palm_door_top.png | Bin 0 -> 2034 bytes .../textures/block/palm_leaves.png | Bin 0 -> 2481 bytes .../emeraldcraft/textures/block/palm_log.png | Bin 0 -> 2277 bytes .../textures/block/palm_log_top.png | Bin 0 -> 2011 bytes .../textures/block/palm_planks.png | Bin 0 -> 1996 bytes .../textures/block/palm_sapling.png | Bin 0 -> 2436 bytes .../textures/block/palm_trapdoor.png | Bin 0 -> 2068 bytes .../textures/block/peach_door_bottom.png | Bin 0 -> 2205 bytes .../textures/block/peach_door_top.png | Bin 0 -> 2025 bytes .../textures/block/peach_leaves.png | Bin 0 -> 1761 bytes .../emeraldcraft/textures/block/peach_log.png | Bin 0 -> 580 bytes .../textures/block/peach_log_top.png | Bin 0 -> 2410 bytes .../textures/block/peach_planks.png | Bin 0 -> 2208 bytes .../textures/block/peach_sapling.png | Bin 0 -> 2488 bytes .../textures/block/peach_trapdoor.png | Bin 0 -> 2238 bytes .../textures/block/purple_nether_bricks.png | Bin 0 -> 1688 bytes .../block/purpuraceus_door_bottom.png | Bin 0 -> 715 bytes .../textures/block/purpuraceus_door_top.png | Bin 0 -> 704 bytes .../textures/block/purpuraceus_fungus.png | Bin 0 -> 1865 bytes .../textures/block/purpuraceus_nylium.png | Bin 0 -> 371 bytes .../block/purpuraceus_nylium_side.png | Bin 0 -> 678 bytes .../textures/block/purpuraceus_planks.png | Bin 0 -> 447 bytes .../textures/block/purpuraceus_roots.png | Bin 0 -> 1879 bytes .../textures/block/purpuraceus_roots_pot.png | Bin 0 -> 1766 bytes .../textures/block/purpuraceus_stem.png | Bin 0 -> 586 bytes .../textures/block/purpuraceus_stem_top.png | Bin 0 -> 513 bytes .../textures/block/purpuraceus_trapdoor.png | Bin 0 -> 1770 bytes .../textures/block/purpuraceus_wart_block.png | Bin 0 -> 435 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/stripped_ginkgo_log.png | Bin 0 -> 1872 bytes .../block/stripped_ginkgo_log_top.png | Bin 0 -> 1747 bytes .../textures/block/stripped_palm_log.png | Bin 0 -> 2058 bytes .../textures/block/stripped_palm_log_top.png | Bin 0 -> 1922 bytes .../textures/block/stripped_peach_log.png | Bin 0 -> 2268 bytes .../textures/block/stripped_peach_log_top.png | Bin 0 -> 2378 bytes .../block/stripped_purpuraceus_stem.png | Bin 0 -> 446 bytes .../block/stripped_purpuraceus_stem_top.png | Bin 0 -> 459 bytes .../textures/block/vitrified_sand.png | Bin 0 -> 2051 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 .../textures/entity/banner/bee.png | Bin 0 -> 2387 bytes .../textures/entity/banner/bottle.png | Bin 0 -> 1665 bytes .../textures/entity/banner/potion.png | Bin 0 -> 1607 bytes .../textures/entity/banner/snow.png | Bin 0 -> 2255 bytes .../textures/entity/boat/ginkgo.png | Bin 0 -> 4509 bytes .../textures/entity/boat/palm.png | Bin 0 -> 4648 bytes .../textures/entity/boat/peach.png | Bin 0 -> 5022 bytes .../textures/entity/chest_boat/ginkgo.png | Bin 0 -> 6546 bytes .../textures/entity/chest_boat/palm.png | Bin 0 -> 6842 bytes .../textures/entity/chest_boat/peach.png | Bin 0 -> 6988 bytes .../textures/entity/fishes/herring.png | Bin 0 -> 2118 bytes .../entity/fishes/purple_spotted_bigeye.png | Bin 0 -> 2168 bytes .../textures/entity/manta/manta.png | Bin 0 -> 2724 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 .../textures/entity/shield/bee.png | Bin 0 -> 2211 bytes .../textures/entity/shield/bottle.png | Bin 0 -> 1810 bytes .../textures/entity/shield/potion.png | Bin 0 -> 1997 bytes .../textures/entity/shield/snow.png | Bin 0 -> 2213 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 .../textures/entity/wraith/wraith.png | Bin 0 -> 3876 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 -> 10727 bytes .../textures/gui/container/melter.png | Bin 0 -> 10616 bytes .../textures/gui/container/mineral_table.png | Bin 0 -> 3799 bytes .../textures/gui/gui_ice_maker.png | Bin 0 -> 10771 bytes .../emeraldcraft/textures/gui/gui_melter.png | Bin 0 -> 10398 bytes .../textures/gui/gui_mineral_table.png | Bin 0 -> 2713 bytes .../emeraldcraft/textures/gui/gui_vanilla.png | Bin 0 -> 9709 bytes .../textures/gui/villager_trade.png | Bin 0 -> 2503 bytes .../textures/item/agate_apple.png | Bin 0 -> 1743 bytes .../textures/item/aluminum_concentrate.png | Bin 0 -> 1932 bytes .../textures/item/apple_juice.png | Bin 0 -> 1904 bytes .../textures/item/banner_pattern.png | Bin 0 -> 191 bytes .../textures/item/beef_and_potato_stew.png | Bin 0 -> 1941 bytes .../textures/item/beetroot_juice.png | Bin 0 -> 1736 bytes .../textures/item/bigeye_bucket.png | Bin 0 -> 1905 bytes .../emeraldcraft/textures/item/boiled_egg.png | Bin 0 -> 1561 bytes .../textures/item/braised_chicken.png | Bin 0 -> 2181 bytes .../textures/item/caramelized_potato.png | Bin 0 -> 2157 bytes .../textures/item/carrot_juice.png | Bin 0 -> 1735 bytes .../emeraldcraft/textures/item/chili.png | Bin 0 -> 1726 bytes .../emeraldcraft/textures/item/chili_seed.png | Bin 0 -> 1892 bytes .../item/chorus_flower_eggdrop_soup.png | Bin 0 -> 1665 bytes .../textures/item/cooked_herring.png | Bin 0 -> 2125 bytes .../item/cooked_purple_spotted_bigeye.png | Bin 0 -> 2006 bytes .../item/cooked_purpuraceus_fungus.png | Bin 0 -> 2249 bytes .../textures/item/cooked_sausage.png | Bin 0 -> 1672 bytes .../textures/item/cooked_tropical_fish.png | Bin 0 -> 1871 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/ginkgo_boat.png | Bin 0 -> 1870 bytes .../textures/item/ginkgo_chest_boat.png | Bin 0 -> 2146 bytes .../textures/item/ginkgo_door.png | Bin 0 -> 1536 bytes .../emeraldcraft/textures/item/ginkgo_nut.png | Bin 0 -> 1905 bytes .../textures/item/ginkgo_sign.png | Bin 0 -> 1565 bytes .../emeraldcraft/textures/item/gluten.png | Bin 0 -> 1703 bytes .../textures/item/gold_concentrate.png | Bin 0 -> 1699 bytes .../textures/item/golden_peach.png | Bin 0 -> 2397 bytes .../emeraldcraft/textures/item/herring.png | Bin 0 -> 1707 bytes .../textures/item/herring_bucket.png | Bin 0 -> 2182 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/lead_concentrate.png | Bin 0 -> 1814 bytes .../textures/item/melon_juice.png | Bin 0 -> 1722 bytes .../textures/item/melted_aluminum_bucket.png | Bin 0 -> 2306 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/melted_lead_bucket.png | Bin 0 -> 2158 bytes .../textures/item/melted_nickel_bucket.png | Bin 0 -> 2312 bytes .../textures/item/melted_silver_bucket.png | Bin 0 -> 2314 bytes .../textures/item/melted_uranium_bucket.png | Bin 0 -> 2155 bytes .../textures/item/melted_zinc_bucket.png | Bin 0 -> 2310 bytes .../textures/item/nickel_concentrate.png | Bin 0 -> 2151 bytes .../emeraldcraft/textures/item/palm_boat.png | Bin 0 -> 2061 bytes .../textures/item/palm_chest_boat.png | Bin 0 -> 2323 bytes .../emeraldcraft/textures/item/palm_door.png | Bin 0 -> 1972 bytes .../emeraldcraft/textures/item/palm_sign.png | Bin 0 -> 1761 bytes .../emeraldcraft/textures/item/peach.png | Bin 0 -> 2082 bytes .../emeraldcraft/textures/item/peach_boat.png | Bin 0 -> 2257 bytes .../textures/item/peach_chest_boat.png | Bin 0 -> 2337 bytes .../emeraldcraft/textures/item/peach_door.png | Bin 0 -> 2005 bytes .../textures/item/peach_juice.png | Bin 0 -> 1732 bytes .../emeraldcraft/textures/item/peach_sign.png | Bin 0 -> 1981 bytes .../textures/item/pumpkin_juice.png | Bin 0 -> 334 bytes .../textures/item/purple_spotted_bigeye.png | Bin 0 -> 1809 bytes .../textures/item/purpuraceus_door.png | Bin 0 -> 486 bytes .../textures/item/purpuraceus_sign.png | Bin 0 -> 399 bytes .../emeraldcraft/textures/item/rougamo.png | Bin 0 -> 1915 bytes .../emeraldcraft/textures/item/sausage.png | Bin 0 -> 2090 bytes .../textures/item/silver_concentrate.png | Bin 0 -> 2145 bytes .../textures/item/stir_fried_warden_heart.png | Bin 0 -> 1994 bytes .../textures/item/uranium_concentrate.png | Bin 0 -> 1905 bytes .../textures/item/warden_heart.png | Bin 0 -> 2374 bytes .../textures/item/warped_wart.png | Bin 0 -> 1825 bytes .../textures/item/zinc_concentrate.png | Bin 0 -> 1936 bytes .../emeraldcraft/textures/map/map_icons.png | Bin 0 -> 1950 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 .../textures/entity/signs/ec_ginkgo.png | Bin 0 -> 2804 bytes .../textures/entity/signs/ec_palm.png | Bin 0 -> 3008 bytes .../textures/entity/signs/ec_peach.png | Bin 0 -> 3139 bytes .../textures/entity/signs/ec_purpuraceus.png | Bin 0 -> 1244 bytes .../emeraldcraft/a_horrible_entrenchment.json | 44 + .../emeraldcraft/cure_phantom.json | 32 + .../emeraldcraft/cure_zombified_piglin.json | 32 + .../emeraldcraft/friend_from_the_nether.json | 41 + .../emeraldcraft/green_light.json | 56 + .../emeraldcraft/hard_currency.json | 77 + .../emeraldcraft/hotter_topic.json | 37 + .../emeraldcraft/ice_cream_please.json | 37 + .../emeraldcraft/more_effective_craft.json | 66 + .../advancements/emeraldcraft/noisy_guy.json | 37 + .../advancements/emeraldcraft/root.json | 37 + .../surely_see_each_other_again.json | 32 + .../forge/biome_modifier/ec_higan_bana.json | 6 + .../warden_heart_from_warden.json | 15 + .../loot_tables/blocks/aluminum_stairs.json | 20 + .../loot_tables/blocks/aluminum_wall.json | 20 + .../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/chili.json | 50 + .../loot_tables/blocks/constantan_stairs.json | 20 + .../loot_tables/blocks/constantan_wall.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_dark_sandstone.json | 20 + .../blocks/cut_dark_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/cyan_petunia.json | 20 + .../loot_tables/blocks/dark_sand.json | 20 + .../loot_tables/blocks/dark_sandstone.json | 20 + .../blocks/dark_sandstone_slab.json | 34 + .../blocks/dark_sandstone_stairs.json | 20 + .../blocks/dark_sandstone_wall.json | 20 + .../loot_tables/blocks/diamond_slab.json | 34 + .../loot_tables/blocks/diamond_stairs.json | 20 + .../loot_tables/blocks/diamond_wall.json | 20 + .../loot_tables/blocks/electrum_stairs.json | 20 + .../loot_tables/blocks/electrum_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/ginkgo_button.json | 19 + .../loot_tables/blocks/ginkgo_door.json | 28 + .../loot_tables/blocks/ginkgo_fence.json | 19 + .../loot_tables/blocks/ginkgo_fence_gate.json | 19 + .../loot_tables/blocks/ginkgo_leaves.json | 185 +++ .../loot_tables/blocks/ginkgo_log.json | 19 + .../loot_tables/blocks/ginkgo_planks.json | 19 + .../blocks/ginkgo_pressure_plate.json | 19 + .../loot_tables/blocks/ginkgo_sapling.json | 19 + .../loot_tables/blocks/ginkgo_sign.json | 19 + .../loot_tables/blocks/ginkgo_slab.json | 32 + .../loot_tables/blocks/ginkgo_stairs.json | 19 + .../loot_tables/blocks/ginkgo_trapdoor.json | 19 + .../loot_tables/blocks/ginkgo_wall_sign.json | 19 + .../loot_tables/blocks/ginkgo_wood.json | 19 + .../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/higan_bana.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/lead_stairs.json | 20 + .../loot_tables/blocks/lead_wall.json | 20 + .../loot_tables/blocks/magenta_petunia.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/nickel_stairs.json | 20 + .../loot_tables/blocks/nickel_wall.json | 20 + .../loot_tables/blocks/palm_button.json | 19 + .../loot_tables/blocks/palm_door.json | 28 + .../loot_tables/blocks/palm_fence.json | 19 + .../loot_tables/blocks/palm_fence_gate.json | 19 + .../loot_tables/blocks/palm_leaves.json | 128 ++ .../loot_tables/blocks/palm_log.json | 19 + .../loot_tables/blocks/palm_planks.json | 19 + .../blocks/palm_pressure_plate.json | 19 + .../loot_tables/blocks/palm_sapling.json | 19 + .../loot_tables/blocks/palm_sign.json | 19 + .../loot_tables/blocks/palm_slab.json | 32 + .../loot_tables/blocks/palm_stairs.json | 19 + .../loot_tables/blocks/palm_trapdoor.json | 19 + .../loot_tables/blocks/palm_wall_sign.json | 19 + .../loot_tables/blocks/palm_wood.json | 19 + .../loot_tables/blocks/peach_button.json | 19 + .../loot_tables/blocks/peach_door.json | 28 + .../loot_tables/blocks/peach_fence.json | 19 + .../loot_tables/blocks/peach_fence_gate.json | 19 + .../loot_tables/blocks/peach_leaves.json | 185 +++ .../loot_tables/blocks/peach_log.json | 19 + .../loot_tables/blocks/peach_planks.json | 19 + .../blocks/peach_pressure_plate.json | 19 + .../loot_tables/blocks/peach_sapling.json | 19 + .../loot_tables/blocks/peach_sign.json | 19 + .../loot_tables/blocks/peach_slab.json | 32 + .../loot_tables/blocks/peach_stairs.json | 19 + .../loot_tables/blocks/peach_trapdoor.json | 19 + .../loot_tables/blocks/peach_wall_sign.json | 19 + .../loot_tables/blocks/peach_wood.json | 19 + .../blocks/potted_cyan_petunia.json | 33 + .../blocks/potted_ginkgo_sapling.json | 33 + .../loot_tables/blocks/potted_higan_bana.json | 33 + .../blocks/potted_magenta_petunia.json | 33 + .../blocks/potted_palm_sapling.json | 33 + .../blocks/potted_peach_sapling.json | 33 + .../blocks/potted_purpuraceus_fungus.json | 33 + .../blocks/purple_nether_brick_slab.json | 34 + .../blocks/purple_nether_brick_stairs.json | 20 + .../blocks/purple_nether_brick_wall.json | 20 + .../blocks/purple_nether_bricks.json | 20 + .../blocks/purpuraceus_button.json | 19 + .../loot_tables/blocks/purpuraceus_door.json | 28 + .../loot_tables/blocks/purpuraceus_fence.json | 19 + .../blocks/purpuraceus_fence_gate.json | 19 + .../blocks/purpuraceus_fungus.json | 19 + .../blocks/purpuraceus_hyphae.json | 19 + .../blocks/purpuraceus_nylium.json | 44 + .../blocks/purpuraceus_planks.json | 19 + .../blocks/purpuraceus_pressure_plate.json | 19 + .../loot_tables/blocks/purpuraceus_roots.json | 20 + .../loot_tables/blocks/purpuraceus_sign.json | 19 + .../loot_tables/blocks/purpuraceus_slab.json | 32 + .../blocks/purpuraceus_stairs.json | 19 + .../loot_tables/blocks/purpuraceus_stem.json | 19 + .../blocks/purpuraceus_trapdoor.json | 19 + .../blocks/purpuraceus_wall_sign.json | 19 + .../blocks/purpuraceus_wart_block.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 + .../loot_tables/blocks/silver_stairs.json | 20 + .../loot_tables/blocks/silver_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_dark_sandstone.json | 20 + .../blocks/smooth_dark_sandstone_slab.json | 34 + .../blocks/smooth_dark_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 + .../loot_tables/blocks/steel_stairs.json | 20 + .../loot_tables/blocks/steel_wall.json | 20 + .../blocks/stripped_ginkgo_log.json | 19 + .../blocks/stripped_ginkgo_wood.json | 19 + .../loot_tables/blocks/stripped_palm_log.json | 19 + .../blocks/stripped_palm_wood.json | 19 + .../blocks/stripped_peach_log.json | 19 + .../blocks/stripped_peach_wood.json | 19 + .../blocks/stripped_purpuraceus_hyphae.json | 19 + .../blocks/stripped_purpuraceus_stem.json | 19 + .../loot_tables/blocks/uranium_stairs.json | 20 + .../loot_tables/blocks/uranium_wall.json | 20 + .../loot_tables/blocks/vitrified_sand.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 + .../loot_tables/blocks/zinc_slab.json | 34 + .../loot_tables/blocks/zinc_stairs.json | 20 + .../loot_tables/blocks/zinc_wall.json | 20 + .../emeraldcraft/loot_tables/chests/camp.json | 146 ++ .../chests/crimson_trench/medium_house.json | 100 ++ .../chests/crimson_trench/small_house.json | 127 ++ .../chests/entrenchment/chest_hallway.json | 100 ++ .../loot_tables/chests/entrenchment/hall.json | 125 ++ .../chests/entrenchment/prison.json | 83 + .../chests/entrenchment/start.json | 101 ++ .../chests/village/village_astrologist.json | 84 + .../chests/village/village_glazier.json | 84 + .../chests/village/village_miner.json | 84 + .../chests/village/village_swamp_house.json | 127 ++ .../chests/warped_trench/medium_house.json | 100 ++ .../chests/warped_trench/small_house.json | 127 ++ .../chests/zombie_villager_room.json | 290 ++++ .../loot_tables/continuous_miner/fishing.json | 98 ++ .../nylium/crimson_nylium.json | 41 + .../nylium/purpuraceus_nylium.json | 31 + .../nylium/warped_nylium.json | 51 + .../continuous_miner/ores/dirt.json | 41 + .../continuous_miner/ores/flint.json | 36 + .../continuous_miner/ores/nether.json | 56 + .../continuous_miner/ores/obsidian.json | 41 + .../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/ginkgo_logs.json | 41 + .../continuous_miner/wood/jungle_logs.json | 41 + .../continuous_miner/wood/mangrove_logs.json | 41 + .../continuous_miner/wood/oak_logs.json | 41 + .../continuous_miner/wood/palm_logs.json | 41 + .../continuous_miner/wood/peach_logs.json | 41 + .../wood/purpuraceus_stems.json | 41 + .../continuous_miner/wood/spruce_logs.json | 36 + .../continuous_miner/wood/warped_stems.json | 46 + .../loot_tables/entities/herring.json | 47 + .../loot_tables/entities/nether_lambman.json | 39 + .../loot_tables/entities/nether_pigman.json | 39 + .../loot_tables/entities/piglin_cutey.json | 3 + .../entities/purple_spotted_bigeye.json | 47 + .../loot_tables/entities/wraith.json | 142 ++ .../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 + .../boiled_egg_from_campfire_cooking.json | 9 + .../cooked_herring_from_campfire_cooking.json | 9 + ..._spotted_bigeye_from_campfire_cooking.json | 9 + ...puraceus_fungus_from_campfire_cooking.json | 9 + .../cooked_sausage_from_campfire_cooking.json | 9 + ...d_tropical_fish_from_campfire_cooking.json | 9 + .../carpentry/acacia_boat_from_carpentry.json | 11 + .../acacia_button_from_carpentry.json | 11 + .../carpentry/acacia_door_from_carpentry.json | 11 + .../acacia_fence_from_carpentry.json | 11 + .../acacia_fence_gate_from_carpentry.json | 11 + .../acacia_planks_from_carpentry.json | 11 + .../acacia_pressure_plate_from_carpentry.json | 11 + .../carpentry/acacia_sign_from_carpentry.json | 11 + .../carpentry/acacia_slab_from_carpentry.json | 11 + .../acacia_stairs_from_carpentry.json | 11 + .../acacia_trapdoor_from_carpentry.json | 11 + .../carpentry/acacia_wood_from_carpentry.json | 11 + .../carpentry/barrel_from_carpentry.json | 10 + .../carpentry/birch_boat_from_carpentry.json | 11 + .../birch_button_from_carpentry.json | 11 + .../carpentry/birch_door_from_carpentry.json | 11 + .../carpentry/birch_fence_from_carpentry.json | 11 + .../birch_fence_gate_from_carpentry.json | 11 + .../birch_planks_from_carpentry.json | 11 + .../birch_pressure_plate_from_carpentry.json | 11 + .../carpentry/birch_sign_from_carpentry.json | 11 + .../carpentry/birch_slab_from_carpentry.json | 11 + .../birch_stairs_from_carpentry.json | 11 + .../birch_trapdoor_from_carpentry.json | 11 + .../carpentry/birch_wood_from_carpentry.json | 11 + .../carpentry/bowl_from_carpentry.json | 10 + .../carpentry/chest_from_carpentry.json | 10 + .../crafting_table_from_carpentry.json | 10 + .../crimson_button_from_carpentry.json | 11 + .../crimson_door_from_carpentry.json | 11 + .../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 + .../crimson_sign_from_carpentry.json | 11 + .../crimson_slab_from_carpentry.json | 11 + .../crimson_stairs_from_carpentry.json | 11 + .../crimson_trapdoor_from_carpentry.json | 11 + .../dark_oak_boat_from_carpentry.json | 11 + .../dark_oak_button_from_carpentry.json | 11 + .../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 + .../dark_oak_sign_from_carpentry.json | 11 + .../dark_oak_slab_from_carpentry.json | 11 + .../dark_oak_stairs_from_carpentry.json | 11 + .../dark_oak_trapdoor_from_carpentry.json | 11 + .../dark_oak_wood_from_carpentry.json | 11 + .../carpentry/ginkgo_boat_from_carpentry.json | 11 + .../ginkgo_button_from_carpentry.json | 11 + .../carpentry/ginkgo_door_from_carpentry.json | 11 + .../ginkgo_fence_from_carpentry.json | 11 + .../ginkgo_fence_gate_from_carpentry.json | 11 + .../ginkgo_planks_from_carpentry.json | 11 + .../ginkgo_pressure_plate_from_carpentry.json | 11 + .../carpentry/ginkgo_sign_from_carpentry.json | 11 + .../carpentry/ginkgo_slab_from_carpentry.json | 11 + .../ginkgo_stairs_from_carpentry.json | 11 + .../ginkgo_trapdoor_from_carpentry.json | 11 + .../carpentry/ginkgo_wood_from_carpentry.json | 11 + .../carpentry/jungle_boat_from_carpentry.json | 11 + .../jungle_button_from_carpentry.json | 11 + .../carpentry/jungle_door_from_carpentry.json | 11 + .../jungle_fence_from_carpentry.json | 11 + .../jungle_fence_gate_from_carpentry.json | 11 + .../jungle_planks_from_carpentry.json | 11 + .../jungle_pressure_plate_from_carpentry.json | 11 + .../carpentry/jungle_sign_from_carpentry.json | 11 + .../carpentry/jungle_slab_from_carpentry.json | 11 + .../jungle_stairs_from_carpentry.json | 11 + .../jungle_trapdoor_from_carpentry.json | 11 + .../carpentry/jungle_wood_from_carpentry.json | 11 + .../mangrove_boat_from_carpentry.json | 11 + .../mangrove_button_from_carpentry.json | 11 + .../mangrove_door_from_carpentry.json | 11 + .../mangrove_fence_from_carpentry.json | 11 + .../mangrove_fence_gate_from_carpentry.json | 11 + .../mangrove_planks_from_carpentry.json | 11 + ...angrove_pressure_plate_from_carpentry.json | 11 + .../mangrove_sign_from_carpentry.json | 11 + .../mangrove_slab_from_carpentry.json | 11 + .../mangrove_stairs_from_carpentry.json | 11 + .../mangrove_trapdoor_from_carpentry.json | 11 + .../mangrove_wood_from_carpentry.json | 11 + .../carpentry/oak_boat_from_carpentry.json | 11 + .../carpentry/oak_button_from_carpentry.json | 11 + .../carpentry/oak_door_from_carpentry.json | 11 + .../carpentry/oak_fence_from_carpentry.json | 11 + .../oak_fence_gate_from_carpentry.json | 11 + .../carpentry/oak_planks_from_carpentry.json | 11 + .../oak_pressure_plate_from_carpentry.json | 11 + .../carpentry/oak_sign_from_carpentry.json | 11 + .../carpentry/oak_slab_from_carpentry.json | 11 + .../carpentry/oak_stairs_from_carpentry.json | 11 + .../oak_trapdoor_from_carpentry.json | 11 + .../carpentry/oak_wood_from_carpentry.json | 11 + .../carpentry/palm_boat_from_carpentry.json | 11 + .../carpentry/palm_button_from_carpentry.json | 11 + .../carpentry/palm_door_from_carpentry.json | 11 + .../carpentry/palm_fence_from_carpentry.json | 11 + .../palm_fence_gate_from_carpentry.json | 11 + .../carpentry/palm_planks_from_carpentry.json | 11 + .../palm_pressure_plate_from_carpentry.json | 11 + .../carpentry/palm_sign_from_carpentry.json | 11 + .../carpentry/palm_slab_from_carpentry.json | 11 + .../carpentry/palm_stairs_from_carpentry.json | 11 + .../palm_trapdoor_from_carpentry.json | 11 + .../carpentry/palm_wood_from_carpentry.json | 11 + .../carpentry/peach_boat_from_carpentry.json | 11 + .../peach_button_from_carpentry.json | 11 + .../carpentry/peach_door_from_carpentry.json | 11 + .../carpentry/peach_fence_from_carpentry.json | 11 + .../peach_fence_gate_from_carpentry.json | 11 + .../peach_planks_from_carpentry.json | 11 + .../peach_pressure_plate_from_carpentry.json | 11 + .../carpentry/peach_sign_from_carpentry.json | 11 + .../carpentry/peach_slab_from_carpentry.json | 11 + .../peach_stairs_from_carpentry.json | 11 + .../peach_trapdoor_from_carpentry.json | 11 + .../carpentry/peach_wood_from_carpentry.json | 11 + .../purpuraceus_button_from_carpentry.json | 11 + .../purpuraceus_door_from_carpentry.json | 11 + .../purpuraceus_fence_from_carpentry.json | 11 + ...purpuraceus_fence_gate_from_carpentry.json | 11 + .../purpuraceus_hyphae_from_carpentry.json | 11 + .../purpuraceus_planks_from_carpentry.json | 11 + ...uraceus_pressure_plate_from_carpentry.json | 11 + .../purpuraceus_sign_from_carpentry.json | 11 + .../purpuraceus_slab_from_carpentry.json | 11 + .../purpuraceus_stairs_from_carpentry.json | 11 + .../purpuraceus_trapdoor_from_carpentry.json | 11 + .../carpentry/spruce_boat_from_carpentry.json | 11 + .../spruce_button_from_carpentry.json | 11 + .../carpentry/spruce_door_from_carpentry.json | 11 + .../spruce_fence_from_carpentry.json | 11 + .../spruce_fence_gate_from_carpentry.json | 11 + .../spruce_planks_from_carpentry.json | 11 + .../spruce_pressure_plate_from_carpentry.json | 11 + .../carpentry/spruce_sign_from_carpentry.json | 11 + .../carpentry/spruce_slab_from_carpentry.json | 11 + .../spruce_stairs_from_carpentry.json | 11 + .../spruce_trapdoor_from_carpentry.json | 11 + .../carpentry/spruce_wood_from_carpentry.json | 11 + .../carpentry/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_ginkgo_log_from_carpentry.json | 11 + .../stripped_ginkgo_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_palm_log_from_carpentry.json | 11 + .../stripped_palm_wood_from_carpentry.json | 11 + .../stripped_peach_log_from_carpentry.json | 11 + .../stripped_peach_wood_from_carpentry.json | 11 + ...ripped_purpuraceus_log_from_carpentry.json | 11 + ...ipped_purpuraceus_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 + .../warped_button_from_carpentry.json | 11 + .../carpentry/warped_door_from_carpentry.json | 11 + .../warped_fence_from_carpentry.json | 11 + .../warped_fence_gate_from_carpentry.json | 11 + .../warped_hyphae_from_carpentry.json | 11 + .../warped_planks_from_carpentry.json | 11 + .../warped_pressure_plate_from_carpentry.json | 11 + .../carpentry/warped_sign_from_carpentry.json | 11 + .../carpentry/warped_slab_from_carpentry.json | 11 + .../warped_stairs_from_carpentry.json | 11 + .../warped_trapdoor_from_carpentry.json | 11 + .../compat/byg/aspen_boat_from_carpentry.json | 17 + .../byg/aspen_button_from_carpentry.json | 17 + .../compat/byg/aspen_door_from_carpentry.json | 17 + .../byg/aspen_fence_from_carpentry.json | 17 + .../byg/aspen_fence_gate_from_carpentry.json | 17 + .../byg/aspen_planks_from_carpentry.json | 17 + .../aspen_pressure_plate_from_carpentry.json | 17 + .../compat/byg/aspen_slab_from_carpentry.json | 17 + .../byg/aspen_stairs_from_carpentry.json | 17 + .../byg/aspen_trapdoor_from_carpentry.json | 17 + .../compat/byg/aspen_wood_from_carpentry.json | 17 + .../byg/baobab_boat_from_carpentry.json | 17 + .../byg/baobab_button_from_carpentry.json | 17 + .../byg/baobab_door_from_carpentry.json | 17 + .../byg/baobab_fence_from_carpentry.json | 17 + .../byg/baobab_fence_gate_from_carpentry.json | 17 + .../byg/baobab_planks_from_carpentry.json | 17 + .../baobab_pressure_plate_from_carpentry.json | 17 + .../byg/baobab_slab_from_carpentry.json | 17 + .../byg/baobab_stairs_from_carpentry.json | 17 + .../byg/baobab_trapdoor_from_carpentry.json | 17 + .../byg/baobab_wood_from_carpentry.json | 17 + .../blue_enchanted_boat_from_carpentry.json | 17 + .../blue_enchanted_button_from_carpentry.json | 17 + .../blue_enchanted_door_from_carpentry.json | 17 + .../blue_enchanted_fence_from_carpentry.json | 17 + ...e_enchanted_fence_gate_from_carpentry.json | 17 + .../blue_enchanted_planks_from_carpentry.json | 17 + ...chanted_pressure_plate_from_carpentry.json | 17 + .../blue_enchanted_slab_from_carpentry.json | 17 + .../blue_enchanted_stairs_from_carpentry.json | 17 + ...lue_enchanted_trapdoor_from_carpentry.json | 17 + .../blue_enchanted_wood_from_carpentry.json | 17 + .../byg/blue_nether_brick_from_glasskiln.json | 15 + .../byg/bulbis_button_from_carpentry.json | 17 + .../byg/bulbis_door_from_carpentry.json | 17 + .../byg/bulbis_fence_from_carpentry.json | 17 + .../byg/bulbis_fence_gate_from_carpentry.json | 17 + .../byg/bulbis_planks_from_carpentry.json | 17 + .../bulbis_pressure_plate_from_carpentry.json | 17 + .../byg/bulbis_slab_from_carpentry.json | 17 + .../byg/bulbis_stairs_from_carpentry.json | 17 + .../byg/bulbis_trapdoor_from_carpentry.json | 17 + .../byg/bulbis_wood_from_carpentry.json | 17 + .../byg/cherry_boat_from_carpentry.json | 17 + .../byg/cherry_button_from_carpentry.json | 17 + .../byg/cherry_door_from_carpentry.json | 17 + .../byg/cherry_fence_from_carpentry.json | 17 + .../byg/cherry_fence_gate_from_carpentry.json | 17 + .../byg/cherry_planks_from_carpentry.json | 17 + .../cherry_pressure_plate_from_carpentry.json | 17 + .../byg/cherry_slab_from_carpentry.json | 17 + .../byg/cherry_stairs_from_carpentry.json | 17 + .../byg/cherry_trapdoor_from_carpentry.json | 17 + .../byg/cherry_wood_from_carpentry.json | 17 + .../compat/byg/cika_boat_from_carpentry.json | 17 + .../byg/cika_button_from_carpentry.json | 17 + .../compat/byg/cika_door_from_carpentry.json | 17 + .../compat/byg/cika_fence_from_carpentry.json | 17 + .../byg/cika_fence_gate_from_carpentry.json | 17 + .../byg/cika_planks_from_carpentry.json | 17 + .../cika_pressure_plate_from_carpentry.json | 17 + .../compat/byg/cika_slab_from_carpentry.json | 17 + .../byg/cika_stairs_from_carpentry.json | 17 + .../byg/cika_trapdoor_from_carpentry.json | 17 + .../compat/byg/cika_wood_from_carpentry.json | 17 + .../byg/cypress_boat_from_carpentry.json | 17 + .../byg/cypress_button_from_carpentry.json | 17 + .../byg/cypress_door_from_carpentry.json | 17 + .../byg/cypress_fence_from_carpentry.json | 17 + .../cypress_fence_gate_from_carpentry.json | 17 + .../byg/cypress_planks_from_carpentry.json | 17 + ...cypress_pressure_plate_from_carpentry.json | 17 + .../byg/cypress_slab_from_carpentry.json | 17 + .../byg/cypress_stairs_from_carpentry.json | 17 + .../byg/cypress_trapdoor_from_carpentry.json | 17 + .../byg/cypress_wood_from_carpentry.json | 17 + .../compat/byg/ebony_boat_from_carpentry.json | 17 + .../byg/ebony_button_from_carpentry.json | 17 + .../compat/byg/ebony_door_from_carpentry.json | 17 + .../byg/ebony_fence_from_carpentry.json | 17 + .../byg/ebony_fence_gate_from_carpentry.json | 17 + .../byg/ebony_planks_from_carpentry.json | 17 + .../ebony_pressure_plate_from_carpentry.json | 17 + .../compat/byg/ebony_slab_from_carpentry.json | 17 + .../byg/ebony_stairs_from_carpentry.json | 17 + .../byg/ebony_trapdoor_from_carpentry.json | 17 + .../compat/byg/ebony_wood_from_carpentry.json | 17 + .../byg/embur_button_from_carpentry.json | 17 + .../compat/byg/embur_door_from_carpentry.json | 17 + .../byg/embur_fence_from_carpentry.json | 17 + .../byg/embur_fence_gate_from_carpentry.json | 17 + .../byg/embur_hyphae_from_carpentry.json | 17 + .../byg/embur_planks_from_carpentry.json | 17 + .../embur_pressure_plate_from_carpentry.json | 17 + .../compat/byg/embur_slab_from_carpentry.json | 17 + .../byg/embur_stairs_from_carpentry.json | 17 + .../byg/embur_trapdoor_from_carpentry.json | 17 + .../compat/byg/ether_boat_from_carpentry.json | 17 + .../byg/ether_button_from_carpentry.json | 17 + .../compat/byg/ether_door_from_carpentry.json | 17 + .../byg/ether_fence_from_carpentry.json | 17 + .../byg/ether_fence_gate_from_carpentry.json | 17 + .../byg/ether_planks_from_carpentry.json | 17 + .../ether_pressure_plate_from_carpentry.json | 17 + .../compat/byg/ether_slab_from_carpentry.json | 17 + .../byg/ether_stairs_from_carpentry.json | 17 + .../byg/ether_trapdoor_from_carpentry.json | 17 + .../compat/byg/ether_wood_from_carpentry.json | 17 + .../compat/byg/fir_boat_from_carpentry.json | 17 + .../compat/byg/fir_button_from_carpentry.json | 17 + .../compat/byg/fir_door_from_carpentry.json | 17 + .../compat/byg/fir_fence_from_carpentry.json | 17 + .../byg/fir_fence_gate_from_carpentry.json | 17 + .../compat/byg/fir_planks_from_carpentry.json | 17 + .../fir_pressure_plate_from_carpentry.json | 17 + .../compat/byg/fir_slab_from_carpentry.json | 17 + .../compat/byg/fir_stairs_from_carpentry.json | 17 + .../byg/fir_trapdoor_from_carpentry.json | 17 + .../compat/byg/fir_wood_from_carpentry.json | 17 + .../green_enchanted_boat_from_carpentry.json | 17 + ...green_enchanted_button_from_carpentry.json | 17 + .../green_enchanted_door_from_carpentry.json | 17 + .../green_enchanted_fence_from_carpentry.json | 17 + ...n_enchanted_fence_gate_from_carpentry.json | 17 + ...green_enchanted_planks_from_carpentry.json | 17 + ...chanted_pressure_plate_from_carpentry.json | 17 + .../green_enchanted_slab_from_carpentry.json | 17 + ...green_enchanted_stairs_from_carpentry.json | 17 + ...een_enchanted_trapdoor_from_carpentry.json | 17 + .../green_enchanted_wood_from_carpentry.json | 17 + .../compat/byg/holly_boat_from_carpentry.json | 17 + .../byg/holly_button_from_carpentry.json | 17 + .../compat/byg/holly_door_from_carpentry.json | 17 + .../byg/holly_fence_from_carpentry.json | 17 + .../byg/holly_fence_gate_from_carpentry.json | 17 + .../byg/holly_planks_from_carpentry.json | 17 + .../holly_pressure_plate_from_carpentry.json | 17 + .../compat/byg/holly_slab_from_carpentry.json | 17 + .../byg/holly_stairs_from_carpentry.json | 17 + .../byg/holly_trapdoor_from_carpentry.json | 17 + .../compat/byg/holly_wood_from_carpentry.json | 17 + .../byg/imparius_button_from_carpentry.json | 17 + .../byg/imparius_door_from_carpentry.json | 17 + .../byg/imparius_fence_from_carpentry.json | 17 + .../imparius_fence_gate_from_carpentry.json | 17 + .../byg/imparius_hyphae_from_carpentry.json | 17 + .../byg/imparius_planks_from_carpentry.json | 17 + ...mparius_pressure_plate_from_carpentry.json | 17 + .../byg/imparius_slab_from_carpentry.json | 17 + .../byg/imparius_stairs_from_carpentry.json | 17 + .../byg/imparius_trapdoor_from_carpentry.json | 17 + .../byg/jacaranda_boat_from_carpentry.json | 17 + .../byg/jacaranda_button_from_carpentry.json | 17 + .../byg/jacaranda_door_from_carpentry.json | 17 + .../byg/jacaranda_fence_from_carpentry.json | 17 + .../jacaranda_fence_gate_from_carpentry.json | 17 + .../byg/jacaranda_planks_from_carpentry.json | 17 + ...caranda_pressure_plate_from_carpentry.json | 17 + .../byg/jacaranda_slab_from_carpentry.json | 17 + .../byg/jacaranda_stairs_from_carpentry.json | 17 + .../jacaranda_trapdoor_from_carpentry.json | 17 + .../byg/jacaranda_wood_from_carpentry.json | 17 + .../byg/lament_boat_from_carpentry.json | 17 + .../byg/lament_button_from_carpentry.json | 17 + .../byg/lament_door_from_carpentry.json | 17 + .../byg/lament_fence_from_carpentry.json | 17 + .../byg/lament_fence_gate_from_carpentry.json | 17 + .../byg/lament_planks_from_carpentry.json | 17 + .../lament_pressure_plate_from_carpentry.json | 17 + .../byg/lament_slab_from_carpentry.json | 17 + .../byg/lament_stairs_from_carpentry.json | 17 + .../byg/lament_trapdoor_from_carpentry.json | 17 + .../byg/lament_wood_from_carpentry.json | 17 + .../byg/mahogany_boat_from_carpentry.json | 17 + .../byg/mahogany_button_from_carpentry.json | 17 + .../byg/mahogany_door_from_carpentry.json | 17 + .../byg/mahogany_fence_from_carpentry.json | 17 + .../mahogany_fence_gate_from_carpentry.json | 17 + .../byg/mahogany_planks_from_carpentry.json | 17 + ...ahogany_pressure_plate_from_carpentry.json | 17 + .../byg/mahogany_slab_from_carpentry.json | 17 + .../byg/mahogany_stairs_from_carpentry.json | 17 + .../byg/mahogany_trapdoor_from_carpentry.json | 17 + .../byg/mahogany_wood_from_carpentry.json | 17 + .../byg/mangrove_boat_from_carpentry.json | 17 + .../byg/mangrove_button_from_carpentry.json | 17 + .../byg/mangrove_door_from_carpentry.json | 17 + .../byg/mangrove_fence_from_carpentry.json | 17 + .../mangrove_fence_gate_from_carpentry.json | 17 + .../byg/mangrove_planks_from_carpentry.json | 17 + ...angrove_pressure_plate_from_carpentry.json | 17 + .../byg/mangrove_slab_from_carpentry.json | 17 + .../byg/mangrove_stairs_from_carpentry.json | 17 + .../byg/mangrove_trapdoor_from_carpentry.json | 17 + .../byg/mangrove_wood_from_carpentry.json | 17 + .../compat/byg/maple_boat_from_carpentry.json | 17 + .../byg/maple_button_from_carpentry.json | 17 + .../compat/byg/maple_door_from_carpentry.json | 17 + .../byg/maple_fence_from_carpentry.json | 17 + .../byg/maple_fence_gate_from_carpentry.json | 17 + .../byg/maple_planks_from_carpentry.json | 17 + .../maple_pressure_plate_from_carpentry.json | 17 + .../compat/byg/maple_slab_from_carpentry.json | 17 + .../byg/maple_stairs_from_carpentry.json | 17 + .../byg/maple_trapdoor_from_carpentry.json | 17 + .../compat/byg/maple_wood_from_carpentry.json | 17 + .../byg/nightshade_boat_from_carpentry.json | 17 + .../byg/nightshade_button_from_carpentry.json | 17 + .../byg/nightshade_door_from_carpentry.json | 17 + .../byg/nightshade_fence_from_carpentry.json | 17 + .../nightshade_fence_gate_from_carpentry.json | 17 + .../byg/nightshade_planks_from_carpentry.json | 17 + ...htshade_pressure_plate_from_carpentry.json | 17 + .../byg/nightshade_slab_from_carpentry.json | 17 + .../byg/nightshade_stairs_from_carpentry.json | 17 + .../nightshade_trapdoor_from_carpentry.json | 17 + .../byg/nightshade_wood_from_carpentry.json | 17 + .../compat/byg/palm_boat_from_carpentry.json | 17 + .../byg/palm_button_from_carpentry.json | 17 + .../compat/byg/palm_door_from_carpentry.json | 17 + .../compat/byg/palm_fence_from_carpentry.json | 17 + .../byg/palm_fence_gate_from_carpentry.json | 17 + .../byg/palm_planks_from_carpentry.json | 17 + .../palm_pressure_plate_from_carpentry.json | 17 + .../compat/byg/palm_slab_from_carpentry.json | 17 + .../byg/palm_stairs_from_carpentry.json | 17 + .../byg/palm_trapdoor_from_carpentry.json | 17 + .../compat/byg/palm_wood_from_carpentry.json | 17 + .../byg/palo_verde_boat_from_carpentry.json | 17 + .../byg/palo_verde_door_from_carpentry.json | 17 + .../byg/palo_verde_planks_from_carpentry.json | 17 + .../palo_verde_trapdoor_from_carpentry.json | 17 + .../byg/palo_verde_wood_from_carpentry.json | 17 + .../compat/byg/pine_boat_from_carpentry.json | 17 + .../byg/pine_button_from_carpentry.json | 17 + .../compat/byg/pine_door_from_carpentry.json | 17 + .../compat/byg/pine_fence_from_carpentry.json | 17 + .../byg/pine_fence_gate_from_carpentry.json | 17 + .../byg/pine_planks_from_carpentry.json | 17 + .../pine_pressure_plate_from_carpentry.json | 17 + .../compat/byg/pine_slab_from_carpentry.json | 17 + .../byg/pine_stairs_from_carpentry.json | 17 + .../byg/pine_trapdoor_from_carpentry.json | 17 + .../compat/byg/pine_wood_from_carpentry.json | 17 + ...ainbow_eucalyptus_boat_from_carpentry.json | 17 + ...nbow_eucalyptus_button_from_carpentry.json | 17 + ...ainbow_eucalyptus_door_from_carpentry.json | 17 + ...inbow_eucalyptus_fence_from_carpentry.json | 17 + ..._eucalyptus_fence_gate_from_carpentry.json | 17 + ...nbow_eucalyptus_planks_from_carpentry.json | 17 + ...alyptus_pressure_plate_from_carpentry.json | 17 + ...ainbow_eucalyptus_slab_from_carpentry.json | 17 + ...nbow_eucalyptus_stairs_from_carpentry.json | 17 + ...ow_eucalyptus_trapdoor_from_carpentry.json | 17 + ...ainbow_eucalyptus_wood_from_carpentry.json | 17 + .../byg/redwood_boat_from_carpentry.json | 17 + .../byg/redwood_button_from_carpentry.json | 17 + .../byg/redwood_door_from_carpentry.json | 17 + .../byg/redwood_fence_from_carpentry.json | 17 + .../redwood_fence_gate_from_carpentry.json | 17 + .../byg/redwood_planks_from_carpentry.json | 17 + ...redwood_pressure_plate_from_carpentry.json | 17 + .../byg/redwood_slab_from_carpentry.json | 17 + .../byg/redwood_stairs_from_carpentry.json | 17 + .../byg/redwood_trapdoor_from_carpentry.json | 17 + .../byg/redwood_wood_from_carpentry.json | 17 + .../byg/skyris_boat_from_carpentry.json | 17 + .../byg/skyris_button_from_carpentry.json | 17 + .../byg/skyris_door_from_carpentry.json | 17 + .../byg/skyris_fence_from_carpentry.json | 17 + .../byg/skyris_fence_gate_from_carpentry.json | 17 + .../byg/skyris_planks_from_carpentry.json | 17 + .../skyris_pressure_plate_from_carpentry.json | 17 + .../byg/skyris_slab_from_carpentry.json | 17 + .../byg/skyris_stairs_from_carpentry.json | 17 + .../byg/skyris_trapdoor_from_carpentry.json | 17 + .../byg/skyris_wood_from_carpentry.json | 17 + .../stripped_aspen_log_from_carpentry.json | 17 + .../stripped_aspen_wood_from_carpentry.json | 17 + .../stripped_baobab_log_from_carpentry.json | 17 + .../stripped_baobab_wood_from_carpentry.json | 17 + ...ped_blue_enchanted_log_from_carpentry.json | 17 + ...ed_blue_enchanted_wood_from_carpentry.json | 17 + .../stripped_bulbis_stem_from_carpentry.json | 17 + .../stripped_bulbis_wood_from_carpentry.json | 17 + .../stripped_cherry_log_from_carpentry.json | 17 + .../stripped_cherry_wood_from_carpentry.json | 17 + .../byg/stripped_cika_log_from_carpentry.json | 17 + .../stripped_cika_wood_from_carpentry.json | 17 + .../stripped_cypress_log_from_carpentry.json | 17 + .../stripped_cypress_wood_from_carpentry.json | 17 + .../stripped_ebony_log_from_carpentry.json | 17 + .../stripped_ebony_wood_from_carpentry.json | 17 + .../stripped_embur_hyphae_from_carpentry.json | 17 + .../stripped_embur_pedu_from_carpentry.json | 17 + .../stripped_ether_log_from_carpentry.json | 17 + .../stripped_ether_wood_from_carpentry.json | 17 + .../byg/stripped_fir_log_from_carpentry.json | 17 + .../byg/stripped_fir_wood_from_carpentry.json | 17 + ...ed_green_enchanted_log_from_carpentry.json | 17 + ...d_green_enchanted_wood_from_carpentry.json | 17 + .../stripped_holly_log_from_carpentry.json | 17 + .../stripped_holly_wood_from_carpentry.json | 17 + ...stripped_jacaranda_log_from_carpentry.json | 17 + ...tripped_jacaranda_wood_from_carpentry.json | 17 + .../stripped_lament_log_from_carpentry.json | 17 + .../stripped_lament_wood_from_carpentry.json | 17 + .../stripped_mahogany_log_from_carpentry.json | 17 + ...stripped_mahogany_wood_from_carpentry.json | 17 + .../stripped_mangrove_log_from_carpentry.json | 17 + ...stripped_mangrove_wood_from_carpentry.json | 17 + .../stripped_maple_log_from_carpentry.json | 17 + .../stripped_maple_wood_from_carpentry.json | 17 + ...tripped_nightshade_log_from_carpentry.json | 17 + ...ripped_nightshade_wood_from_carpentry.json | 17 + .../byg/stripped_palm_log_from_carpentry.json | 17 + .../stripped_palm_wood_from_carpentry.json | 17 + ...tripped_palo_verde_log_from_carpentry.json | 17 + ...ripped_palo_verde_wood_from_carpentry.json | 17 + .../byg/stripped_pine_log_from_carpentry.json | 17 + .../stripped_pine_wood_from_carpentry.json | 17 + ...rainbow_eucalyptus_log_from_carpentry.json | 17 + ...ainbow_eucalyptus_wood_from_carpentry.json | 17 + .../stripped_redwood_log_from_carpentry.json | 17 + .../stripped_redwood_wood_from_carpentry.json | 17 + .../stripped_skyris_log_from_carpentry.json | 17 + .../stripped_skyris_wood_from_carpentry.json | 17 + ...tripped_sythian_hyphae_from_carpentry.json | 17 + .../stripped_sythian_stem_from_carpentry.json | 17 + .../stripped_willow_log_from_carpentry.json | 17 + .../stripped_willow_wood_from_carpentry.json | 17 + ...ripped_witch_hazel_log_from_carpentry.json | 17 + ...ipped_witch_hazel_wood_from_carpentry.json | 17 + .../stripped_zelkova_log_from_carpentry.json | 17 + .../stripped_zelkova_wood_from_carpentry.json | 17 + .../byg/sythian_button_from_carpentry.json | 17 + .../byg/sythian_door_from_carpentry.json | 17 + .../byg/sythian_fence_from_carpentry.json | 17 + .../sythian_fence_gate_from_carpentry.json | 17 + .../byg/sythian_hyphae_from_carpentry.json | 17 + .../byg/sythian_planks_from_carpentry.json | 17 + ...sythian_pressure_plate_from_carpentry.json | 17 + .../byg/sythian_slab_from_carpentry.json | 17 + .../byg/sythian_stairs_from_carpentry.json | 17 + .../byg/sythian_trapdoor_from_carpentry.json | 17 + .../byg/willow_boat_from_carpentry.json | 17 + .../byg/willow_button_from_carpentry.json | 17 + .../byg/willow_door_from_carpentry.json | 17 + .../byg/willow_fence_from_carpentry.json | 17 + .../byg/willow_fence_gate_from_carpentry.json | 17 + .../byg/willow_planks_from_carpentry.json | 17 + .../willow_pressure_plate_from_carpentry.json | 17 + .../byg/willow_slab_from_carpentry.json | 17 + .../byg/willow_stairs_from_carpentry.json | 17 + .../byg/willow_trapdoor_from_carpentry.json | 17 + .../byg/willow_wood_from_carpentry.json | 17 + .../byg/witch_hazel_boat_from_carpentry.json | 17 + .../witch_hazel_button_from_carpentry.json | 17 + .../byg/witch_hazel_door_from_carpentry.json | 17 + .../byg/witch_hazel_fence_from_carpentry.json | 17 + ...witch_hazel_fence_gate_from_carpentry.json | 17 + .../witch_hazel_planks_from_carpentry.json | 17 + ...h_hazel_pressure_plate_from_carpentry.json | 17 + .../byg/witch_hazel_slab_from_carpentry.json | 17 + .../witch_hazel_stairs_from_carpentry.json | 17 + .../witch_hazel_trapdoor_from_carpentry.json | 17 + .../byg/witch_hazel_wood_from_carpentry.json | 17 + .../withering_oak_boat_from_carpentry.json | 17 + .../withering_oak_door_from_carpentry.json | 17 + .../withering_oak_planks_from_carpentry.json | 17 + ...withering_oak_trapdoor_from_carpentry.json | 17 + .../withering_oak_wood_from_carpentry.json | 17 + .../compat/byg/yellow_nether_brick.json | 15 + .../byg/zelkova_boat_from_carpentry.json | 17 + .../byg/zelkova_button_from_carpentry.json | 17 + .../byg/zelkova_door_from_carpentry.json | 17 + .../byg/zelkova_fence_from_carpentry.json | 17 + .../zelkova_fence_gate_from_carpentry.json | 17 + .../byg/zelkova_planks_from_carpentry.json | 17 + ...zelkova_pressure_plate_from_carpentry.json | 17 + .../byg/zelkova_slab_from_carpentry.json | 17 + .../byg/zelkova_stairs_from_carpentry.json | 17 + .../byg/zelkova_trapdoor_from_carpentry.json | 17 + .../byg/zelkova_wood_from_carpentry.json | 17 + ...opper_nugget_from_dark_sand_splashing.json | 25 + .../create/crying_obsidian_from_haunting.json | 19 + .../cyan_dye_from_cyan_petunia_milling.json | 25 + ...ld_nugget_from_jadeite_sand_splashing.json | 25 + .../glass_from_vitrified_sand_splashing.json | 25 + ...apis_nugget_from_azure_sand_splashing.json | 25 + ...enta_dye_from_magenta_petunia_milling.json | 25 + .../melted_zinc_from_zinc_block_melter.json | 17 + ...ted_zinc_from_zinc_concentrate_melter.json | 17 + .../purple_dye_from_higan_bana_milling.json | 35 + .../zinc_block_from_zinc_fluid_ice_maker.json | 15 + .../compat/create/zinc_concentrate.json | 22 + .../recipes/compat/create/zinc_slab.json | 23 + ...inc_slab_from_zinc_block_stonecutting.json | 14 + .../recipes/compat/create/zinc_stairs.json | 25 + .../zinc_stairs_from_zinc_stonecutting.json | 14 + .../recipes/compat/create/zinc_wall.json | 22 + ...inc_wall_from_zinc_block_stonecutting.json | 14 + ...m_block_from_aluminum_fluid_ice_maker.json | 15 + .../aluminum_concentrate.json | 22 + .../immersiveengineering/aluminum_stairs.json | 25 + ...num_stairs_from_aluminum_stonecutting.json | 14 + .../immersiveengineering/aluminum_wall.json | 22 + ...wall_from_aluminum_block_stonecutting.json | 14 + .../constantan_stairs.json | 25 + ...n_stairs_from_constantan_stonecutting.json | 14 + .../immersiveengineering/constantan_wall.json | 22 + ...ll_from_constantan_block_stonecutting.json | 14 + .../immersiveengineering/electrum_stairs.json | 25 + ...rum_stairs_from_electrum_stonecutting.json | 14 + .../immersiveengineering/electrum_wall.json | 22 + ...wall_from_electrum_block_stonecutting.json | 14 + .../lead_block_from_lead_fluid_ice_maker.json | 15 + .../lead_concentrate.json | 22 + .../immersiveengineering/lead_stairs.json | 25 + .../lead_stairs_from_lead_stonecutting.json | 14 + .../immersiveengineering/lead_wall.json | 22 + ...ead_wall_from_lead_block_stonecutting.json | 14 + ...d_aluminum_from_aluminum_block_melter.json | 17 + ...inum_from_aluminum_concentrate_melter.json | 17 + .../melted_lead_from_lead_block_melter.json | 17 + ...ted_lead_from_lead_concentrate_melter.json | 17 + ...elted_nickel_from_nickel_block_melter.json | 17 + ...nickel_from_nickel_concentrate_melter.json | 17 + ...elted_silver_from_silver_block_melter.json | 17 + ...silver_from_silver_concentrate_melter.json | 17 + ...ted_uranium_from_uranium_block_melter.json | 17 + ...anium_from_uranium_concentrate_melter.json | 17 + ...kel_block_from_nickel_fluid_ice_maker.json | 15 + .../nickel_concentrate.json | 22 + .../immersiveengineering/nickel_stairs.json | 25 + ...ickel_stairs_from_nickel_stonecutting.json | 14 + .../immersiveengineering/nickel_wall.json | 22 + ...l_wall_from_nickel_block_stonecutting.json | 14 + ...ver_block_from_silver_fluid_ice_maker.json | 15 + .../silver_concentrate.json | 22 + .../immersiveengineering/silver_stairs.json | 25 + ...ilver_stairs_from_silver_stonecutting.json | 14 + .../immersiveengineering/silver_wall.json | 22 + ...r_wall_from_silver_block_stonecutting.json | 14 + .../immersiveengineering/steel_stairs.json | 25 + .../steel_stairs_from_steel_stonecutting.json | 14 + .../immersiveengineering/steel_wall.json | 22 + ...el_wall_from_steel_block_stonecutting.json | 14 + ...um_block_from_uranium_fluid_ice_maker.json | 15 + .../uranium_concentrate.json | 22 + .../immersiveengineering/uranium_stairs.json | 25 + ...nium_stairs_from_uranium_stonecutting.json | 14 + .../immersiveengineering/uranium_wall.json | 22 + ..._wall_from_uranium_block_stonecutting.json | 14 + .../quark/acacia_chest_from_carpentry.json | 17 + .../quark/birch_chest_from_carpentry.json | 17 + .../quark/crimson_chest_from_carpentry.json | 17 + .../quark/dark_oak_chest_from_carpentry.json | 17 + .../quark/jungle_chest_from_carpentry.json | 17 + .../quark/oak_chest_from_carpentry.json | 17 + .../quark/spruce_chest_from_carpentry.json | 17 + .../quark/warped_chest_from_carpentry.json | 17 + .../recipes/crafting_shaped/agate_apple.json | 19 + .../recipes/crafting_shaped/azure_sand.json | 20 + .../crafting_shaped/azure_sandstone.json | 15 + .../crafting_shaped/azure_sandstone_slab.json | 17 + .../azure_sandstone_stairs.json | 22 + .../crafting_shaped/azure_sandstone_wall.json | 16 + .../blue_nether_brick_slab.json | 15 + .../blue_nether_brick_stairs.json | 17 + .../blue_nether_brick_wall.json | 16 + .../crafting_shaped/blue_nether_bricks.json | 18 + .../crafting_shaped/carpentry_table.json | 21 + .../crafting_shaped/continuous_miner.json | 28 + .../crafting_shaped/copper_concentrate.json | 16 + .../crimson_cobblestone_slab.json | 17 + .../crimson_cobblestone_stairs.json | 19 + .../crimson_cobblestone_wall.json | 16 + .../crafting_shaped/crimson_stone_slab.json | 17 + .../crafting_shaped/crimson_stone_stairs.json | 19 + .../crafting_shaped/crimson_stone_wall.json | 16 + .../crafting_shaped/crystalball_table.json | 22 + .../crafting_shaped/cut_azure_sandstone.json | 16 + .../cut_azure_sandstone_slab.json | 15 + .../crafting_shaped/cut_dark_sandstone.json | 16 + .../cut_dark_sandstone_slab.json | 15 + .../crafting_shaped/cut_emery_sandstone.json | 16 + .../cut_emery_sandstone_slab.json | 15 + .../cut_jadeite_sandstone.json | 16 + .../cut_jadeite_sandstone_slab.json | 15 + .../crafting_shaped/cut_quartz_sandstone.json | 16 + .../cut_quartz_sandstone_slab.json | 15 + .../recipes/crafting_shaped/dark_sand.json | 20 + .../crafting_shaped/dark_sandstone.json | 15 + .../crafting_shaped/dark_sandstone_slab.json | 17 + .../dark_sandstone_stairs.json | 22 + .../crafting_shaped/dark_sandstone_wall.json | 16 + .../crafting_shaped/diamond_from_nuggets.json | 16 + .../recipes/crafting_shaped/diamond_slab.json | 17 + .../crafting_shaped/diamond_stairs.json | 19 + .../recipes/crafting_shaped/diamond_wall.json | 16 + .../crafting_shaped/emerald_chest.json | 16 + .../recipes/crafting_shaped/emerald_feet.json | 15 + .../crafting_shaped/emerald_from_nuggets.json | 16 + .../recipes/crafting_shaped/emerald_head.json | 15 + .../recipes/crafting_shaped/emerald_legs.json | 16 + .../recipes/crafting_shaped/emerald_slab.json | 17 + .../crafting_shaped/emerald_stairs.json | 19 + .../recipes/crafting_shaped/emerald_wall.json | 16 + .../recipes/crafting_shaped/emery_sand.json | 20 + .../crafting_shaped/emery_sandstone.json | 15 + .../crafting_shaped/emery_sandstone_slab.json | 17 + .../emery_sandstone_stairs.json | 22 + .../crafting_shaped/emery_sandstone_wall.json | 16 + .../recipes/crafting_shaped/ginkgo_boat.json | 16 + .../recipes/crafting_shaped/ginkgo_door.json | 18 + .../recipes/crafting_shaped/ginkgo_fence.json | 20 + .../crafting_shaped/ginkgo_fence_gate.json | 19 + .../ginkgo_pressure_plate.json | 15 + .../recipes/crafting_shaped/ginkgo_sign.json | 21 + .../recipes/crafting_shaped/ginkgo_slab.json | 16 + .../crafting_shaped/ginkgo_stairs.json | 18 + .../crafting_shaped/ginkgo_trapdoor.json | 17 + .../recipes/crafting_shaped/ginkgo_wood.json | 17 + .../recipes/crafting_shaped/glass_kiln.json | 22 + .../crafting_shaped/gold_concentrate.json | 16 + .../recipes/crafting_shaped/gold_slab.json | 17 + .../recipes/crafting_shaped/gold_stairs.json | 19 + .../recipes/crafting_shaped/gold_wall.json | 16 + .../recipes/crafting_shaped/golden_peach.json | 22 + .../recipes/crafting_shaped/ice_maker.json | 26 + .../crafting_shaped/iron_concentrate.json | 16 + .../recipes/crafting_shaped/iron_slab.json | 17 + .../recipes/crafting_shaped/iron_stairs.json | 19 + .../recipes/crafting_shaped/iron_wall.json | 16 + .../recipes/crafting_shaped/jade_apple.json | 19 + .../recipes/crafting_shaped/jadeite_sand.json | 20 + .../crafting_shaped/jadeite_sandstone.json | 15 + .../jadeite_sandstone_slab.json | 17 + .../jadeite_sandstone_stairs.json | 22 + .../jadeite_sandstone_wall.json | 16 + .../recipes/crafting_shaped/lapis_chest.json | 16 + .../recipes/crafting_shaped/lapis_feet.json | 15 + .../recipes/crafting_shaped/lapis_head.json | 15 + .../lapis_lazuli_from_nuggets.json | 16 + .../recipes/crafting_shaped/lapis_legs.json | 16 + .../recipes/crafting_shaped/lapis_slab.json | 17 + .../recipes/crafting_shaped/lapis_stairs.json | 19 + .../recipes/crafting_shaped/lapis_wall.json | 16 + .../recipes/crafting_shaped/melter.json | 23 + .../crafting_shaped/mineral_table.json | 22 + .../crafting_shaped/netherite_slab.json | 17 + .../crafting_shaped/netherite_stairs.json | 19 + .../crafting_shaped/netherite_wall.json | 16 + .../recipes/crafting_shaped/palm_boat.json | 16 + .../recipes/crafting_shaped/palm_door.json | 18 + .../recipes/crafting_shaped/palm_fence.json | 20 + .../crafting_shaped/palm_fence_gate.json | 19 + .../crafting_shaped/palm_pressure_plate.json | 15 + .../recipes/crafting_shaped/palm_sign.json | 21 + .../recipes/crafting_shaped/palm_slab.json | 16 + .../recipes/crafting_shaped/palm_stairs.json | 18 + .../crafting_shaped/palm_trapdoor.json | 17 + .../recipes/crafting_shaped/palm_wood.json | 17 + .../recipes/crafting_shaped/peach_boat.json | 16 + .../recipes/crafting_shaped/peach_door.json | 18 + .../recipes/crafting_shaped/peach_fence.json | 20 + .../crafting_shaped/peach_fence_gate.json | 19 + .../crafting_shaped/peach_pressure_plate.json | 15 + .../recipes/crafting_shaped/peach_sign.json | 21 + .../recipes/crafting_shaped/peach_slab.json | 16 + .../recipes/crafting_shaped/peach_stairs.json | 18 + .../crafting_shaped/peach_trapdoor.json | 17 + .../recipes/crafting_shaped/peach_wood.json | 17 + .../crafting_shaped/potion_cookie.json | 18 + .../crafting_shaped/purpuraceus_door.json | 18 + .../crafting_shaped/purpuraceus_fence.json | 20 + .../purpuraceus_fence_gate.json | 19 + .../crafting_shaped/purpuraceus_hyphae.json | 17 + .../purpuraceus_pressure_plate.json | 15 + .../crafting_shaped/purpuraceus_sign.json | 21 + .../crafting_shaped/purpuraceus_slab.json | 16 + .../crafting_shaped/purpuraceus_stairs.json | 18 + .../crafting_shaped/purpuraceus_trapdoor.json | 17 + .../recipes/crafting_shaped/quartz_sand.json | 20 + .../crafting_shaped/quartz_sandstone.json | 15 + .../quartz_sandstone_slab.json | 17 + .../quartz_sandstone_stairs.json | 22 + .../quartz_sandstone_wall.json | 16 + .../recipes/crafting_shaped/rock_breaker.json | 26 + .../smooth_azure_sandstone_slab.json | 15 + .../smooth_azure_sandstone_stairs.json | 17 + .../smooth_dark_sandstone_slab.json | 15 + .../smooth_dark_sandstone_stairs.json | 17 + .../smooth_emery_sandstone_slab.json | 15 + .../smooth_emery_sandstone_stairs.json | 17 + .../smooth_jadeite_sandstone_slab.json | 15 + .../smooth_jadeite_sandstone_stairs.json | 17 + .../smooth_quartz_sandstone_slab.json | 15 + .../smooth_quartz_sandstone_stairs.json | 17 + .../recipes/crafting_shaped/squeezer.json | 22 + .../crafting_shaped/stripped_ginkgo_wood.json | 17 + .../crafting_shaped/stripped_palm_wood.json | 17 + .../crafting_shaped/stripped_peach_wood.json | 17 + .../stripped_purpuraceus_hyphae.json | 17 + .../warped_cobblestone_slab.json | 17 + .../warped_cobblestone_stairs.json | 19 + .../warped_cobblestone_wall.json | 16 + .../crafting_shaped/warped_stone_slab.json | 17 + .../crafting_shaped/warped_stone_stairs.json | 19 + .../crafting_shaped/warped_stone_wall.json | 16 + .../crafting_shaped/warped_wart_block.json | 16 + .../crafting_shapeless/apple_juice.json | 21 + .../azure_sand_shapeless.json | 15 + .../beef_and_potato_stew.json | 17 + .../crafting_shapeless/beetroot_juice.json | 18 + .../crafting_shapeless/braised_chicken.json | 20 + .../caramelized_potato.json | 14 + .../crafting_shapeless/carrot_juice.json | 27 + .../crafting_shapeless/chili_seed.json | 12 + .../chorus_flower_eggdrop_soup.json | 17 + .../crimson_cobblestone.json | 14 + .../crafting_shapeless/crimson_stone.json | 14 + .../cyan_dye_from_cyan_petunia.json | 13 + .../dark_sand_shapeless.json | 15 + .../crafting_shapeless/diamond_nugget.json | 12 + .../crafting_shapeless/emerald_nugget.json | 12 + .../emery_sand_shapeless.json | 15 + .../crafting_shapeless/ginkgo_button.json | 12 + .../crafting_shapeless/ginkgo_chest_boat.json | 15 + .../crafting_shapeless/ginkgo_planks.json | 13 + .../recipes/crafting_shapeless/gluten.json | 17 + .../jadeite_sand_shapeless.json | 15 + .../crafting_shapeless/lapis_nugget.json | 12 + .../magenta_dye_from_magenta_petunia.json | 13 + .../crafting_shapeless/melon_juice.json | 15 + .../crafting_shapeless/palm_button.json | 12 + .../crafting_shapeless/palm_chest_boat.json | 15 + .../crafting_shapeless/palm_planks.json | 13 + .../crafting_shapeless/peach_button.json | 12 + .../crafting_shapeless/peach_chest_boat.json | 15 + .../crafting_shapeless/peach_juice.json | 15 + .../crafting_shapeless/peach_planks.json | 13 + .../crafting_shapeless/pumpkin_juice.json | 27 + .../purple_dye_from_higan_bana.json | 13 + .../purpuraceus_button.json | 12 + .../purpuraceus_planks.json | 13 + .../quartz_sand_shapeless.json | 15 + .../recipes/crafting_shapeless/rougamo.json | 17 + .../recipes/crafting_shapeless/sausage.json | 17 + .../stir_fried_warden_heart.json | 20 + .../warped_cobblestone.json | 14 + .../crafting_shapeless/warped_stone.json | 14 + ...lack_glazed_terracotta_from_glasskiln.json | 9 + ...blue_glazed_terracotta_from_glasskiln.json | 9 + .../glasskiln/brick_from_glasskiln.json | 9 + ...rown_glazed_terracotta_from_glasskiln.json | 9 + ...cyan_glazed_terracotta_from_glasskiln.json | 9 + .../glasskiln/glass_from_glasskiln.json | 9 + ...gray_glazed_terracotta_from_glasskiln.json | 9 + ...reen_glazed_terracotta_from_glasskiln.json | 9 + ...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 + .../nether_brick_from_glasskiln.json | 9 + ...ange_glazed_terracotta_from_glasskiln.json | 9 + ...pink_glazed_terracotta_from_glasskiln.json | 9 + ...rple_glazed_terracotta_from_glasskiln.json | 9 + .../red_glazed_terracotta_from_glasskiln.json | 9 + .../glasskiln/terracotta_from_glasskiln.json | 9 + ...hite_glazed_terracotta_from_glasskiln.json | 9 + ...llow_glazed_terracotta_from_glasskiln.json | 9 + ...per_block_from_copper_fluid_ice_maker.json | 9 + ...ld_block_from_emerald_fluid_ice_maker.json | 9 + .../gold_block_from_gold_fluid_ice_maker.json | 9 + .../ice_from_water_fluid_ice_maker.json | 9 + .../iron_block_from_iron_fluid_ice_maker.json | 9 + .../obsidian_from_lava_fluid_ice_maker.json | 9 + .../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 + ...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 + .../melter/water_fluid_from_ice_melter.json | 11 + .../water_fluid_from_snow_block_melter.json | 11 + .../water_fluid_from_snowball_melter.json | 11 + .../blaze_powder_from_mineraltable.json | 9 + .../diamond_nugget_from_mineraltable.json | 9 + .../emerald_nugget_from_mineraltable.json | 9 + .../gold_nugget_from_mineraltable.json | 9 + .../iron_nugget_from_mineraltable.json | 9 + .../lapis_nugget_from_mineraltable.json | 9 + .../recipes/smelting/boiled_egg.json | 9 + .../recipes/smelting/cooked_herring.json | 9 + .../cooked_purple_spotted_bigeye.json | 9 + .../smelting/cooked_purpuraceus_fungus.json | 9 + .../recipes/smelting/cooked_sausage.json | 9 + .../smelting/cooked_tropical_fish.json | 9 + .../smelting/smooth_azure_sandstone.json | 9 + .../smelting/smooth_dark_sandstone.json | 9 + .../smelting/smooth_emery_sandstone.json | 9 + .../smelting/smooth_jadeite_sandstone.json | 9 + .../smelting/smooth_quartz_sandstone.json | 9 + .../smoking/boiled_egg_from_smoking.json | 9 + .../smoking/cooked_herring_from_smoking.json | 9 + ...ed_purple_spotted_bigeye_from_smoking.json | 9 + ...ooked_purpuraceus_fungus_from_smoking.json | 9 + .../smoking/cooked_sausage_from_smoking.json | 9 + .../cooked_tropical_fish_from_smoking.json | 9 + ...lab_from_azure_sandstone_stonecutting.json | 8 + ...irs_from_azure_sandstone_stonecutting.json | 8 + ...all_from_azure_sandstone_stonecutting.json | 8 + ...b_from_red_nether_bricks_stonecutting.json | 8 + ...s_from_red_nether_bricks_stonecutting.json | 8 + ...l_from_red_nether_bricks_stonecutting.json | 8 + ...from_crimson_cobblestone_stonecutting.json | 8 + ...from_crimson_cobblestone_stonecutting.json | 8 + ...from_crimson_cobblestone_stonecutting.json | 8 + ..._slab_from_crimson_stone_stonecutting.json | 8 + ...tairs_from_crimson_stone_stonecutting.json | 8 + ..._wall_from_crimson_stone_stonecutting.json | 8 + ...one_from_azure_sandstone_stonecutting.json | 8 + ...lab_from_azure_sandstone_stonecutting.json | 8 + ...from_cut_azure_sandstone_stonecutting.json | 8 + ...one_from_emery_sandstone_stonecutting.json | 8 + ...from_cut_emery_sandstone_stonecutting.json | 8 + ...lab_from_emery_sandstone_stonecutting.json | 8 + ...e_from_jadeite_sandstone_stonecutting.json | 8 + ...om_cut_jadeite_sandstone_stonecutting.json | 8 + ...b_from_jadeite_sandstone_stonecutting.json | 8 + ...ne_from_quartz_sandstone_stonecutting.json | 8 + ...rom_cut_quartz_sandstone_stonecutting.json | 8 + ...ab_from_quartz_sandstone_stonecutting.json | 8 + ..._slab_from_diamond_block_stonecutting.json | 8 + ...mond_stairs_from_diamond_stonecutting.json | 8 + ..._wall_from_diamond_block_stonecutting.json | 8 + ..._slab_from_emerald_block_stonecutting.json | 8 + ...rald_stairs_from_emerald_stonecutting.json | 8 + ..._wall_from_emerald_block_stonecutting.json | 8 + ...lab_from_emery_sandstone_stonecutting.json | 8 + ...irs_from_emery_sandstone_stonecutting.json | 8 + ...all_from_emery_sandstone_stonecutting.json | 8 + ...old_slab_from_gold_block_stonecutting.json | 8 + .../gold_stairs_from_gold_stonecutting.json | 8 + ...old_wall_from_gold_block_stonecutting.json | 8 + ...ron_slab_from_iron_block_stonecutting.json | 8 + .../iron_stairs_from_iron_stonecutting.json | 8 + ...ron_wall_from_iron_block_stonecutting.json | 8 + ...b_from_jadeite_sandstone_stonecutting.json | 8 + ...s_from_jadeite_sandstone_stonecutting.json | 8 + ...l_from_jadeite_sandstone_stonecutting.json | 8 + ...is_slab_from_lapis_block_stonecutting.json | 8 + .../lapis_stairs_from_lapis_stonecutting.json | 8 + ...is_wall_from_lapis_block_stonecutting.json | 8 + ...lab_from_netherite_block_stonecutting.json | 8 + ...te_stairs_from_netherite_stonecutting.json | 8 + ...all_from_netherite_block_stonecutting.json | 8 + ...ab_from_quartz_sandstone_stonecutting.json | 8 + ...rs_from_quartz_sandstone_stonecutting.json | 8 + ...ll_from_quartz_sandstone_stonecutting.json | 8 + ...m_smooth_azure_sandstone_stonecutting.json | 8 + ...m_smooth_azure_sandstone_stonecutting.json | 8 + ...m_smooth_emery_sandstone_stonecutting.json | 8 + ...m_smooth_emery_sandstone_stonecutting.json | 8 + ...smooth_jadeite_sandstone_stonecutting.json | 8 + ...smooth_jadeite_sandstone_stonecutting.json | 8 + ..._smooth_quartz_sandstone_stonecutting.json | 8 + ..._smooth_quartz_sandstone_stonecutting.json | 8 + ..._from_warped_cobblestone_stonecutting.json | 8 + ..._from_warped_cobblestone_stonecutting.json | 8 + ..._from_warped_cobblestone_stonecutting.json | 8 + ...e_slab_from_warped_stone_stonecutting.json | 8 + ...stairs_from_warped_stone_stonecutting.json | 8 + ...e_wall_from_warped_stone_stonecutting.json | 8 + .../structures/camp/badlands_camp.nbt | Bin 0 -> 1261 bytes .../structures/camp/birch_camp.nbt | Bin 0 -> 1254 bytes .../structures/camp/desert_camp.nbt | Bin 0 -> 1262 bytes .../structures/camp/jungle_camp.nbt | Bin 0 -> 1373 bytes .../structures/camp/plains_camp.nbt | Bin 0 -> 1367 bytes .../structures/camp/savanna_camp.nbt | Bin 0 -> 1317 bytes .../structures/camp/snow_camp.nbt | Bin 0 -> 1245 bytes .../structures/camp/stony_camp.nbt | Bin 0 -> 1247 bytes .../structures/camp/swamp_camp.nbt | Bin 0 -> 1418 bytes .../structures/camp/taiga_camp.nbt | Bin 0 -> 1423 bytes .../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 -> 5174 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 .../houses/plains_carpentry_house_1.nbt | Bin 0 -> 2538 bytes .../swamp/houses/swamp_accessory_1.nbt | Bin 0 -> 543 bytes .../swamp/houses/swamp_animal_pen_1.nbt | Bin 0 -> 1289 bytes .../swamp/houses/swamp_animal_pen_2.nbt | Bin 0 -> 2152 bytes .../swamp/houses/swamp_animal_pen_3.nbt | Bin 0 -> 2246 bytes .../swamp/houses/swamp_armorer_house_1.nbt | Bin 0 -> 2600 bytes .../houses/swamp_astrologist_house_1.nbt | Bin 0 -> 2846 bytes .../swamp/houses/swamp_big_house_1.nbt | Bin 0 -> 3133 bytes .../swamp/houses/swamp_butcher_shop_1.nbt | Bin 0 -> 4117 bytes .../swamp/houses/swamp_carpenter_house_1.nbt | Bin 0 -> 3596 bytes .../swamp/houses/swamp_cartographer_1.nbt | Bin 0 -> 2541 bytes .../swamp/houses/swamp_fisher_cottage_1.nbt | Bin 0 -> 3732 bytes .../swamp/houses/swamp_fletcher_house_1.nbt | Bin 0 -> 3280 bytes .../swamp/houses/swamp_glazier_house_1.nbt | Bin 0 -> 3415 bytes .../swamp/houses/swamp_icer_house_1.nbt | Bin 0 -> 3204 bytes .../swamp/houses/swamp_large_farm_1.nbt | Bin 0 -> 2380 bytes .../village/swamp/houses/swamp_library_1.nbt | Bin 0 -> 7190 bytes .../swamp/houses/swamp_masons_house_1.nbt | Bin 0 -> 2294 bytes .../swamp/houses/swamp_medium_house_1.nbt | Bin 0 -> 4400 bytes .../swamp/houses/swamp_medium_house_2.nbt | Bin 0 -> 3380 bytes .../swamp/houses/swamp_meeting_point_4.nbt | Bin 0 -> 3936 bytes .../swamp/houses/swamp_meeting_point_5.nbt | Bin 0 -> 2815 bytes .../swamp/houses/swamp_miner_house_1.nbt | Bin 0 -> 3144 bytes .../swamp/houses/swamp_small_farm_1.nbt | Bin 0 -> 1465 bytes .../swamp/houses/swamp_small_house_1.nbt | Bin 0 -> 1816 bytes .../swamp/houses/swamp_small_house_2.nbt | Bin 0 -> 1685 bytes .../swamp/houses/swamp_small_house_3.nbt | Bin 0 -> 1734 bytes .../swamp/houses/swamp_small_house_4.nbt | Bin 0 -> 1773 bytes .../swamp/houses/swamp_small_house_5.nbt | Bin 0 -> 1827 bytes .../swamp/houses/swamp_small_house_6.nbt | Bin 0 -> 2311 bytes .../swamp/houses/swamp_small_house_7.nbt | Bin 0 -> 1939 bytes .../swamp/houses/swamp_small_house_8.nbt | Bin 0 -> 1927 bytes .../village/swamp/houses/swamp_tannery_1.nbt | Bin 0 -> 1108 bytes .../village/swamp/houses/swamp_temple_3.nbt | Bin 0 -> 3469 bytes .../swamp/houses/swamp_tool_smith_1.nbt | Bin 0 -> 3917 bytes .../swamp/houses/swamp_weaponsmith_1.nbt | Bin 0 -> 3397 bytes .../village/swamp/streets/corner_01.nbt | Bin 0 -> 1188 bytes .../village/swamp/streets/corner_02.nbt | Bin 0 -> 1115 bytes .../village/swamp/streets/corner_03.nbt | Bin 0 -> 355 bytes .../village/swamp/streets/crossroad_01.nbt | Bin 0 -> 1220 bytes .../village/swamp/streets/crossroad_02.nbt | Bin 0 -> 1166 bytes .../village/swamp/streets/crossroad_03.nbt | Bin 0 -> 1209 bytes .../village/swamp/streets/crossroad_04.nbt | Bin 0 -> 383 bytes .../village/swamp/streets/crossroad_05.nbt | Bin 0 -> 414 bytes .../village/swamp/streets/crossroad_06.nbt | Bin 0 -> 476 bytes .../village/swamp/streets/straight_01.nbt | Bin 0 -> 1136 bytes .../village/swamp/streets/straight_02.nbt | Bin 0 -> 1090 bytes .../village/swamp/streets/straight_03.nbt | Bin 0 -> 781 bytes .../village/swamp/streets/straight_04.nbt | Bin 0 -> 639 bytes .../village/swamp/streets/straight_05.nbt | Bin 0 -> 1335 bytes .../village/swamp/streets/straight_06.nbt | Bin 0 -> 1710 bytes .../village/swamp/streets/turn_01.nbt | Bin 0 -> 793 bytes .../structures/village/swamp/swamp_lamp_1.nbt | Bin 0 -> 525 bytes .../swamp/terminators/terminator_01.nbt | Bin 0 -> 284 bytes .../swamp/terminators/terminator_02.nbt | Bin 0 -> 251 bytes .../swamp/terminators/terminator_03.nbt | Bin 0 -> 292 bytes .../swamp/terminators/terminator_04.nbt | Bin 0 -> 321 bytes .../swamp/town_centers/swamp_fountain_01.nbt | Bin 0 -> 1821 bytes .../town_centers/swamp_meeting_point_1.nbt | Bin 0 -> 2707 bytes .../town_centers/swamp_meeting_point_2.nbt | Bin 0 -> 2486 bytes .../village/swamp/villagers/baby.nbt | Bin 0 -> 750 bytes .../village/swamp/villagers/nitwit.nbt | Bin 0 -> 749 bytes .../village/swamp/villagers/unemployed.nbt | Bin 0 -> 748 bytes .../emeraldcraft/tags/banner_pattern/bee.json | 5 + .../tags/banner_pattern/bottle.json | 5 + .../tags/banner_pattern/potion.json | 5 + .../tags/banner_pattern/snow.json | 5 + .../emeraldcraft/tags/blocks/ginkgo_logs.json | 9 + .../emeraldcraft/tags/blocks/palm_logs.json | 9 + .../emeraldcraft/tags/blocks/peach_logs.json | 9 + .../tags/blocks/purpuraceus_stems.json | 9 + .../emeraldcraft/tags/items/ginkgo_logs.json | 9 + .../emeraldcraft/tags/items/palm_logs.json | 9 + .../emeraldcraft/tags/items/peach_logs.json | 9 + .../tags/items/purpuraceus_stems.json | 9 + .../worldgen/biome/dead_crimson_ocean.json | 7 + .../worldgen/biome/dead_warped_ocean.json | 7 + .../biome/has_structure/camp_badlands.json | 8 + .../biome/has_structure/camp_birch.json | 7 + .../biome/has_structure/camp_desert.json | 7 + .../biome/has_structure/camp_jungle.json | 8 + .../biome/has_structure/camp_plains.json | 12 + .../biome/has_structure/camp_savanna.json | 8 + .../biome/has_structure/camp_snow.json | 11 + .../biome/has_structure/camp_stony.json | 10 + .../biome/has_structure/camp_swamp.json | 8 + .../biome/has_structure/camp_taiga.json | 9 + .../biome/has_structure/entrenchment.json | 6 + .../biome/has_structure/nether_warfield.json | 6 + .../worldgen/biome/has_structure/shelter.json | 6 + .../biome/has_structure/village_swamp.json | 8 + .../tags/worldgen/structure/camp.json | 15 + .../structure/on_geocenter_explorer_maps.json | 6 + .../structure/on_sar_explorer_maps.json | 6 + .../loot_modifiers/global_loot_modifiers.json | 6 + .../data/forge/tags/blocks/cobblestone.json | 7 + .../forge/tags/blocks/fence_gates/wooden.json | 7 + .../data/forge/tags/blocks/sand.json | 10 + .../data/forge/tags/blocks/sand/black.json | 6 + .../data/forge/tags/blocks/sand/blue.json | 6 + .../data/forge/tags/blocks/sand/green.json | 6 + .../data/forge/tags/blocks/sand/orange.json | 6 + .../data/forge/tags/blocks/sand/white.json | 6 + .../data/forge/tags/blocks/sandstone.json | 20 + .../data/forge/tags/blocks/stone.json | 7 + .../data/forge/tags/items/cobblestone.json | 7 + .../forge/tags/items/fence_gates/wooden.json | 7 + .../data/forge/tags/items/fruits/peach.json | 6 + .../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 + .../forge/tags/worldgen/biome/is_beach.json | 7 + .../tags/worldgen/biome/is_cold/nether.json | 6 + .../worldgen/biome/is_cold/overworld.json | 6 + .../forge/tags/worldgen/biome/is_dead.json | 7 + .../worldgen/biome/is_dense/overworld.json | 6 + .../tags/worldgen/biome/is_dry/nether.json | 7 + .../tags/worldgen/biome/is_dry/overworld.json | 7 + .../forge/tags/worldgen/biome/is_forest.json | 6 + .../tags/worldgen/biome/is_hot/nether.json | 7 + .../tags/worldgen/biome/is_hot/overworld.json | 10 + .../forge/tags/worldgen/biome/is_mesa.json | 7 + .../forge/tags/worldgen/biome/is_ocean.json | 7 + .../forge/tags/worldgen/biome/is_peak.json | 6 + .../forge/tags/worldgen/biome/is_plains.json | 6 + .../forge/tags/worldgen/biome/is_rare.json | 8 + .../forge/tags/worldgen/biome/is_sandy.json | 10 + .../tags/worldgen/biome/is_sparse/nether.json | 6 + .../worldgen/biome/is_sparse/overworld.json | 6 + .../forge/tags/worldgen/biome/is_spooky.json | 6 + .../forge/tags/worldgen/biome/is_swamp.json | 6 + .../tags/worldgen/biome/is_underground.json | 6 + .../forge/tags/worldgen/biome/is_water.json | 7 + .../tags/worldgen/biome/is_wet/nether.json | 6 + .../tags/worldgen/biome/is_wet/overworld.json | 7 + .../tags/blocks/azalea_root_replaceable.json | 7 + .../tags/blocks/enderman_holdable.json | 12 + .../minecraft/tags/blocks/fence_gates.json | 9 + .../data/minecraft/tags/blocks/fences.json | 9 + .../minecraft/tags/blocks/flower_pots.json | 13 + .../tags/blocks/guarded_by_piglins.json | 8 + .../data/minecraft/tags/blocks/leaves.json | 8 + .../data/minecraft/tags/blocks/logs.json | 9 + .../minecraft/tags/blocks/logs_that_burn.json | 8 + .../minecraft/tags/blocks/mineable/axe.json | 10 + .../minecraft/tags/blocks/mineable/hoe.json | 9 + .../tags/blocks/mineable/pickaxe.json | 131 ++ .../tags/blocks/mineable/shovel.json | 9 + .../tags/blocks/mushroom_grow_block.json | 6 + .../tags/blocks/needs_diamond_tool.json | 8 + .../tags/blocks/needs_iron_tool.json | 20 + .../tags/blocks/needs_stone_tool.json | 27 + .../tags/blocks/non_flammable_wood.json | 20 + .../data/minecraft/tags/blocks/nylium.json | 6 + .../data/minecraft/tags/blocks/planks.json | 9 + .../data/minecraft/tags/blocks/sand.json | 10 + .../data/minecraft/tags/blocks/saplings.json | 8 + .../data/minecraft/tags/blocks/slabs.json | 37 + .../minecraft/tags/blocks/small_flowers.json | 8 + .../data/minecraft/tags/blocks/stairs.json | 40 + .../minecraft/tags/blocks/standing_signs.json | 9 + .../minecraft/tags/blocks/wall_signs.json | 9 + .../data/minecraft/tags/blocks/walls.json | 31 + .../minecraft/tags/blocks/wooden_buttons.json | 9 + .../minecraft/tags/blocks/wooden_doors.json | 9 + .../minecraft/tags/blocks/wooden_fences.json | 9 + .../tags/blocks/wooden_pressure_plates.json | 9 + .../minecraft/tags/blocks/wooden_slabs.json | 9 + .../minecraft/tags/blocks/wooden_stairs.json | 9 + .../tags/blocks/wooden_trapdoors.json | 9 + .../data/minecraft/tags/items/boats.json | 8 + .../minecraft/tags/items/chest_boats.json | 8 + .../minecraft/tags/items/fence_gates.json | 9 + .../data/minecraft/tags/items/fences.json | 9 + .../data/minecraft/tags/items/leaves.json | 8 + .../data/minecraft/tags/items/logs.json | 9 + .../minecraft/tags/items/logs_that_burn.json | 8 + .../tags/items/non_flammable_wood.json | 19 + .../minecraft/tags/items/piglin_loved.json | 10 + .../data/minecraft/tags/items/planks.json | 9 + .../data/minecraft/tags/items/sand.json | 10 + .../data/minecraft/tags/items/saplings.json | 8 + .../data/minecraft/tags/items/signs.json | 9 + .../data/minecraft/tags/items/slabs.json | 37 + .../minecraft/tags/items/small_flowers.json | 8 + .../data/minecraft/tags/items/stairs.json | 40 + .../data/minecraft/tags/items/walls.json | 31 + .../minecraft/tags/items/wooden_buttons.json | 9 + .../minecraft/tags/items/wooden_doors.json | 9 + .../minecraft/tags/items/wooden_fences.json | 9 + .../tags/items/wooden_pressure_plates.json | 9 + .../minecraft/tags/items/wooden_slabs.json | 9 + .../minecraft/tags/items/wooden_stairs.json | 9 + .../tags/items/wooden_trapdoors.json | 9 + .../acquirable_job_site.json | 14 + .../biome/has_structure/bastion_remnant.json | 7 + .../biome/has_structure/mineshaft.json | 8 + .../biome/has_structure/mineshaft_mesa.json | 7 + .../biome/has_structure/nether_fossil.json | 6 + .../biome/has_structure/pillager_outpost.json | 11 + .../has_structure/ruined_portal_desert.json | 7 + .../has_structure/ruined_portal_swamp.json | 6 + .../biome/has_structure/stronghold.json | 18 + .../biome/has_structure/swamp_hut.json | 6 + .../biome/has_structure/village_plains.json | 6 + .../tags/worldgen/biome/is_beach.json | 7 + .../tags/worldgen/biome/is_deep_ocean.json | 7 + .../tags/worldgen/biome/is_forest.json | 6 + .../tags/worldgen/biome/is_hill.json | 6 + .../tags/worldgen/biome/is_nether.json | 8 + .../tags/worldgen/biome/is_ocean.json | 7 + src/main/resources/emeraldcraft.mixins.json | 36 + src/main/resources/logo.png | Bin 0 -> 24964 bytes src/main/resources/pack.mcmeta | 8 + 2986 files changed, 70256 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/EmeraldCraft.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/api/camp/CampType.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/api/camp/CampTypes.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/api/codec/APIEnumCodec.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/api/continuous_miner/ContinuousMinerCustomLoot.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/api/fluid/FluidType.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/api/fluid/FluidTypes.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/api/package-info.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/api/tradable/ITradableDataFactory.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/MapCustomIcons.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/HerringModel.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/MantaModel.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/NetherLambmanModel.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/NetherPigmanModel.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/PiglinCuteyModel.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/PurpleSpottedBigeyeModel.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/models/WraithModel.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/renderers/ECBoatRenderer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/renderers/HerringRenderer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/renderers/MantaRenderer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/renderers/NetherLambmanRenderer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/renderers/NetherPigmanRenderer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/renderers/PiglinCuteyRenderer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/renderers/PurpleSpottedBigeyeRenderer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/renderers/WraithRenderer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/screens/CarpentryTableScreen.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/screens/ContinuousMinerScreen.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/screens/GlassKilnScreen.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/screens/IceMakerScreen.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/screens/MelterScreen.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/screens/MineralTableScreen.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/client/screens/PiglinCuteyMerchantScreen.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/ModVanillaCompat.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/nylium/PurpuraceusNyliumBlock.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/plant/ChiliBlock.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/blocks/plant/HiganBanaFlowerBlock.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/config/ECCommonConfig.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/GlassKilnRecipe.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/MelterRecipe.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/TradeShadowRecipe.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/cache/CachedRecipeList.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/cache/IListRecipe.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/ModsLoadedEventSubscriber.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/create/CreateFluidTypes.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/example/EmeraldCraftContinuousMinerBlocks.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/immersive_engineering/IEFluidTypes.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/CarpentryTableRecipeCategory.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/GlassKilnRecipeCategory.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/IceMakerRecipeCategory.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/JEIHelper.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/MelterRecipeCategory.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/MineralTableRecipeCategory.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/VillagerTradeCategory.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/package-info.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/CarpentryTableMenu.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/ContinuousMinerMenu.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/GlassKilnMenu.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/IceMakerMenu.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/MelterMenu.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/MineralTableMenu.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/PiglinCuteyMerchantMenu.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/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/crafting/serializer/TradeShadowRecipeSerializer.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/dispenser/ECBoatDispenseItemBehaviour.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/entities/ECBoat.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/entities/ECChestBoat.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/entities/IECBoat.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/entities/ai/MantaAi.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/entities/goals/OfferFlowerToPlayerGoal.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/HerringEntity.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/MantaEntity.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/NetherLambmanEntity.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/NetherPigmanEntity.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyData.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyDataHolder.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyEntity.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PlayerRideableFlying.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PurpleSpottedBigeyeEntity.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/WraithEntity.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/items/BottleFoodItem.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/items/ChorusFlowerEggdropSoupItem.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/items/ECBoatItem.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/items/StickFoodItem.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBannerPatterns.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomeKeys.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomeTags.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/ECBrewingRecipes.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/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/ECEntityActionPacketActions.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/ECLootModifiers.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECMapDecorationTypes.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECPlacedFeatures.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECPlacementModifierType.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECPotions.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECProperties.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipeBookTypes.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/ECStructureKeys.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructurePieceTypes.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureSetKeys.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureSets.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureTags.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureTypes.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/ECTriggers.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECVillagePlacedFeatures.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/register/ECWoodType.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/util/BiomeUtil.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/util/Convertible.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/util/ListAppendable.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/util/PlayerHealable.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/util/RegistryHelper.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/util/TradeUtil.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/util/Vec3Util.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/util/placement_modifiers/AboveHeightmapFilter.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/util/triggers/CuredPhantomTrigger.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/util/triggers/CuredZombifiedPiglinTrigger.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/util/triggers/PiglinCuteyTrigger.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/ECBiomeModifiers.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/ECOverworldBiomeBuilder.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/ECProcessorLists.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/VolcanicCavesLavaPoolFeature.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/compat/ECNetherBiomeRegion.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/compat/ECOverworldBiomeRegion.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/grower/GinkgoTreeGrower.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/grower/PalmTreeGrower.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/grower/PeachTreeGrower.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/pools/SwampVillagePools.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/camp/CampFeature.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/camp/CampPieces.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/entrenchment/EntrenchmentFeature.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/entrenchment/EntrenchmentPieces.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/shelter/ShelterFeature.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/shelter/ShelterPieces.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/ECSurfaceRules.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/village/ECTrades.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/common/world/village/Villages.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/AbstractPiglinEntityMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/AbstractSkeletonMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/BlockEntityTypeAccess.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/ClientPacketListenerMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/HeroGiftsTaskAccess.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/IronGolemEntityMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/LocalPlayerMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/MapDecorationTypeMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/MapInstanceMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/MapItemSavedDataMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/MobEntityMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/PhantomEntityMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/PiglinAiMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/PiglinBruteAiMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/PiglinSpecificSensorMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/RecipeManagerAccess.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/ServerPlayNetHandlerMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/ServerPlayerMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/ServerboundPlayerCommandPacketActionMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/SingleJigsawAccess.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/StructureSetMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/VillagePoolsMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/WorkAtPoiMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/ZombieEntityMixin.java create mode 100644 src/main/java/com/hexagram2021/emeraldcraft/mixin/ZombifiedPiglinEntityMixin.java create mode 100644 src/main/resources/META-INF/accesstransformer.cfg create mode 100644 src/main/resources/META-INF/mods.toml create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/aluminum_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/aluminum_wall.json 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/chili.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/constantan_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/constantan_wall.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_dark_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/cut_dark_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/cyan_petunia.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/dark_sand.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_wall.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/electrum_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/electrum_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/ginkgo_button.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/ginkgo_door.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/ginkgo_fence.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/ginkgo_fence_gate.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/ginkgo_leaves.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/ginkgo_log.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/ginkgo_planks.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/ginkgo_pressure_plate.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/ginkgo_sapling.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/ginkgo_sign.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/ginkgo_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/ginkgo_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/ginkgo_trapdoor.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/ginkgo_wall_sign.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/ginkgo_wood.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/higan_bana.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/lead_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/lead_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/magenta_petunia.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/nickel_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/nickel_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/palm_button.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/palm_door.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/palm_fence.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/palm_fence_gate.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/palm_leaves.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/palm_log.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/palm_planks.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/palm_pressure_plate.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/palm_sapling.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/palm_sign.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/palm_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/palm_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/palm_trapdoor.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/palm_wall_sign.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/palm_wood.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/peach_button.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/peach_door.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/peach_fence.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/peach_fence_gate.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/peach_leaves.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/peach_log.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/peach_planks.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/peach_pressure_plate.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/peach_sapling.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/peach_sign.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/peach_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/peach_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/peach_trapdoor.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/peach_wall_sign.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/peach_wood.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/potted_cyan_petunia.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/potted_ginkgo_sapling.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/potted_higan_bana.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/potted_magenta_petunia.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/potted_palm_sapling.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/potted_peach_sapling.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/potted_purpuraceus_fungus.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/potted_purpuraceus_roots.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purple_nether_brick_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purple_nether_brick_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purple_nether_brick_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purple_nether_bricks.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_button.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_door.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_fence.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_fence_gate.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_fungus.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_hyphae.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_nylium.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_planks.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_pressure_plate.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_roots.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_sign.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_stem.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_trapdoor.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_wall_sign.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_wart_block.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/silver_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/silver_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_dark_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_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/steel_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/steel_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/stripped_ginkgo_log.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/stripped_ginkgo_wood.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/stripped_palm_log.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/stripped_palm_wood.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/stripped_peach_log.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/stripped_peach_wood.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/stripped_purpuraceus_hyphae.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/stripped_purpuraceus_stem.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/uranium_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/uranium_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/vitrified_sand.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/blockstates/zinc_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/zinc_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/blockstates/zinc_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/lang/en_gb.json create mode 100644 src/main/resources/assets/emeraldcraft/lang/en_ud.json create mode 100644 src/main/resources/assets/emeraldcraft/lang/en_us.json create mode 100644 src/main/resources/assets/emeraldcraft/lang/ja_jp.json create mode 100644 src/main/resources/assets/emeraldcraft/lang/ru_ru.json create mode 100644 src/main/resources/assets/emeraldcraft/lang/zh_cn.json create mode 100644 src/main/resources/assets/emeraldcraft/lang/zh_tw.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/aluminum_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/aluminum_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/aluminum_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/aluminum_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/aluminum_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/aluminum_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/aluminum_wall_side_tall.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/chili_stage0.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/chili_stage1.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/chili_stage2.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/chili_stage3.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/constantan_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/constantan_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/constantan_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/constantan_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/constantan_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/constantan_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/constantan_wall_side_tall.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_dark_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/cut_dark_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/cyan_petunia.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/dark_sand.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/dark_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_side_tall.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/electrum_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/electrum_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/electrum_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/electrum_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/electrum_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/electrum_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/electrum_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/ginkgo_button.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_button_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_button_pressed.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_left.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_left_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_right.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_right_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_left.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_left_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_right.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_right_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_wall_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_leaves.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_log.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_log_horizontal.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_planks.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_pressure_plate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_pressure_plate_down.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_sapling.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_sign.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_bottom.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/ginkgo_wood.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/higan_bana.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/higan_bana_no_leaf.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/lead_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/lead_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/lead_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/lead_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/lead_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/lead_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/lead_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/magenta_petunia.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/nickel_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/nickel_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/nickel_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/nickel_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/nickel_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/nickel_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/nickel_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_button.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_button_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_button_pressed.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_door_bottom_left.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_door_bottom_left_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_door_bottom_right.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_door_bottom_right_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_door_top_left.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_door_top_left_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_door_top_right.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_door_top_right_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_fence_gate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_fence_gate_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_fence_gate_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_fence_gate_wall_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_fence_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_fence_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_fence_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_leaves.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_log.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_log_horizontal.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_planks.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_pressure_plate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_pressure_plate_down.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_sapling.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_sign.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_trapdoor_bottom.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_trapdoor_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_trapdoor_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/palm_wood.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_button.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_button_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_button_pressed.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_door_bottom_left.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_door_bottom_left_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_door_bottom_right.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_door_bottom_right_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_door_top_left.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_door_top_left_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_door_top_right.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_door_top_right_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_fence_gate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_fence_gate_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_fence_gate_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_fence_gate_wall_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_fence_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_fence_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_fence_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_leaves.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_log.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_log_horizontal.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_planks.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_pressure_plate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_pressure_plate_down.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_sapling.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_sign.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_trapdoor_bottom.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_trapdoor_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_trapdoor_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/peach_wood.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/potted_cyan_petunia.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/potted_ginkgo_sapling.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/potted_higan_bana.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/potted_magenta_petunia.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/potted_palm_sapling.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/potted_peach_sapling.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/potted_purpuraceus_fungus.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/potted_purpuraceus_roots.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purple_nether_bricks.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_button.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_button_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_button_pressed.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_bottom_left.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_bottom_left_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_bottom_right.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_bottom_right_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_top_left.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_top_left_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_top_right.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_top_right_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_gate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_gate_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_gate_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_gate_wall_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fungus.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_hyphae.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_nylium.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_planks.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_pressure_plate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_pressure_plate_down.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_roots.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_sign.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_stem.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_trapdoor_bottom.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_trapdoor_open.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_trapdoor_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/purpuraceus_wart_block.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/silver_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/silver_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/silver_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/silver_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/silver_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/silver_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/silver_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_dark_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/smooth_dark_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/steel_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/steel_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/steel_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/steel_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/steel_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/steel_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/steel_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_log.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_log_horizontal.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_wood.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/stripped_palm_log.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/stripped_palm_log_horizontal.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/stripped_palm_wood.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/stripped_peach_log.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/stripped_peach_log_horizontal.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/stripped_peach_wood.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/stripped_purpuraceus_hyphae.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/stripped_purpuraceus_stem.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/uranium_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/uranium_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/uranium_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/uranium_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/uranium_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/uranium_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/uranium_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/vitrified_sand.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/block/zinc_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/zinc_slab_top.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/zinc_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/zinc_stairs_inner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/zinc_stairs_outer.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/zinc_wall_inventory.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/zinc_wall_post.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/zinc_wall_side.json create mode 100644 src/main/resources/assets/emeraldcraft/models/block/zinc_wall_side_tall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/agate_apple.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/aluminum_concentrate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/aluminum_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/aluminum_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/apple_juice.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/beef_and_potato_stew.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/beetroot_juice.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/bigeye_bucket.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/bigeye_spawn_egg.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/boiled_egg.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/braised_chicken.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/caramelized_potato.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/carpentry_table.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/carrot_juice.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/chili.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/chili_seed.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/chorus_flower_eggdrop_soup.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/constantan_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/constantan_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/continuous_miner.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/cooked_herring.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/cooked_purple_spotted_bigeye.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/cooked_purpuraceus_fungus.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/cooked_sausage.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/cooked_tropical_fish.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_dark_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/cut_dark_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/cyan_petunia.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/dark_sand.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/dark_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_wall.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/electrum_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/electrum_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/ginkgo_boat.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ginkgo_button.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ginkgo_chest_boat.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ginkgo_door.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ginkgo_fence.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ginkgo_fence_gate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ginkgo_leaves.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ginkgo_log.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ginkgo_nut.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ginkgo_planks.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ginkgo_pressure_plate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ginkgo_sapling.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ginkgo_sign.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ginkgo_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ginkgo_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ginkgo_trapdoor.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/ginkgo_wood.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/glass_kiln.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/gluten.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/golden_peach.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/herring.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/herring_bucket.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/herring_spawn_egg.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/higan_bana.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/lead_concentrate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/lead_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/lead_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/magenta_petunia.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/manta_spawn_egg.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/melon_juice.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/melted_aluminum_bucket.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/melted_lead_bucket.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/melted_nickel_bucket.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/melted_silver_bucket.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/melted_uranium_bucket.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/melted_zinc_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/nickel_concentrate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/nickel_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/nickel_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_boat.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_button.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_chest_boat.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_door.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_fence.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_fence_gate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_leaves.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_log.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_nut.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_planks.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_pressure_plate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_sapling.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_sign.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_trapdoor.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/palm_wood.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_boat.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_button.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_chest_boat.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_door.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_fence.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_fence_gate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_juice.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_leaves.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_log.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_planks.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_pressure_plate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_sapling.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_sign.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_trapdoor.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/peach_wood.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/potion_cookie.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/pumpkin_juice.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purple_nether_brick_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purple_nether_brick_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purple_nether_brick_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purple_nether_bricks.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purple_spotted_bigeye.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purpuraceus_button.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purpuraceus_door.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purpuraceus_fence.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purpuraceus_fence_gate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purpuraceus_fungus.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purpuraceus_hyphae.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purpuraceus_nylium.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purpuraceus_planks.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purpuraceus_pressure_plate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purpuraceus_roots.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purpuraceus_sign.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purpuraceus_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purpuraceus_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purpuraceus_stem.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purpuraceus_trapdoor.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/purpuraceus_wart_block.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/rougamo.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/sausage.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/silver_concentrate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/silver_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/silver_wall.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_dark_sandstone.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/smooth_dark_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/steel_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/steel_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/stir_fried_warden_heart.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/stripped_ginkgo_log.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/stripped_ginkgo_wood.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/stripped_palm_log.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/stripped_palm_wood.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/stripped_peach_log.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/stripped_peach_wood.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/stripped_purpuraceus_hyphae.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/stripped_purpuraceus_stem.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/uranium_concentrate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/uranium_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/uranium_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/vitrified_sand.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/warden_heart.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/models/item/wraith_spawn_egg.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/zinc_concentrate.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/zinc_slab.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/zinc_stairs.json create mode 100644 src/main/resources/assets/emeraldcraft/models/item/zinc_wall.json create mode 100644 src/main/resources/assets/emeraldcraft/sounds.json create mode 100644 src/main/resources/assets/emeraldcraft/sounds/fish/flop1.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/fish/flop2.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/fish/flop3.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/fish/flop4.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/fish/hurt1.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/fish/hurt2.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/fish/hurt3.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/fish/hurt4.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/flower/drop_leaves1.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/flower/drop_leaves2.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/flower/drop_leaves3.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/manta/ambient1.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/manta/ambient2.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/manta/hurt1.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/manta/hurt2.ogg 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/sounds/wraith/ambient.ogg create mode 100644 src/main/resources/assets/emeraldcraft/sounds/wraith/hurt.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/chili_stage0.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/chili_stage1.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/chili_stage2.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/chili_stage3.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_dark_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/cyan_petunia.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/dark_sand.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone_bottom.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone_top.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/ginkgo_door_bottom.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/ginkgo_door_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/ginkgo_leaves.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/ginkgo_log.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/ginkgo_log_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/ginkgo_planks.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/ginkgo_sapling.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/ginkgo_trapdoor.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/higan_bana.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/higan_bana_no_leaf.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/magenta_petunia.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/palm_door_bottom.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/palm_door_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/palm_leaves.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/palm_log.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/palm_log_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/palm_planks.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/palm_sapling.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/palm_trapdoor.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/peach_door_bottom.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/peach_door_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/peach_leaves.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/peach_log.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/peach_log_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/peach_planks.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/peach_sapling.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/peach_trapdoor.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/purple_nether_bricks.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_door_bottom.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_door_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_fungus.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_nylium.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_nylium_side.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_planks.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_roots.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_roots_pot.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_stem.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_stem_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_trapdoor.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_wart_block.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/stripped_ginkgo_log.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/stripped_ginkgo_log_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/stripped_palm_log.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/stripped_palm_log_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/stripped_peach_log.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/stripped_peach_log_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/stripped_purpuraceus_stem.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/stripped_purpuraceus_stem_top.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/block/vitrified_sand.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/banner/bee.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/banner/bottle.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/banner/potion.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/banner/snow.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/boat/ginkgo.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/boat/palm.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/boat/peach.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/chest_boat/ginkgo.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/chest_boat/palm.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/chest_boat/peach.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/fishes/herring.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/fishes/purple_spotted_bigeye.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/manta/manta.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/shield/bee.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/shield/bottle.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/shield/potion.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/entity/shield/snow.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/wraith/wraith.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/gui/villager_trade.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/agate_apple.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/aluminum_concentrate.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/apple_juice.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/banner_pattern.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/beef_and_potato_stew.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/beetroot_juice.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/bigeye_bucket.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/boiled_egg.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/braised_chicken.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/caramelized_potato.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/carrot_juice.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/chili.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/chili_seed.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/chorus_flower_eggdrop_soup.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/cooked_herring.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/cooked_purple_spotted_bigeye.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/cooked_purpuraceus_fungus.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/cooked_sausage.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/cooked_tropical_fish.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/ginkgo_boat.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/ginkgo_chest_boat.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/ginkgo_door.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/ginkgo_nut.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/ginkgo_sign.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/gluten.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/gold_concentrate.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/golden_peach.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/herring.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/herring_bucket.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/lead_concentrate.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/melon_juice.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/melted_aluminum_bucket.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/melted_lead_bucket.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/melted_nickel_bucket.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/melted_silver_bucket.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/melted_uranium_bucket.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/melted_zinc_bucket.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/nickel_concentrate.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/palm_boat.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/palm_chest_boat.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/palm_door.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/palm_sign.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/peach.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/peach_boat.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/peach_chest_boat.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/peach_door.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/peach_juice.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/peach_sign.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/pumpkin_juice.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/purple_spotted_bigeye.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/purpuraceus_door.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/purpuraceus_sign.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/rougamo.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/sausage.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/silver_concentrate.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/stir_fried_warden_heart.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/uranium_concentrate.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/warden_heart.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/warped_wart.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/item/zinc_concentrate.png create mode 100644 src/main/resources/assets/emeraldcraft/textures/map/map_icons.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/assets/minecraft/textures/entity/signs/ec_ginkgo.png create mode 100644 src/main/resources/assets/minecraft/textures/entity/signs/ec_palm.png create mode 100644 src/main/resources/assets/minecraft/textures/entity/signs/ec_peach.png create mode 100644 src/main/resources/assets/minecraft/textures/entity/signs/ec_purpuraceus.png create mode 100644 src/main/resources/data/emeraldcraft/advancements/emeraldcraft/a_horrible_entrenchment.json create mode 100644 src/main/resources/data/emeraldcraft/advancements/emeraldcraft/cure_phantom.json create mode 100644 src/main/resources/data/emeraldcraft/advancements/emeraldcraft/cure_zombified_piglin.json create mode 100644 src/main/resources/data/emeraldcraft/advancements/emeraldcraft/friend_from_the_nether.json 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/hotter_topic.json create mode 100644 src/main/resources/data/emeraldcraft/advancements/emeraldcraft/ice_cream_please.json create mode 100644 src/main/resources/data/emeraldcraft/advancements/emeraldcraft/more_effective_craft.json create mode 100644 src/main/resources/data/emeraldcraft/advancements/emeraldcraft/noisy_guy.json create mode 100644 src/main/resources/data/emeraldcraft/advancements/emeraldcraft/root.json create mode 100644 src/main/resources/data/emeraldcraft/advancements/emeraldcraft/surely_see_each_other_again.json create mode 100644 src/main/resources/data/emeraldcraft/forge/biome_modifier/ec_higan_bana.json create mode 100644 src/main/resources/data/emeraldcraft/loot_modifiers/warden_heart_from_warden.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/aluminum_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/aluminum_wall.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/chili.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/constantan_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/constantan_wall.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_dark_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_dark_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/cyan_petunia.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sand.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_wall.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/electrum_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/electrum_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/ginkgo_button.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_door.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_fence.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_fence_gate.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_leaves.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_log.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_planks.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_pressure_plate.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_sapling.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_sign.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_trapdoor.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_wall_sign.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_wood.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/higan_bana.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/lead_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/lead_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/magenta_petunia.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/nickel_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/nickel_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_button.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_door.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_fence.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_fence_gate.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_leaves.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_log.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_planks.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_pressure_plate.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_sapling.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_sign.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_trapdoor.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_wall_sign.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_wood.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_button.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_door.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_fence.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_fence_gate.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_leaves.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_log.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_planks.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_pressure_plate.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_sapling.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_sign.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_trapdoor.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_wall_sign.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_wood.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_cyan_petunia.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_ginkgo_sapling.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_higan_bana.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_magenta_petunia.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_palm_sapling.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_peach_sapling.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_purpuraceus_fungus.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purple_nether_brick_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purple_nether_brick_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purple_nether_brick_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purple_nether_bricks.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_button.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_door.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_fence.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_fence_gate.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_fungus.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_hyphae.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_nylium.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_planks.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_pressure_plate.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_roots.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_sign.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_stem.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_trapdoor.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_wall_sign.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_wart_block.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/silver_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/silver_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_dark_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_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/steel_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/steel_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_ginkgo_log.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_ginkgo_wood.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_palm_log.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_palm_wood.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_peach_log.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_peach_wood.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_purpuraceus_hyphae.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_purpuraceus_stem.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/uranium_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/uranium_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/vitrified_sand.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/blocks/zinc_slab.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/zinc_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/blocks/zinc_wall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/chests/camp.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/entrenchment/chest_hallway.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/chests/entrenchment/hall.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/chests/entrenchment/prison.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/chests/entrenchment/start.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/chests/village/village_astrologist.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/chests/village/village_glazier.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/chests/village/village_miner.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/chests/village/village_swamp_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/fishing.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/purpuraceus_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/dirt.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/ginkgo_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/mangrove_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/palm_logs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/peach_logs.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/purpuraceus_stems.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/entities/herring.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/entities/nether_lambman.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/entities/nether_pigman.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/entities/piglin_cutey.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/entities/purple_spotted_bigeye.json create mode 100644 src/main/resources/data/emeraldcraft/loot_tables/entities/wraith.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/campfire/boiled_egg_from_campfire_cooking.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/campfire/cooked_herring_from_campfire_cooking.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/campfire/cooked_purple_spotted_bigeye_from_campfire_cooking.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/campfire/cooked_purpuraceus_fungus_from_campfire_cooking.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/campfire/cooked_sausage_from_campfire_cooking.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/campfire/cooked_tropical_fish_from_campfire_cooking.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/barrel_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/birch_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/birch_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/birch_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/birch_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/birch_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/birch_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/birch_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/birch_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/birch_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/birch_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/birch_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/birch_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/bowl_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/chest_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/crafting_table_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_hyphae_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/oak_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/oak_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/oak_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/oak_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/oak_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/oak_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/oak_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/oak_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/oak_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/oak_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/oak_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/oak_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/palm_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/palm_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/palm_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/palm_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/palm_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/palm_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/palm_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/palm_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/palm_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/palm_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/palm_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/palm_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/peach_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/peach_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/peach_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/peach_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/peach_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/peach_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/peach_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/peach_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/peach_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/peach_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/peach_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/peach_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_hyphae_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stick_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_acacia_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_acacia_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_birch_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_birch_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_crimson_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_crimson_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_dark_oak_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_dark_oak_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_ginkgo_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_ginkgo_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_jungle_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_jungle_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_oak_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_oak_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_palm_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_palm_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_peach_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_peach_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_purpuraceus_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_purpuraceus_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_spruce_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_spruce_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_warped_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_warped_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/warped_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/warped_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/warped_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/warped_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/warped_hyphae_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/warped_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/warped_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/warped_sign_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/warped_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/warped_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/carpentry/warped_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_nether_brick_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_hyphae_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_hyphae_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_aspen_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_aspen_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_baobab_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_baobab_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_blue_enchanted_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_blue_enchanted_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_bulbis_stem_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_bulbis_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cherry_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cherry_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cika_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cika_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cypress_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cypress_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_ebony_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_ebony_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_embur_hyphae_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_embur_pedu_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_ether_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_ether_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_fir_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_fir_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_green_enchanted_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_green_enchanted_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_holly_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_holly_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_jacaranda_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_jacaranda_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_lament_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_lament_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_mahogany_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_mahogany_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_mangrove_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_mangrove_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_maple_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_maple_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_nightshade_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_nightshade_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_palm_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_palm_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_palo_verde_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_palo_verde_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_pine_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_pine_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_rainbow_eucalyptus_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_rainbow_eucalyptus_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_redwood_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_redwood_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_skyris_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_skyris_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_sythian_hyphae_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_sythian_stem_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_willow_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_willow_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_witch_hazel_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_witch_hazel_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_zelkova_log_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_zelkova_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_hyphae_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/yellow_nether_brick.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_boat_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_button_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_door_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_fence_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_fence_gate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_planks_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_pressure_plate_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_slab_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_stairs_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_trapdoor_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_wood_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/copper_nugget_from_dark_sand_splashing.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/crying_obsidian_from_haunting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/cyan_dye_from_cyan_petunia_milling.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/emerald_nugget_from_jadeite_sand_splashing.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/glass_from_vitrified_sand_splashing.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/lapis_nugget_from_azure_sand_splashing.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/magenta_dye_from_magenta_petunia_milling.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/melted_zinc_from_zinc_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/melted_zinc_from_zinc_concentrate_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/purple_dye_from_higan_bana_milling.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_block_from_zinc_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_concentrate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_slab_from_zinc_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_stairs_from_zinc_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_wall_from_zinc_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_block_from_aluminum_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_concentrate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_stairs_from_aluminum_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_wall_from_aluminum_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/constantan_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/constantan_stairs_from_constantan_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/constantan_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/constantan_wall_from_constantan_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/electrum_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/electrum_stairs_from_electrum_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/electrum_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/electrum_wall_from_electrum_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_block_from_lead_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_concentrate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_stairs_from_lead_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_wall_from_lead_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_aluminum_from_aluminum_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_aluminum_from_aluminum_concentrate_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_lead_from_lead_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_lead_from_lead_concentrate_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_nickel_from_nickel_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_nickel_from_nickel_concentrate_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_silver_from_silver_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_silver_from_silver_concentrate_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_uranium_from_uranium_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_uranium_from_uranium_concentrate_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_block_from_nickel_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_concentrate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_stairs_from_nickel_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_wall_from_nickel_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_block_from_silver_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_concentrate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_stairs_from_silver_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_wall_from_silver_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/steel_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/steel_stairs_from_steel_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/steel_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/steel_wall_from_steel_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_block_from_uranium_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_concentrate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_stairs_from_uranium_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_wall_from_uranium_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/quark/acacia_chest_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/quark/birch_chest_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/quark/crimson_chest_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/quark/dark_oak_chest_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/quark/jungle_chest_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/quark/oak_chest_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/quark/spruce_chest_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/compat/quark/warped_chest_from_carpentry.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/agate_apple.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sand.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_bricks.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/carpentry_table.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/continuous_miner.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/copper_concentrate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crystalball_table.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_azure_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_azure_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_dark_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_dark_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_emery_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_emery_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_jadeite_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_jadeite_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_quartz_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_quartz_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sand.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_from_nuggets.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_chest.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_feet.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_from_nuggets.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_head.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_legs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sand.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_boat.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_door.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_fence.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_fence_gate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_pressure_plate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_sign.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_trapdoor.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_wood.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/glass_kiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_concentrate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/golden_peach.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_concentrate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jade_apple.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sand.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_chest.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_feet.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_head.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_lazuli_from_nuggets.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_legs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/mineral_table.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_boat.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_door.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_fence.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_fence_gate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_pressure_plate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_sign.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_trapdoor.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_wood.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_boat.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_door.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_fence.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_fence_gate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_pressure_plate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_sign.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_trapdoor.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_wood.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/potion_cookie.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_door.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_fence.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_fence_gate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_hyphae.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_pressure_plate.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_sign.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_trapdoor.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sand.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/rock_breaker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_azure_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_azure_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_dark_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_dark_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_emery_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_emery_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_jadeite_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_jadeite_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_quartz_sandstone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_quartz_sandstone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/squeezer.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_ginkgo_wood.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_palm_wood.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_peach_wood.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_purpuraceus_hyphae.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_slab.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_stairs.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_wall.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_wart_block.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/apple_juice.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/azure_sand_shapeless.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/beef_and_potato_stew.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/beetroot_juice.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/braised_chicken.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/caramelized_potato.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/carrot_juice.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/chili_seed.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/chorus_flower_eggdrop_soup.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/crimson_cobblestone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/crimson_stone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/cyan_dye_from_cyan_petunia.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/dark_sand_shapeless.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/diamond_nugget.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/emerald_nugget.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/emery_sand_shapeless.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_button.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_chest_boat.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_planks.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/gluten.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/jadeite_sand_shapeless.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/lapis_nugget.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/magenta_dye_from_magenta_petunia.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/melon_juice.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/palm_button.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/palm_chest_boat.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/palm_planks.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/peach_button.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/peach_chest_boat.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/peach_juice.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/peach_planks.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/pumpkin_juice.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/purple_dye_from_higan_bana.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/purpuraceus_button.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/purpuraceus_planks.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/quartz_sand_shapeless.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/rougamo.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/sausage.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/stir_fried_warden_heart.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/warped_cobblestone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/warped_stone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/black_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/blue_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/brick_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/brown_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/cyan_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/glass_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/gray_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/green_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/light_blue_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/light_gray_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/lime_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/magenta_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/nether_brick_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/orange_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/pink_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/purple_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/red_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/white_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/glasskiln/yellow_glazed_terracotta_from_glasskiln.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/ice_maker/copper_block_from_copper_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/ice_maker/emerald_block_from_emerald_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/ice_maker/gold_block_from_gold_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/ice_maker/ice_from_water_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/ice_maker/iron_block_from_iron_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/ice_maker/obsidian_from_lava_fluid_ice_maker.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_blackstone_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_cobblestone_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_magma_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_magma_cream_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_copper_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_copper_concentrate_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_cut_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_exposed_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_exposed_cut_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_oxidized_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_oxidized_cut_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_copper_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_cut_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_exposed_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_exposed_cut_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_oxidized_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_oxidized_cut_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_weathered_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_weathered_cut_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_weathered_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_weathered_cut_copper_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_emerald_from_emerald_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_gold_from_gold_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_gold_from_gold_concentrate_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_iron_from_iron_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/melted_iron_from_iron_concentrate_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_ice_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_snow_block_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_snowball_melter.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/mineraltable/blaze_powder_from_mineraltable.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/mineraltable/diamond_nugget_from_mineraltable.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/mineraltable/emerald_nugget_from_mineraltable.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/mineraltable/gold_nugget_from_mineraltable.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/mineraltable/iron_nugget_from_mineraltable.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/mineraltable/lapis_nugget_from_mineraltable.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smelting/boiled_egg.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smelting/cooked_herring.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smelting/cooked_purple_spotted_bigeye.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smelting/cooked_purpuraceus_fungus.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smelting/cooked_sausage.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smelting/cooked_tropical_fish.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smelting/smooth_azure_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smelting/smooth_dark_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smelting/smooth_emery_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smelting/smooth_jadeite_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smelting/smooth_quartz_sandstone.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smoking/boiled_egg_from_smoking.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smoking/cooked_herring_from_smoking.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smoking/cooked_purple_spotted_bigeye_from_smoking.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smoking/cooked_purpuraceus_fungus_from_smoking.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smoking/cooked_sausage_from_smoking.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/smoking/cooked_tropical_fish_from_smoking.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_slab_from_azure_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_stairs_from_azure_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_wall_from_azure_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_slab_from_red_nether_bricks_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_stairs_from_red_nether_bricks_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_wall_from_red_nether_bricks_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_slab_from_crimson_cobblestone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_stairs_from_crimson_cobblestone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_wall_from_crimson_cobblestone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_slab_from_crimson_stone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_stairs_from_crimson_stone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_wall_from_crimson_stone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_from_azure_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_slab_from_azure_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_slab_from_cut_azure_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_from_emery_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_slab_from_cut_emery_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_slab_from_emery_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_from_jadeite_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_slab_from_cut_jadeite_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_slab_from_jadeite_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_from_quartz_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_slab_from_cut_quartz_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_slab_from_quartz_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_slab_from_diamond_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_stairs_from_diamond_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_wall_from_diamond_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_slab_from_emerald_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_stairs_from_emerald_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_wall_from_emerald_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_slab_from_emery_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_stairs_from_emery_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_wall_from_emery_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_slab_from_gold_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_stairs_from_gold_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_wall_from_gold_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_slab_from_iron_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_stairs_from_iron_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_wall_from_iron_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_slab_from_jadeite_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_stairs_from_jadeite_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_wall_from_jadeite_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_slab_from_lapis_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_stairs_from_lapis_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_wall_from_lapis_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_slab_from_netherite_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_stairs_from_netherite_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_wall_from_netherite_block_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_slab_from_quartz_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_stairs_from_quartz_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_wall_from_quartz_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_azure_sandstone_slab_from_smooth_azure_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_azure_sandstone_stairs_from_smooth_azure_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_emery_sandstone_slab_from_smooth_emery_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_emery_sandstone_stairs_from_smooth_emery_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_jadeite_sandstone_slab_from_smooth_jadeite_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_jadeite_sandstone_stairs_from_smooth_jadeite_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_quartz_sandstone_slab_from_smooth_quartz_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_quartz_sandstone_stairs_from_smooth_quartz_sandstone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_slab_from_warped_cobblestone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_stairs_from_warped_cobblestone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_wall_from_warped_cobblestone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_slab_from_warped_stone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_stairs_from_warped_stone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_wall_from_warped_stone_stonecutting.json create mode 100644 src/main/resources/data/emeraldcraft/structures/camp/badlands_camp.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/camp/birch_camp.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/camp/desert_camp.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/camp/jungle_camp.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/camp/plains_camp.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/camp/savanna_camp.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/camp/snow_camp.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/camp/stony_camp.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/camp/swamp_camp.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/camp/taiga_camp.nbt 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/emeraldcraft/structures/village/plains/houses/plains_carpentry_house_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_accessory_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_animal_pen_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_animal_pen_2.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_animal_pen_3.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_armorer_house_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_astrologist_house_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_big_house_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_butcher_shop_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_carpenter_house_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_cartographer_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_fisher_cottage_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_fletcher_house_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_glazier_house_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_icer_house_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_large_farm_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_library_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_masons_house_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_medium_house_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_medium_house_2.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_meeting_point_4.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_meeting_point_5.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_miner_house_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_farm_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_2.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_3.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_4.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_5.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_6.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_7.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_8.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_tannery_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_temple_3.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_tool_smith_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_weaponsmith_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/streets/corner_01.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/streets/corner_02.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/streets/corner_03.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/streets/crossroad_01.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/streets/crossroad_02.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/streets/crossroad_03.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/streets/crossroad_04.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/streets/crossroad_05.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/streets/crossroad_06.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/streets/straight_01.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/streets/straight_02.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/streets/straight_03.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/streets/straight_04.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/streets/straight_05.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/streets/straight_06.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/streets/turn_01.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/swamp_lamp_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/terminators/terminator_01.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/terminators/terminator_02.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/terminators/terminator_03.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/terminators/terminator_04.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/town_centers/swamp_fountain_01.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/town_centers/swamp_meeting_point_1.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/town_centers/swamp_meeting_point_2.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/villagers/baby.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/villagers/nitwit.nbt create mode 100644 src/main/resources/data/emeraldcraft/structures/village/swamp/villagers/unemployed.nbt create mode 100644 src/main/resources/data/emeraldcraft/tags/banner_pattern/bee.json create mode 100644 src/main/resources/data/emeraldcraft/tags/banner_pattern/bottle.json create mode 100644 src/main/resources/data/emeraldcraft/tags/banner_pattern/potion.json create mode 100644 src/main/resources/data/emeraldcraft/tags/banner_pattern/snow.json create mode 100644 src/main/resources/data/emeraldcraft/tags/blocks/ginkgo_logs.json create mode 100644 src/main/resources/data/emeraldcraft/tags/blocks/palm_logs.json create mode 100644 src/main/resources/data/emeraldcraft/tags/blocks/peach_logs.json create mode 100644 src/main/resources/data/emeraldcraft/tags/blocks/purpuraceus_stems.json create mode 100644 src/main/resources/data/emeraldcraft/tags/items/ginkgo_logs.json create mode 100644 src/main/resources/data/emeraldcraft/tags/items/palm_logs.json create mode 100644 src/main/resources/data/emeraldcraft/tags/items/peach_logs.json create mode 100644 src/main/resources/data/emeraldcraft/tags/items/purpuraceus_stems.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/biome/dead_crimson_ocean.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/biome/dead_warped_ocean.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/camp_badlands.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/camp_birch.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/camp_desert.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/camp_jungle.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/camp_plains.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/camp_savanna.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/camp_snow.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/camp_stony.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/camp_swamp.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/camp_taiga.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/entrenchment.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/nether_warfield.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/shelter.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/biome/has_structure/village_swamp.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/structure/camp.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/structure/on_geocenter_explorer_maps.json create mode 100644 src/main/resources/data/emeraldcraft/tags/worldgen/structure/on_sar_explorer_maps.json create mode 100644 src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json create mode 100644 src/main/resources/data/forge/tags/blocks/cobblestone.json create mode 100644 src/main/resources/data/forge/tags/blocks/fence_gates/wooden.json create mode 100644 src/main/resources/data/forge/tags/blocks/sand.json create mode 100644 src/main/resources/data/forge/tags/blocks/sand/black.json create mode 100644 src/main/resources/data/forge/tags/blocks/sand/blue.json create mode 100644 src/main/resources/data/forge/tags/blocks/sand/green.json create mode 100644 src/main/resources/data/forge/tags/blocks/sand/orange.json create mode 100644 src/main/resources/data/forge/tags/blocks/sand/white.json create mode 100644 src/main/resources/data/forge/tags/blocks/sandstone.json create mode 100644 src/main/resources/data/forge/tags/blocks/stone.json create mode 100644 src/main/resources/data/forge/tags/items/cobblestone.json create mode 100644 src/main/resources/data/forge/tags/items/fence_gates/wooden.json create mode 100644 src/main/resources/data/forge/tags/items/fruits/peach.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/forge/tags/worldgen/biome/is_beach.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_cold/nether.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_cold/overworld.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_dead.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_dense/overworld.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_dry/nether.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_dry/overworld.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_forest.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_hot/nether.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_hot/overworld.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_mesa.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_ocean.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_peak.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_plains.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_rare.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_sandy.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_sparse/nether.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_sparse/overworld.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_spooky.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_swamp.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_underground.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_water.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_wet/nether.json create mode 100644 src/main/resources/data/forge/tags/worldgen/biome/is_wet/overworld.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/azalea_root_replaceable.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/enderman_holdable.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/fence_gates.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/fences.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/flower_pots.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/leaves.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/logs.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/logs_that_burn.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/hoe.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/mushroom_grow_block.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/non_flammable_wood.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/nylium.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/planks.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/sand.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/saplings.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/slabs.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/small_flowers.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/stairs.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/standing_signs.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/wall_signs.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/walls.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/wooden_buttons.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/wooden_doors.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/wooden_fences.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/wooden_pressure_plates.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/wooden_slabs.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/wooden_stairs.json create mode 100644 src/main/resources/data/minecraft/tags/blocks/wooden_trapdoors.json create mode 100644 src/main/resources/data/minecraft/tags/items/boats.json create mode 100644 src/main/resources/data/minecraft/tags/items/chest_boats.json create mode 100644 src/main/resources/data/minecraft/tags/items/fence_gates.json create mode 100644 src/main/resources/data/minecraft/tags/items/fences.json create mode 100644 src/main/resources/data/minecraft/tags/items/leaves.json create mode 100644 src/main/resources/data/minecraft/tags/items/logs.json create mode 100644 src/main/resources/data/minecraft/tags/items/logs_that_burn.json create mode 100644 src/main/resources/data/minecraft/tags/items/non_flammable_wood.json create mode 100644 src/main/resources/data/minecraft/tags/items/piglin_loved.json create mode 100644 src/main/resources/data/minecraft/tags/items/planks.json create mode 100644 src/main/resources/data/minecraft/tags/items/sand.json create mode 100644 src/main/resources/data/minecraft/tags/items/saplings.json create mode 100644 src/main/resources/data/minecraft/tags/items/signs.json create mode 100644 src/main/resources/data/minecraft/tags/items/slabs.json create mode 100644 src/main/resources/data/minecraft/tags/items/small_flowers.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/data/minecraft/tags/items/wooden_buttons.json create mode 100644 src/main/resources/data/minecraft/tags/items/wooden_doors.json create mode 100644 src/main/resources/data/minecraft/tags/items/wooden_fences.json create mode 100644 src/main/resources/data/minecraft/tags/items/wooden_pressure_plates.json create mode 100644 src/main/resources/data/minecraft/tags/items/wooden_slabs.json create mode 100644 src/main/resources/data/minecraft/tags/items/wooden_stairs.json create mode 100644 src/main/resources/data/minecraft/tags/items/wooden_trapdoors.json create mode 100644 src/main/resources/data/minecraft/tags/point_of_interest_type/acquirable_job_site.json create mode 100644 src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/bastion_remnant.json create mode 100644 src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/mineshaft.json create mode 100644 src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/mineshaft_mesa.json create mode 100644 src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/nether_fossil.json create mode 100644 src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/pillager_outpost.json create mode 100644 src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/ruined_portal_desert.json create mode 100644 src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/ruined_portal_swamp.json create mode 100644 src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/stronghold.json create mode 100644 src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/swamp_hut.json create mode 100644 src/main/resources/data/minecraft/tags/worldgen/biome/has_structure/village_plains.json create mode 100644 src/main/resources/data/minecraft/tags/worldgen/biome/is_beach.json create mode 100644 src/main/resources/data/minecraft/tags/worldgen/biome/is_deep_ocean.json create mode 100644 src/main/resources/data/minecraft/tags/worldgen/biome/is_forest.json create mode 100644 src/main/resources/data/minecraft/tags/worldgen/biome/is_hill.json create mode 100644 src/main/resources/data/minecraft/tags/worldgen/biome/is_nether.json create mode 100644 src/main/resources/data/minecraft/tags/worldgen/biome/is_ocean.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/LICENSE b/LICENSE new file mode 100644 index 00000000..e8d45edc --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 刘冬煜 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 00000000..6ece8ace --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +# EmeraldCraftMod +A Minecraft Mod about more villager professions and crafting recipes. + +## Wiki: +[mcmod(MC百科)](https://www.mcmod.cn/class/6322.html) + +[Official (官方Wiki)](https://viola-siemens.github.io/pages/emeraldcraft/index.html) + +## Download +[CurseForge](https://www.curseforge.com/minecraft/mc-mods/emerald-craft-mod) diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..7717ba4b --- /dev/null +++ b/build.gradle @@ -0,0 +1,178 @@ +buildscript { + repositories { + 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.32' + } +} + +plugins { + id 'eclipse' + id 'maven-publish' + id 'net.minecraftforge.gradle' version '5.1.+' +} +apply plugin: 'org.spongepowered.mixin' + +version = '6.0' +group = 'com.hexagram2021.emeraldcraft' +archivesBaseName = 'emeraldcraft' + +java.toolchain.languageVersion = JavaLanguageVersion.of(17) + +println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}" +minecraft { + mappings channel: 'official', version: '1.19.2' + + accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') + + runs { + client { + workingDirectory project.file('run') + + property 'forge.logging.markers', 'REGISTRIES' + property 'mixin.env.remapRefMap', 'true' + property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" + + property 'forge.logging.console.level', 'debug' + + property 'forge.enabledGameTestNamespaces', 'emeraldcraft' + arg "-mixin.config=emeraldcraft.mixins.json" + + mods { + emeraldcraft { + source sourceSets.main + } + } + } + + server { + workingDirectory project.file('run') + + property 'forge.logging.markers', 'REGISTRIES' + property 'mixin.env.remapRefMap', 'true' + property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" + + property 'forge.logging.console.level', 'debug' + + property 'forge.enabledGameTestNamespaces', 'emeraldcraft' + arg "-mixin.config=emeraldcraft.mixins.json" + + mods { + emeraldcraft { + source sourceSets.main + } + } + } + + gameTestServer { + workingDirectory project.file('run') + + property 'forge.logging.markers', 'REGISTRIES' + property 'mixin.env.remapRefMap', 'true' + property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" + + property 'forge.logging.console.level', 'debug' + + property 'forge.enabledGameTestNamespaces', 'emeraldcraft' + arg "-mixin.config=emeraldcraft.mixins.json" + + mods { + emeraldcraft { + source sourceSets.main + } + } + } + + data { + workingDirectory project.file('run') + + property 'forge.logging.markers', 'REGISTRIES' + property 'mixin.env.remapRefMap', 'true' + property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" + + property 'forge.logging.console.level', 'debug' + + args '--mod', 'emeraldcraft', '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') + arg "-mixin.config=emeraldcraft.mixins.json" + + mods { + emeraldcraft { + source sourceSets.main + } + } + } + } +} + +sourceSets.main.resources { srcDir 'src/generated/resources' } + +repositories { + 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 { + minecraft 'net.minecraftforge:forge:1.19.2-43.2.0' + + compileOnly fg.deobf("mezz.jei:jei-1.19.2-forge:11.5.0.297") + + annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' + + implementation fg.deobf("com.github.glitchfiend:TerraBlender-forge:1.19.2-2.0.1.128") //TerraBlender +} + +jar { + manifest { + attributes([ + "Specification-Title" : "Emerald Craft Mod", + "Specification-Vendor" : "Hexagram", + "Specification-Version" : "1", + "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' + ]) + } +} + +jar.finalizedBy('reobfJar') + +publishing { + publications { + mavenJava(MavenPublication) { + artifact jar + } + } + repositories { + maven { + url "file://${project.projectDir}/mcmodsrepo" + } + } +} + +mixin { + add sourceSets.main, 'emeraldcraft.refmap.json' + config 'emeraldcraft.mixins.json' + + debug.verbose = true + debug.export = true +} + +tasks.withType(JavaCompile).configureEach { + options.encoding = 'UTF-8' +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 00000000..878bf1f7 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,4 @@ +# Sets default memory used for gradle commands. Can be overridden by user or command line properties. +# This is required to provide enough memory for the Minecraft decompilation process. +org.gradle.jvmargs=-Xmx3G +org.gradle.daemon=false \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..249e5832f090a2944b7473328c07c9755baa3196 GIT binary patch literal 60756 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 '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000..f127cfd4 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,91 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..3703f364 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,6 @@ +pluginManagement { + repositories { + gradlePluginPortal() + maven { url = 'https://maven.minecraftforge.net/' } + } +} \ No newline at end of file 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..438145b6 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/EmeraldCraft.java @@ -0,0 +1,176 @@ +package com.hexagram2021.emeraldcraft; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import com.google.common.collect.Sets; +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.ModVanillaCompat; +import com.hexagram2021.emeraldcraft.common.config.ECCommonConfig; +import com.hexagram2021.emeraldcraft.common.register.*; +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import com.hexagram2021.emeraldcraft.common.util.TradeUtil; +import com.hexagram2021.emeraldcraft.common.world.village.ECTrades; +import com.hexagram2021.emeraldcraft.common.world.village.Villages; +import com.hexagram2021.emeraldcraft.mixin.BlockEntityTypeAccess; +import com.hexagram2021.emeraldcraft.mixin.RecipeManagerAccess; +import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.Tuple; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.entity.npc.VillagerType; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.StandingSignBlock; +import net.minecraft.world.level.block.WallSignBlock; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.server.ServerStartedEvent; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.DeferredWorkQueue; +import net.minecraftforge.fml.DistExecutor; +import net.minecraftforge.fml.ModLoadingContext; +import net.minecraftforge.fml.ModLoadingStage; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.config.ModConfig; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import net.minecraftforge.fml.loading.FMLLoader; +import org.apache.logging.log4j.LogManager; + +import javax.annotation.Nonnull; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.function.Consumer; +import java.util.function.Supplier; +import java.util.stream.Collectors; + +@SuppressWarnings("unused") +@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 + 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(); + MinecraftForge.EVENT_BUS.addListener(this::serverStarted); + 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)); + + ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, ECCommonConfig.SPEC); + + bus.addListener(this::setup); + MinecraftForge.EVENT_BUS.register(this); + } + + public void setup(FMLCommonSetupEvent event) { + ECTriggers.init(); + ECBrewingRecipes.init(); + + event.enqueueWork(() -> { + VillagerType.BY_BIOME.putAll(ImmutableMap.of( + ECBiomeKeys.AZURE_DESERT.key(), VillagerType.DESERT, + ECBiomeKeys.JADEITE_DESERT.key(), VillagerType.DESERT, + ECBiomeKeys.XANADU.key(), VillagerType.SWAMP + )); + appendBlocksToBlockEntities(); + Villages.init(); + ECContent.init(); + ModVanillaCompat.setup(); + }); + } + + public void serverStarted(ServerStartedEvent event) { + ServerLevel world = event.getServer().getLevel(Level.OVERWORLD); + assert world != null; + if(!world.isClientSide) { + ECSaveData worldData = world.getDataStorage().computeIfAbsent(ECSaveData::new, ECSaveData::new, ECSaveData.dataName); + ECSaveData.setInstance(worldData); + } + + RecipeManagerAccess recipeManagerAccess = (RecipeManagerAccess)(world.getRecipeManager()); + Map, Map>> recipes = Maps.newHashMap(recipeManagerAccess.ec_getRecipes()); + recipes.compute(ECRecipes.TRADE_SHADOW_TYPE.get(), (key, map) -> { + Map> shadows = Maps.newHashMap(); + Set names = Sets.newHashSet(); + + if(map != null) { + names.addAll(map.keySet().stream().map(resourceLocation -> resourceLocation.getPath().replaceFirst("trade_shadow/", "")).collect(Collectors.toSet())); + shadows.putAll(map); + } + + VillagerTrades.TRADES.forEach((profession, trades) -> + TradeUtil.addTradeShadowRecipesFromListingMap(trades, EntityType.VILLAGER, profession, world, names, shadows)); + TradeUtil.addTradeShadowRecipesFromListingMap(VillagerTrades.WANDERING_TRADER_TRADES, EntityType.WANDERING_TRADER, null, world, names, shadows); + TradeUtil.addTradeShadowRecipesFromListingMap(ECTrades.PIGLIN_CUTEY_TRADES, ECEntities.PIGLIN_CUTEY, null, world, names, shadows); + TradeUtil.addTradeShadowRecipesFromListingMap(ECTrades.NETHER_LAMBMAN_TRADES, ECEntities.NETHER_LAMBMAN, null, world, names, shadows); + TradeUtil.addTradeShadowRecipesFromListingMap(ECTrades.NETHER_PIGMAN_TRADES, ECEntities.NETHER_PIGMAN, null, world, names, shadows); + + return shadows; + }); + recipeManagerAccess.ec_setRecipes(recipes); + } + + private static void appendBlocksToBlockEntities() { + BlockEntityTypeAccess signBuilderAccess = (BlockEntityTypeAccess)BlockEntityType.SIGN; + Set signValidBlocks = new ObjectOpenHashSet<>(signBuilderAccess.ec_getValidBlocks()); + + Tuple, ECBlocks.BlockEntry> tuple_ginkgo = ECBlocks.TO_SIGN.get(ECBlocks.Plant.GINKGO_PLANKS.getId()); + Tuple, ECBlocks.BlockEntry> tuple_palm = ECBlocks.TO_SIGN.get(ECBlocks.Plant.PALM_PLANKS.getId()); + Tuple, ECBlocks.BlockEntry> tuple_peach = ECBlocks.TO_SIGN.get(ECBlocks.Plant.PEACH_PLANKS.getId()); + Tuple, ECBlocks.BlockEntry> tuple_purpuraceus = ECBlocks.TO_SIGN.get(ECBlocks.Plant.PURPURACEUS_PLANKS.getId()); + signValidBlocks.add(tuple_ginkgo.getA().get()); + signValidBlocks.add(tuple_ginkgo.getB().get()); + signValidBlocks.add(tuple_palm.getA().get()); + signValidBlocks.add(tuple_palm.getB().get()); + signValidBlocks.add(tuple_peach.getA().get()); + signValidBlocks.add(tuple_peach.getB().get()); + signValidBlocks.add(tuple_purpuraceus.getA().get()); + signValidBlocks.add(tuple_purpuraceus.getB().get()); + + signBuilderAccess.ec_setValidBlocks(signValidBlocks); + } + + 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/api/camp/CampType.java b/src/main/java/com/hexagram2021/emeraldcraft/api/camp/CampType.java new file mode 100644 index 00000000..8fb76eb7 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/api/camp/CampType.java @@ -0,0 +1,22 @@ +package com.hexagram2021.emeraldcraft.api.camp; + +import com.hexagram2021.emeraldcraft.api.codec.APIEnumCodec; +import com.mojang.serialization.Codec; +import net.minecraft.util.StringRepresentable; +import org.jetbrains.annotations.NotNull; + +public interface CampType extends StringRepresentable { + Codec CODEC = APIEnumCodec.instance(CampType::values, CampTypes.ALL_CAMP_IDS); + + @Override @NotNull + default String getSerializedName() { + return this.toString(); + } + + @Override + String toString(); + + static CampType[] values() { + return CampTypes.ALL_CAMPS.toArray(new CampType[0]); + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/api/camp/CampTypes.java b/src/main/java/com/hexagram2021/emeraldcraft/api/camp/CampTypes.java new file mode 100644 index 00000000..f733f253 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/api/camp/CampTypes.java @@ -0,0 +1,49 @@ +package com.hexagram2021.emeraldcraft.api.camp; + +import com.google.common.collect.Lists; +import com.hexagram2021.emeraldcraft.common.register.ECStructures; +import net.minecraft.Util; +import net.minecraft.core.Holder; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.structure.Structure; +import net.minecraft.world.level.levelgen.structure.StructureSet; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public enum CampTypes implements CampType { + BADLANDS, + BIRCH, + DESERT, + JUNGLE, + PLAINS, + SAVANNA, + SNOW, + STONY, + SWAMP, + TAIGA; + + static final List ALL_CAMPS = Lists.newArrayList(Arrays.stream(CampTypes.values()).iterator()); + static final Map ALL_CAMP_IDS = Util.make(new HashMap<>(), map -> { + for(int i = 0; i < ALL_CAMPS.size(); ++i) { + map.put(ALL_CAMPS.get(i).toString(), i); + } + }); + + private static final Map CUSTOM_CAMP = new HashMap<>(); + + //API for custom camp. + @SuppressWarnings("unused") + public static void addCustomCamp(CampType type, ResourceLocation structure, Holder holder) { + CUSTOM_CAMP.put(type.toString(), structure); + ALL_CAMP_IDS.put(type.toString(), ALL_CAMPS.size()); + ALL_CAMPS.add(type); + ECStructures.ALL_CAMPS.add(StructureSet.entry(holder)); + } + + public static ResourceLocation getCampWithType(CampType type) { + return CUSTOM_CAMP.get(type.toString()); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/api/codec/APIEnumCodec.java b/src/main/java/com/hexagram2021/emeraldcraft/api/codec/APIEnumCodec.java new file mode 100644 index 00000000..6840e1b1 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/api/codec/APIEnumCodec.java @@ -0,0 +1,45 @@ +package com.hexagram2021.emeraldcraft.api.codec; + +import com.mojang.datafixers.util.Pair; +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; +import com.mojang.serialization.DynamicOps; +import net.minecraft.util.ExtraCodecs; +import net.minecraft.util.StringRepresentable; + +import javax.annotation.Nullable; +import java.util.Arrays; +import java.util.Map; +import java.util.function.Function; +import java.util.function.Supplier; +import java.util.stream.Collectors; + +public record APIEnumCodec(Codec codec, Function resolver) implements Codec { + public APIEnumCodec(E[] array, Map idGetter, Function resolver) { + this(ExtraCodecs.orCompressed( + ExtraCodecs.stringResolverCodec(StringRepresentable::getSerializedName, resolver), + ExtraCodecs.idResolverCodec((entry) -> idGetter.get(entry.toString()), (id) -> id >= 0 && id < array.length ? array[id] : null, -1) + ), resolver); + } + + @Override + public DataResult> decode(DynamicOps ops, T input) { + return this.codec.decode(ops, input); + } + + @Override + public DataResult encode(E entry, DynamicOps ops, T prefix) { + return this.codec.encode(entry, ops, prefix); + } + + @Nullable + public E byName(@Nullable String name) { + return this.resolver.apply(name); + } + + public static APIEnumCodec instance(Supplier aGetter, Map idGetter) { + T[] values = aGetter.get(); + Map map = Arrays.stream(values).collect(Collectors.toMap(StringRepresentable::getSerializedName, (entry) -> entry)); + return new APIEnumCodec<>(values, idGetter, (name) -> name == null ? null : map.get(name)); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/api/continuous_miner/ContinuousMinerCustomLoot.java b/src/main/java/com/hexagram2021/emeraldcraft/api/continuous_miner/ContinuousMinerCustomLoot.java new file mode 100644 index 00000000..f9b76932 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/api/continuous_miner/ContinuousMinerCustomLoot.java @@ -0,0 +1,22 @@ +package com.hexagram2021.emeraldcraft.api.continuous_miner; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.state.BlockState; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static com.hexagram2021.emeraldcraft.common.util.RegistryHelper.getRegistryName; + +public class ContinuousMinerCustomLoot { + private static final Map BLOCK_TO_LOOT_TABLE = new HashMap<>(); + + public static void addBlockLoot(List blockRegistryNames, ResourceLocation lootTable) { + blockRegistryNames.forEach((blockRegistryName) -> BLOCK_TO_LOOT_TABLE.put(blockRegistryName, lootTable)); + } + + public static ResourceLocation getBlockLoot(BlockState blockState) { + return BLOCK_TO_LOOT_TABLE.get(getRegistryName(blockState.getBlock())); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/api/fluid/FluidType.java b/src/main/java/com/hexagram2021/emeraldcraft/api/fluid/FluidType.java new file mode 100644 index 00000000..505fc6cb --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/api/fluid/FluidType.java @@ -0,0 +1,13 @@ +package com.hexagram2021.emeraldcraft.api.fluid; + +public interface FluidType { + int getGUIID(); + + String toString(); + boolean equals(Object obj); + int hashCode(); + + default String getTranslationTag() { + return "fluids.name." + this; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/api/fluid/FluidTypes.java b/src/main/java/com/hexagram2021/emeraldcraft/api/fluid/FluidTypes.java new file mode 100644 index 00000000..11867168 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/api/fluid/FluidTypes.java @@ -0,0 +1,133 @@ +package com.hexagram2021.emeraldcraft.api.fluid; + +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.function.Supplier; + +import static com.hexagram2021.emeraldcraft.common.util.RegistryHelper.getRegistryName; + +public enum FluidTypes implements FluidType { + water(0), + lava(1), + melted_emerald(2), + melted_iron(3), + melted_gold(4), + melted_copper(5); + + private static final HashMap> FLUID_TYPE_ITEM = new HashMap<>(); + private static final HashMap BUCKET_FLUID_TYPE = new HashMap<>(); + + final int guiid; + + @SuppressWarnings({"FieldMayBeFinal"}) + private static final List FLUID_TYPES = new ArrayList<>(List.of(water, lava, melted_emerald, melted_iron, melted_gold, melted_copper)); + + FluidTypes(int guiid) { + this.guiid = guiid; + } + + 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; + } + FluidType ret = BUCKET_FLUID_TYPE.get(getRegistryName(item)); + if(ret == null) { + throw new IllegalArgumentException("Cannot find fluid from item [" + getRegistryName(item) + "]"); + } + return ret; + } + + public static Item getFluidBucketItem(FluidType fluidType) { + if (FluidTypes.water.equals(fluidType)) { + return Items.WATER_BUCKET; + } + if (FluidTypes.lava.equals(fluidType)) { + return Items.LAVA_BUCKET; + } + if (FluidTypes.melted_emerald.equals(fluidType)) { + return ECItems.MELTED_EMERALD_BUCKET.get(); + } + if (FluidTypes.melted_iron.equals(fluidType)) { + return ECItems.MELTED_IRON_BUCKET.get(); + } + if (FluidTypes.melted_gold.equals(fluidType)) { + return ECItems.MELTED_GOLD_BUCKET.get(); + } + if (FluidTypes.melted_copper.equals(fluidType)) { + return ECItems.MELTED_COPPER_BUCKET.get(); + } + Supplier ret = FLUID_TYPE_ITEM.get(fluidType.toString()); + if(ret == null) { + throw new IllegalArgumentException("Cannot find item for fluid type [" + fluidType + "]"); + } + return ret.get(); + } + + public static int getID(FluidType fluidType) { + int ret = FLUID_TYPES.indexOf(fluidType); + if(ret == -1) { + throw new IllegalArgumentException("Cannot find fluid type [" + fluidType.toString() + "]"); + } + return ret; + } + + public static FluidType getFluidTypeWithID(int id) { + return FLUID_TYPES.get(id); + } + + public static Item getFluidBucketItemWithID(int id) { + return getFluidBucketItem(FLUID_TYPES.get(id)); + } + + public static int getIDFromBucketItem(Item item) { + return getID(getFluidFromBucketItem(item)); + } + + public static FluidType getFluidTypeFromName(String name) { + return FLUID_TYPES.stream().filter(fluidType -> fluidType.toString().equals(name)).findFirst().orElseThrow( + () -> new IllegalArgumentException("Cannot find fluid type with name [" + name + "]") + ); + } + + public static boolean isExtraFluidBucket(ItemStack itemStack) { + return BUCKET_FLUID_TYPE.containsKey(getRegistryName(itemStack.getItem())); + } + + @Override + public int getGUIID() { + return guiid; + } + + /** + * API for custom Fluid Type + * + * Call addFluidType before mod construction (if not, you'll get an IllegalArgumentException while recipe parsing "Cannot find fluid type with name"). + */ + public static void addFluidType(FluidType fluidType, Supplier bucket, ResourceLocation bucketRegistryName) { + FLUID_TYPES.add(fluidType); + FLUID_TYPE_ITEM.put(fluidType.toString(), bucket); + BUCKET_FLUID_TYPE.put(bucketRegistryName, fluidType); + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/api/package-info.java b/src/main/java/com/hexagram2021/emeraldcraft/api/package-info.java new file mode 100644 index 00000000..2270472a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/api/package-info.java @@ -0,0 +1,8 @@ + + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.hexagram2021.emeraldcraft.api; + +import net.minecraft.MethodsReturnNonnullByDefault; +import javax.annotation.ParametersAreNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/api/tradable/ITradableDataFactory.java b/src/main/java/com/hexagram2021/emeraldcraft/api/tradable/ITradableDataFactory.java new file mode 100644 index 00000000..cd21e845 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/api/tradable/ITradableDataFactory.java @@ -0,0 +1,28 @@ +package com.hexagram2021.emeraldcraft.api.tradable; + +import com.google.common.collect.Maps; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.npc.VillagerProfession; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import java.util.Map; + +@OnlyIn(Dist.CLIENT) +public interface ITradableDataFactory { + Map, ITradableDataFactory> customMobs = Maps.newHashMap(); + + static void setTradableMobData(Entity entity, VillagerProfession profession, int level) { + ITradableDataFactory factory = customMobs.get(entity.getType()); + if(factory != null) { + factory.setMobData(entity, profession, level); + } + } + + static void registerDataFactory(EntityType entityType, ITradableDataFactory factory) { + customMobs.put(entityType, factory); + } + + void setMobData(Entity entity, VillagerProfession profession, int level); +} 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..a739f630 --- /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; +import org.jetbrains.annotations.NotNull; + +public class ClientEventHandler implements ResourceManagerReloadListener { + @Override + public void onResourceManagerReload(@NotNull 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..20c13902 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/ClientMobEventSubscriber.java @@ -0,0 +1,45 @@ +package com.hexagram2021.emeraldcraft.client; + +import com.hexagram2021.emeraldcraft.client.models.*; +import com.hexagram2021.emeraldcraft.client.renderers.*; +import com.hexagram2021.emeraldcraft.common.entities.ECBoat; +import com.hexagram2021.emeraldcraft.common.register.ECEntities; +import net.minecraft.client.model.BoatModel; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.EntityRenderersEvent; +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); + event.registerLayerDefinition(HerringModel.LAYER_LOCATION, HerringModel::createBodyLayer); + event.registerLayerDefinition(PurpleSpottedBigeyeModel.LAYER_LOCATION, PurpleSpottedBigeyeModel::createBodyLayer); + event.registerLayerDefinition(WraithModel.LAYER_LOCATION, WraithModel::createBodyLayer); + event.registerLayerDefinition(MantaModel.LAYER_LOCATION, MantaModel::createBodyLayer); + + for(ECBoat.ECBoatType type: ECBoat.ECBoatType.values()) { + event.registerLayerDefinition(ECBoatRenderer.createBoatModelName(type), () -> BoatModel.createBodyModel(false)); + event.registerLayerDefinition(ECBoatRenderer.createChestBoatModelName(type), () -> BoatModel.createBodyModel(true)); + } + } + + @SubscribeEvent + public static void onRegisterRenderer(EntityRenderersEvent.RegisterRenderers event) { + event.registerEntityRenderer(ECEntities.PIGLIN_CUTEY, PiglinCuteyRenderer::new); + event.registerEntityRenderer(ECEntities.NETHER_PIGMAN, NetherPigmanRenderer::new); + event.registerEntityRenderer(ECEntities.NETHER_LAMBMAN, NetherLambmanRenderer::new); + event.registerEntityRenderer(ECEntities.HERRING, HerringRenderer::new); + event.registerEntityRenderer(ECEntities.PURPLE_SPOTTED_BIGEYE, PurpleSpottedBigeyeRenderer::new); + event.registerEntityRenderer(ECEntities.WRAITH, WraithRenderer::new); + event.registerEntityRenderer(ECEntities.MANTA, MantaRenderer::new); + event.registerEntityRenderer(ECEntities.BOAT, (context) -> new ECBoatRenderer(context, false)); + event.registerEntityRenderer(ECEntities.CHEST_BOAT, (context) -> new ECBoatRenderer(context, true)); + } +} 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..897aa5a8 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/ClientProxy.java @@ -0,0 +1,148 @@ +package com.hexagram2021.emeraldcraft.client; + +import com.hexagram2021.emeraldcraft.api.tradable.ITradableDataFactory; +import com.hexagram2021.emeraldcraft.client.screens.*; +import com.hexagram2021.emeraldcraft.common.CommonProxy; +import com.hexagram2021.emeraldcraft.common.entities.mobs.NetherLambmanEntity; +import com.hexagram2021.emeraldcraft.common.entities.mobs.NetherPigmanEntity; +import com.hexagram2021.emeraldcraft.common.entities.mobs.PiglinCuteyData; +import com.hexagram2021.emeraldcraft.common.entities.mobs.PiglinCuteyEntity; +import com.hexagram2021.emeraldcraft.common.register.*; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.MenuScreens; +import net.minecraft.client.renderer.BiomeColors; +import net.minecraft.client.renderer.Sheets; +import net.minecraft.client.resources.model.Material; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.ReloadableResourceManager; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.entity.npc.VillagerData; +import net.minecraft.world.entity.npc.VillagerType; +import net.minecraft.world.entity.npc.WanderingTrader; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.level.FoliageColor; +import net.minecraft.world.level.block.entity.BannerPattern; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.RegisterColorHandlersEvent; +import net.minecraftforge.client.event.RegisterRecipeBookCategoriesEvent; +import net.minecraftforge.client.event.TextureStitchEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; + +import java.util.Objects; + +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() { + ReloadableResourceManager reloadableManager = (ReloadableResourceManager)Minecraft.getInstance().getResourceManager(); + ClientEventHandler handler = new ClientEventHandler(); + reloadableManager.registerReloadListener(handler); + } + + @SubscribeEvent + public static void setup(final FMLClientSetupEvent event) { + event.enqueueWork(() -> { + registerContainersAndScreens(); + registerBannerPatterns(); + registerWoodTypes(); + registerTradableMobDataFactories(); + }); + } + + 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); + MenuScreens.register(ECContainerTypes.PIGLIN_CUTEY_MERCHANT_MENU.get(), PiglinCuteyMerchantScreen::new); + } + + private static void registerBannerPatterns() { + ECBannerPatterns.ALL_BANNERS.forEach(entry -> { + ResourceKey pattern = Objects.requireNonNull(entry.pattern().getKey()); + Sheets.BANNER_MATERIALS.put(pattern, new Material(Sheets.BANNER_SHEET, BannerPattern.location(pattern, true))); + Sheets.SHIELD_MATERIALS.put(pattern, new Material(Sheets.SHIELD_SHEET, BannerPattern.location(pattern, false))); + }); + } + + private static void registerWoodTypes() { + Sheets.addWoodType(ECWoodType.GINKGO); + Sheets.addWoodType(ECWoodType.PALM); + Sheets.addWoodType(ECWoodType.PEACH); + Sheets.addWoodType(ECWoodType.PURPURACEUS); + } + + private static void registerTradableMobDataFactories() { + ITradableDataFactory.registerDataFactory( + EntityType.VILLAGER, (entity, profession, level) -> { + Villager villager = (Villager) entity; + villager.setNoAi(true); + villager.setVillagerData(new VillagerData(VillagerType.PLAINS, profession, level)); + } + ); + ITradableDataFactory.registerDataFactory( + EntityType.WANDERING_TRADER, (entity, profession, level) -> { + WanderingTrader wanderingTrader = (WanderingTrader) entity; + wanderingTrader.setNoAi(true); + } + ); + ITradableDataFactory.registerDataFactory( + ECEntities.PIGLIN_CUTEY, (entity, profession, level) -> { + PiglinCuteyEntity piglinCutey = (PiglinCuteyEntity) entity; + piglinCutey.setNoAi(true); + piglinCutey.setPiglinCuteyData(new PiglinCuteyData(level)); + } + ); + ITradableDataFactory.registerDataFactory( + ECEntities.NETHER_LAMBMAN, (entity, profession, level) -> { + NetherLambmanEntity netherLambman = (NetherLambmanEntity) entity; + netherLambman.setNoAi(true); + } + ); + ITradableDataFactory.registerDataFactory( + ECEntities.NETHER_PIGMAN, (entity, profession, level) -> { + NetherPigmanEntity netherPigman = (NetherPigmanEntity) entity; + netherPigman.setNoAi(true); + } + ); + } + + + @SubscribeEvent + public static void registerBlockColors(RegisterColorHandlersEvent.Block event) { + event.register((state, world, pos, tintIndex) -> + world != null && pos != null ? BiomeColors.getAverageFoliageColor(world, pos) : FoliageColor.get(0.5D, 1.0D), + ECBlocks.Plant.GINKGO_LEAVES.get(), ECBlocks.Plant.PALM_LEAVES.get(), ECBlocks.Plant.PEACH_LEAVES.get()); + } + + @SubscribeEvent + public static void registerItemColors(RegisterColorHandlersEvent.Item event) { + event.register((stack, tintIndex) -> + event.getBlockColors().getColor(((BlockItem)stack.getItem()).getBlock().defaultBlockState(), null, null, tintIndex), + ECBlocks.Plant.GINKGO_LEAVES, ECBlocks.Plant.PALM_LEAVES, ECBlocks.Plant.PEACH_LEAVES); + } + + @SubscribeEvent + public static void registerTextureStitchPre(TextureStitchEvent.Pre event) { + ResourceLocation sheet = event.getAtlas().location(); + if (sheet.equals(Sheets.BANNER_SHEET) || sheet.equals(Sheets.SHIELD_SHEET)) { + ECBannerPatterns.ALL_BANNERS.forEach(entry -> { + ResourceKey pattern = Objects.requireNonNull(entry.pattern().getKey()); + event.addSprite(BannerPattern.location(pattern, sheet.equals(Sheets.BANNER_SHEET))); + }); + } + } + + @SubscribeEvent + public static void onRegisterRecipeBookTypes(RegisterRecipeBookCategoriesEvent event) { + ECRecipeBookTypes.init(event); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/MapCustomIcons.java b/src/main/java/com/hexagram2021/emeraldcraft/client/MapCustomIcons.java new file mode 100644 index 00000000..ec8729d4 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/MapCustomIcons.java @@ -0,0 +1,17 @@ +package com.hexagram2021.emeraldcraft.client; + +import com.google.common.collect.ImmutableMap; +import com.hexagram2021.emeraldcraft.common.register.ECMapDecorationTypes; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.saveddata.maps.MapDecoration; + +import java.util.Map; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class MapCustomIcons { + private static final RenderType EC_MAP_ICONS = RenderType.text(new ResourceLocation(MODID, "textures/map/map_icons.png")); + public static final Map RENDER_TYPES = ImmutableMap.of(ECMapDecorationTypes.SHELTER, EC_MAP_ICONS, ECMapDecorationTypes.ENTRENCHMENT, EC_MAP_ICONS); + public static final Map ORDINARIES = ImmutableMap.of(ECMapDecorationTypes.SHELTER, (byte)0, ECMapDecorationTypes.ENTRENCHMENT, (byte)1); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/HerringModel.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/HerringModel.java new file mode 100644 index 00000000..d5de9f24 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/HerringModel.java @@ -0,0 +1,59 @@ +package com.hexagram2021.emeraldcraft.client.models; + +import net.minecraft.client.model.HierarchicalModel; +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.CubeListBuilder; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class HerringModel extends HierarchicalModel { + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(MODID, "herring"), "main"); + private final ModelPart root; + private final ModelPart tail; + + public HerringModel(ModelPart root) { + this.root = root; + this.tail = root.getChild("body").getChild("tail"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition body = partdefinition.addOrReplaceChild("body", + CubeListBuilder.create() + .texOffs(0, 0).addBox(-0.5F, -4.0F, -3.0F, 2.0F, 3.0F, 6.0F) + .texOffs(10, -6).addBox(0.5F, -8.0F, -3.0F, 0.0F, 4.0F, 6.0F) + .texOffs(17, 1).addBox(0.5F, -1.0F, -3.0F, 0.0F, 2.0F, 6.0F), + PartPose.offset(-0.5F, 24.0F, 0.0F) + ); + + body.addOrReplaceChild("tail", CubeListBuilder.create().texOffs(24, -4).addBox(0.0F, -4.0F, 0.0F, 0.0F, 3.0F, 4.0F), PartPose.offset(0.5F, 0.0F, 3.0F)); + + return LayerDefinition.create(meshdefinition, 32, 16); + } + + @Override @NotNull + public ModelPart root() { + return this.root; + } + + @Override + public void setupAnim(@NotNull T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + float f = 1.0F; + if (!entity.isInWater()) { + f = 1.5F; + } + + this.tail.yRot = -f * 0.45F * Mth.sin(0.6F * ageInTicks); + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/MantaModel.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/MantaModel.java new file mode 100644 index 00000000..ed6706b8 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/MantaModel.java @@ -0,0 +1,69 @@ +package com.hexagram2021.emeraldcraft.client.models; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.MantaEntity; +import net.minecraft.client.model.HierarchicalModel; +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.CubeListBuilder; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class MantaModel extends HierarchicalModel { + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(MODID, "manta"), "main"); + private final ModelPart root; + private final ModelPart leftWingBase; + private final ModelPart leftWingTip; + private final ModelPart rightWingBase; + private final ModelPart rightWingTip; + private final ModelPart tailBase; + private final ModelPart tailTip; + + public MantaModel(ModelPart root) { + this.root = root; + ModelPart modelpart = root.getChild("body"); + this.tailBase = modelpart.getChild("tail_base"); + this.tailTip = this.tailBase.getChild("tail_tip"); + this.leftWingBase = modelpart.getChild("left_wing_base"); + this.leftWingTip = this.leftWingBase.getChild("left_wing_tip"); + this.rightWingBase = modelpart.getChild("right_wing_base"); + this.rightWingTip = this.rightWingBase.getChild("right_wing_tip"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition root = meshdefinition.getRoot(); + PartDefinition body = root.addOrReplaceChild("body", CubeListBuilder.create().texOffs(0, 8).addBox(-3.0F, -2.0F, -8.0F, 5.0F, 3.0F, 13.0F), PartPose.offsetAndRotation(0.0F, 16.0F, 0.0F, -0.1F, 0.0F, 0.0F)); + PartDefinition tail = body.addOrReplaceChild("tail_base", CubeListBuilder.create().texOffs(0, 24).addBox(-2.0F, 0.0F, 0.0F, 3.0F, 2.0F, 6.0F), PartPose.offset(0.0F, -2.0F, 5.0F)); + tail.addOrReplaceChild("tail_tip", CubeListBuilder.create().texOffs(0, 32).addBox(-1.0F, 0.0F, 0.0F, 1.0F, 1.0F, 6.0F), PartPose.offset(0.0F, 0.5F, 6.0F)); + PartDefinition left_wing = body.addOrReplaceChild("left_wing_base", CubeListBuilder.create().texOffs(24, 12).addBox(0.0F, 0.0F, 0.0F, 7.0F, 2.0F, 13.0F), PartPose.offsetAndRotation(2.0F, -2.0F, -8.0F, 0.0F, 0.0F, 0.1F)); + left_wing.addOrReplaceChild("left_wing_tip", CubeListBuilder.create().texOffs(12, 27).addBox(0.0F, 0.0F, 0.0F, 13.0F, 1.0F, 13.0F), PartPose.offsetAndRotation(6.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.1F)); + PartDefinition right_wing = body.addOrReplaceChild("right_wing_base", CubeListBuilder.create().texOffs(24, 12).mirror().addBox(-7.0F, 0.0F, 0.0F, 7.0F, 2.0F, 13.0F), PartPose.offsetAndRotation(-3.0F, -2.0F, -8.0F, 0.0F, 0.0F, -0.1F)); + right_wing.addOrReplaceChild("right_wing_tip", CubeListBuilder.create().texOffs(12, 27).mirror().addBox(-14.0F, 0.0F, 0.0F, 13.0F, 1.0F, 13.0F), PartPose.offsetAndRotation(-6.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.1F)); + body.addOrReplaceChild("head", CubeListBuilder.create().texOffs(0, 0).addBox(-3.0F, -3.0F, -5.0F, 5.0F, 3.0F, 5.0F), PartPose.offsetAndRotation(0.0F, 1.0F, -7.0F, 0.2F, 0.0F, 0.0F)); + return LayerDefinition.create(meshdefinition, 64, 64); + } + + @Override @NotNull + public ModelPart root() { + return this.root; + } + + @Override + public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + float f = ((float)entity.getUniqueFlapTickOffset() + ageInTicks) * 7.448451F * ((float)Math.PI / 180F); + float f1 = 16.0F; + this.leftWingBase.zRot = Mth.cos(f) * f1 * ((float)Math.PI / 180F); + this.leftWingTip.zRot = Mth.cos(f) * f1 * ((float)Math.PI / 180F); + this.rightWingBase.zRot = -this.leftWingBase.zRot; + this.rightWingTip.zRot = -this.leftWingTip.zRot; + this.tailBase.xRot = -(5.0F + Mth.cos(f * 2.0F) * 5.0F) * ((float)Math.PI / 180F); + this.tailTip.xRot = -(5.0F + Mth.cos(f * 2.0F) * 5.0F) * ((float)Math.PI / 180F); + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/NetherLambmanModel.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/NetherLambmanModel.java new file mode 100644 index 00000000..24647f82 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/NetherLambmanModel.java @@ -0,0 +1,24 @@ +package com.hexagram2021.emeraldcraft.client.models; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.NetherLambmanEntity; +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 net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +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/NetherPigmanModel.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/NetherPigmanModel.java new file mode 100644 index 00000000..1403d7dc --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/NetherPigmanModel.java @@ -0,0 +1,24 @@ +package com.hexagram2021.emeraldcraft.client.models; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.NetherPigmanEntity; +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 net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +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/PiglinCuteyModel.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/PiglinCuteyModel.java new file mode 100644 index 00000000..61da1dfe --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/PiglinCuteyModel.java @@ -0,0 +1,281 @@ +// 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; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.PiglinCuteyEntity; +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 org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +@SuppressWarnings({"unused", "FieldCanBeLocal"}) +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(@NotNull 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; + case BLOCK -> { + this.RightArm.xRot = this.RightArm.xRot * 0.5F - 0.9424779F; + this.RightArm.yRot = (-(float) Math.PI / 6F); + } + case ITEM -> { + this.RightArm.xRot = this.RightArm.xRot * 0.5F - ((float) Math.PI / 10F); + this.RightArm.yRot = 0.0F; + } + case THROW_SPEAR -> { + this.RightArm.xRot = this.RightArm.xRot * 0.5F - (float) Math.PI; + this.RightArm.yRot = 0.0F; + } + 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; + } + case CROSSBOW_CHARGE -> AnimationUtils.animateCrossbowCharge(this.RightArm, this.LeftArm, entity, true); + case CROSSBOW_HOLD -> AnimationUtils.animateCrossbowHold(this.RightArm, this.LeftArm, this.head, true); + 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; + case BLOCK -> { + this.LeftArm.xRot = this.LeftArm.xRot * 0.5F - 0.9424779F; + this.LeftArm.yRot = ((float) Math.PI / 6F); + } + case ITEM -> { + this.LeftArm.xRot = this.LeftArm.xRot * 0.5F - ((float) Math.PI / 10F); + this.LeftArm.yRot = 0.0F; + } + case THROW_SPEAR -> { + this.LeftArm.xRot = this.LeftArm.xRot * 0.5F - (float) Math.PI; + this.LeftArm.yRot = 0.0F; + } + 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; + } + case CROSSBOW_CHARGE -> AnimationUtils.animateCrossbowCharge(this.RightArm, this.LeftArm, entity, false); + case CROSSBOW_HOLD -> AnimationUtils.animateCrossbowHold(this.RightArm, this.LeftArm, this.head, false); + 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 @NotNull + public ModelPart root() { + return root; + } + + @Override + public void translateToHand(@NotNull HumanoidArm side, @NotNull PoseStack matrixStack) { + this.getArm(side).translateAndRotate(matrixStack); + } + + @Override @NotNull + public ModelPart getHead() { + return this.head; + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/PurpleSpottedBigeyeModel.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/PurpleSpottedBigeyeModel.java new file mode 100644 index 00000000..60c8ad55 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/PurpleSpottedBigeyeModel.java @@ -0,0 +1,58 @@ +package com.hexagram2021.emeraldcraft.client.models; + +import net.minecraft.client.model.HierarchicalModel; +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.CubeListBuilder; +import net.minecraft.client.model.geom.builders.LayerDefinition; +import net.minecraft.client.model.geom.builders.MeshDefinition; +import net.minecraft.client.model.geom.builders.PartDefinition; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class PurpleSpottedBigeyeModel extends HierarchicalModel { + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(MODID, "purple_spotted_bigeye"), "main"); + private final ModelPart root; + private final ModelPart tail; + + public PurpleSpottedBigeyeModel(ModelPart root) { + this.root = root; + this.tail = root.getChild("body").getChild("tail"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition body = partdefinition.addOrReplaceChild("body", + CubeListBuilder.create() + .texOffs(0, 0).addBox(-0.5F, -6.0F, -2.0F, 2.0F, 6.0F, 8.0F) + .texOffs(20, 4).addBox(0.5F, 0.0F, 0.0F, 0.0F, 4.0F, 6.0F) + .texOffs(20, -6).addBox(0.5F, -10.0F, 0.0F, 0.0F, 4.0F, 6.0F), + PartPose.offset(-0.5F, 24.0F, 0.0F)); + + body.addOrReplaceChild("tail", CubeListBuilder.create().texOffs(22, -1).addBox(0.0F, -6.0F, 0.0F, 0.0F, 6.0F, 5.0F), PartPose.offset(0.5F, 0.0F, 6.0F)); + + return LayerDefinition.create(meshdefinition, 32, 16); + } + + @Override @NotNull + public ModelPart root() { + return this.root; + } + + @Override + public void setupAnim(@NotNull T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + float f = 1.0F; + if (!entity.isInWater()) { + f = 1.5F; + } + + this.tail.yRot = -f * 0.45F * Mth.sin(0.6F * ageInTicks); + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/models/WraithModel.java b/src/main/java/com/hexagram2021/emeraldcraft/client/models/WraithModel.java new file mode 100644 index 00000000..9079dc44 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/models/WraithModel.java @@ -0,0 +1,63 @@ +package com.hexagram2021.emeraldcraft.client.models; + +import net.minecraft.client.model.HumanoidModel; +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.entity.LivingEntity; +import org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class WraithModel extends HumanoidModel { + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(MODID, "wraith"), "main"); + private final ModelPart heart; + private final ModelPart intestine; + + public WraithModel(ModelPart root) { + super(root); + ModelPart body = root.getChild("body"); + this.heart = body.getChild("heart"); + this.intestine = body.getChild("intestine"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition head = partdefinition.addOrReplaceChild("head", CubeListBuilder.create() + .texOffs(0, 0).addBox(-4.0F, -10.0F, -4.0F, 8.0F, 8.0F, 8.0F, new CubeDeformation(-0.5F)) + .texOffs(0, 0).addBox(-1.0F, -1.0F, -1.0F, 2.0F, 1.0F, 2.0F), PartPose.offset(0.0F, -4.0F, 0.0F)); + partdefinition.addOrReplaceChild("hat", CubeListBuilder.create().texOffs(0, 25).addBox(-4.0F, -10.0F, -4.0F, 8.0F, 10.0F, 8.0F), PartPose.offset(0.0F, -4.0F, 0.0F)); + head.addOrReplaceChild("mouth", CubeListBuilder.create().texOffs(0, 16).addBox(-3.5F, -1.5F, -4.0F, 7.0F, 1.0F, 8.0F), PartPose.rotation(0.3054F, 0.0F, 0.0F)); + + PartDefinition body = partdefinition.addOrReplaceChild("body", CubeListBuilder.create() + .texOffs(0, 43).addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F) + .texOffs(32, 6).addBox(-4.0F, 0.0F, -3.0F, 8.0F, 20.0F, 6.0F, new CubeDeformation(0.5F)) + .texOffs(24, 0).addBox(-4.0F, 6.0F, -1.0F, 4.0F, 2.0F, 2.0F) + .texOffs(24, 0).mirror().addBox(0.0F, 8.0F, -1.0F, 4.0F, 2.0F, 2.0F), PartPose.offset(0.0F, -4.0F, 0.0F)); + body.addOrReplaceChild("heart", CubeListBuilder.create().texOffs(36, 0).addBox(0.0F, 1.0F, -1.0F, 4.0F, 4.0F, 2.0F), PartPose.ZERO); + body.addOrReplaceChild("intestine", CubeListBuilder.create().texOffs(24, 0).addBox(-4.0F, -1.0F, 0.0F, 4.0F, 2.0F, 2.0F), PartPose.offsetAndRotation(0.0F, 9.0F, -1.0F, 0.0F, -0.523599F, -1.570796F)); + + partdefinition.addOrReplaceChild("right_arm", CubeListBuilder.create().texOffs(48, 40).addBox(-3.0F, -2.0F, -2.0F, 4.0F, 20.0F, 4.0F, new CubeDeformation(-0.5F)), PartPose.offset(-4.0F, -2.0F, 0.0F)); + partdefinition.addOrReplaceChild("left_arm", CubeListBuilder.create().texOffs(48, 40).mirror().addBox(-1.0F, -2.0F, -2.0F, 4.0F, 20.0F, 4.0F, new CubeDeformation(-0.5F)).mirror(false), PartPose.offset(4.0F, -2.0F, 0.0F)); + partdefinition.addOrReplaceChild("right_leg", CubeListBuilder.create().texOffs(48, 40).addBox(-2.0F, -2.0F, -2.0F, 4.0F, 20.0F, 4.0F, new CubeDeformation(-0.5F)), PartPose.offset(-2.0F, 8.0F, 0.0F)); + partdefinition.addOrReplaceChild("left_leg", CubeListBuilder.create().texOffs(48, 40).mirror().addBox(-2.0F, -2.0F, -2.0F, 4.0F, 20.0F, 4.0F, new CubeDeformation(-0.5F)).mirror(false), PartPose.offset(2.0F, 8.0F, 0.0F)); + + return LayerDefinition.create(meshdefinition, 64, 64); + } + + @Override + public void setupAnim(@NotNull T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + super.setupAnim(entity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); + + float t1 = ageInTicks / 8.0F; + this.heart.z = Mth.sin(t1 + Mth.PI / 4.0F) / 4.0F + Mth.sin(2.0F * t1) / 7.0F + Mth.sin(5.0F * t1) / 31.0F - Mth.sin(7.0F * t1) / 17.0F - 1.0F; + + float t2 = ageInTicks / 5.5F; + this.intestine.zRot = Mth.sin(t2) * 0.5F - Mth.PI / 2.0F; + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/ECBoatRenderer.java b/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/ECBoatRenderer.java new file mode 100644 index 00000000..af49605d --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/ECBoatRenderer.java @@ -0,0 +1,63 @@ +package com.hexagram2021.emeraldcraft.client.renderers; + +import com.google.common.collect.ImmutableMap; +import com.hexagram2021.emeraldcraft.common.entities.ECBoat; +import com.hexagram2021.emeraldcraft.common.entities.ECChestBoat; +import com.mojang.datafixers.util.Pair; +import net.minecraft.client.model.BoatModel; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.client.renderer.entity.BoatRenderer; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import org.jetbrains.annotations.NotNull; + +import java.util.Map; +import java.util.stream.Stream; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class ECBoatRenderer extends BoatRenderer { + private final Map> boatResources; + private final boolean withChest; + + public ECBoatRenderer(EntityRendererProvider.Context context, boolean withChest) { + super(context, withChest); + this.boatResources = Stream.of(ECBoat.ECBoatType.values()).collect( + ImmutableMap.toImmutableMap( + key -> key, + model -> Pair.of( + withChest ? + new ResourceLocation(MODID, "textures/entity/chest_boat/" + model.getName() + ".png") : + new ResourceLocation(MODID, "textures/entity/boat/" + model.getName() + ".png"), + new BoatModel(context.bakeLayer(withChest ? createChestBoatModelName(model) : createBoatModelName(model)), withChest) + ) + ) + ); + this.withChest = withChest; + } + + @Override @NotNull + public Pair getModelWithLocation(@NotNull Boat boat) { + if(this.withChest) { + return this.boatResources.get(((ECChestBoat)boat).getECBoatType()); + } + return this.boatResources.get(((ECBoat)boat).getECBoatType()); + } + + @SuppressWarnings("SameParameterValue") + private static ModelLayerLocation createLocation(String name, String layer) { + return new ModelLayerLocation(new ResourceLocation(MODID, name), layer); + } + + public static ModelLayerLocation createBoatModelName(ECBoat.ECBoatType model) { + return createLocation("boat/" + model.getName(), "main"); + } + + public static ModelLayerLocation createChestBoatModelName(ECBoat.ECBoatType model) { + return createLocation("chest_boat/" + model.getName(), "main"); + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/HerringRenderer.java b/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/HerringRenderer.java new file mode 100644 index 00000000..7f88e986 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/HerringRenderer.java @@ -0,0 +1,24 @@ +package com.hexagram2021.emeraldcraft.client.renderers; + +import com.hexagram2021.emeraldcraft.client.models.HerringModel; +import com.hexagram2021.emeraldcraft.common.entities.mobs.HerringEntity; +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 org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class HerringRenderer extends MobRenderer> { + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/entity/fishes/herring.png"); + + public HerringRenderer(EntityRendererProvider.Context manager) { + super(manager, new HerringModel<>(manager.bakeLayer(HerringModel.LAYER_LOCATION)), 0.7F); + } + + @Override @NotNull + public ResourceLocation getTextureLocation(@NotNull HerringEntity entity) { return TEXTURE; } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/MantaRenderer.java b/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/MantaRenderer.java new file mode 100644 index 00000000..38d76d34 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/MantaRenderer.java @@ -0,0 +1,24 @@ +package com.hexagram2021.emeraldcraft.client.renderers; + +import com.hexagram2021.emeraldcraft.client.models.MantaModel; +import com.hexagram2021.emeraldcraft.common.entities.mobs.MantaEntity; +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 org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class MantaRenderer extends MobRenderer> { + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/entity/manta/manta.png"); + + public MantaRenderer(EntityRendererProvider.Context manager) { + super(manager, new MantaModel<>(manager.bakeLayer(MantaModel.LAYER_LOCATION)), 0.8F); + } + + @Override @NotNull + public ResourceLocation getTextureLocation(@NotNull MantaEntity entity) { return TEXTURE; } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/NetherLambmanRenderer.java b/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/NetherLambmanRenderer.java new file mode 100644 index 00000000..69acd848 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/NetherLambmanRenderer.java @@ -0,0 +1,24 @@ +package com.hexagram2021.emeraldcraft.client.renderers; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.NetherLambmanEntity; +import com.hexagram2021.emeraldcraft.client.models.NetherLambmanModel; +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 org.jetbrains.annotations.NotNull; + +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 @NotNull + public ResourceLocation getTextureLocation(@NotNull NetherLambmanEntity entity) { return TEXTURE; } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/NetherPigmanRenderer.java b/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/NetherPigmanRenderer.java new file mode 100644 index 00000000..5ca7f34c --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/NetherPigmanRenderer.java @@ -0,0 +1,24 @@ +package com.hexagram2021.emeraldcraft.client.renderers; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.NetherPigmanEntity; +import com.hexagram2021.emeraldcraft.client.models.NetherPigmanModel; +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 org.jetbrains.annotations.NotNull; + +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 @NotNull + public ResourceLocation getTextureLocation(@NotNull NetherPigmanEntity entity) { return TEXTURE; } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/PiglinCuteyRenderer.java b/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/PiglinCuteyRenderer.java new file mode 100644 index 00000000..27ae9e6b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/PiglinCuteyRenderer.java @@ -0,0 +1,24 @@ +package com.hexagram2021.emeraldcraft.client.renderers; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.PiglinCuteyEntity; +import com.hexagram2021.emeraldcraft.client.models.PiglinCuteyModel; +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 org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +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 @NotNull + public ResourceLocation getTextureLocation(@NotNull PiglinCuteyEntity entity) { return TEXTURE; } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/PurpleSpottedBigeyeRenderer.java b/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/PurpleSpottedBigeyeRenderer.java new file mode 100644 index 00000000..d8b77529 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/PurpleSpottedBigeyeRenderer.java @@ -0,0 +1,24 @@ +package com.hexagram2021.emeraldcraft.client.renderers; + +import com.hexagram2021.emeraldcraft.client.models.PurpleSpottedBigeyeModel; +import com.hexagram2021.emeraldcraft.common.entities.mobs.PurpleSpottedBigeyeEntity; +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 org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class PurpleSpottedBigeyeRenderer extends MobRenderer> { + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/entity/fishes/purple_spotted_bigeye.png"); + + public PurpleSpottedBigeyeRenderer(EntityRendererProvider.Context manager) { + super(manager, new PurpleSpottedBigeyeModel<>(manager.bakeLayer(PurpleSpottedBigeyeModel.LAYER_LOCATION)), 0.7F); + } + + @Override @NotNull + public ResourceLocation getTextureLocation(@NotNull PurpleSpottedBigeyeEntity entity) { return TEXTURE; } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/WraithRenderer.java b/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/WraithRenderer.java new file mode 100644 index 00000000..6d03cf49 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/renderers/WraithRenderer.java @@ -0,0 +1,24 @@ +package com.hexagram2021.emeraldcraft.client.renderers; + +import com.hexagram2021.emeraldcraft.client.models.WraithModel; +import com.hexagram2021.emeraldcraft.common.entities.mobs.WraithEntity; +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 org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@OnlyIn(Dist.CLIENT) +public class WraithRenderer extends MobRenderer> { + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/entity/wraith/wraith.png"); + + public WraithRenderer(EntityRendererProvider.Context manager) { + super(manager, new WraithModel<>(manager.bakeLayer(WraithModel.LAYER_LOCATION)), 0.7F); + } + + @Override @NotNull + public ResourceLocation getTextureLocation(@NotNull WraithEntity entity) { return TEXTURE; } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/screens/CarpentryTableScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/client/screens/CarpentryTableScreen.java new file mode 100644 index 00000000..b76f3d63 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/screens/CarpentryTableScreen.java @@ -0,0 +1,183 @@ +package com.hexagram2021.emeraldcraft.client.screens; + +import com.hexagram2021.emeraldcraft.common.crafting.menu.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 org.jetbrains.annotations.NotNull; + +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(@NotNull PoseStack transform, int x, int y, float partialTicks) { + super.render(transform, x, y, partialTicks); + this.renderTooltip(transform, x, y); + } + + @Override + protected void renderBg(@NotNull 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(@NotNull 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 transform, int x, int y, int recipeX, int recipeY, int endIndex) { + for(int i = this.startIndex; i < endIndex && i < this.menu.getNumRecipes(); ++i) { + int j = i - this.startIndex; + int k = recipeX + j % 4 * 16; + int l = j / 4; + int i1 = recipeY + l * 18 + 2; + int j1 = this.imageHeight; + if (i == this.menu.getSelectedRecipeIndex()) { + j1 += 18; + } else if (x >= k && y >= i1 && x < k + 16 && y < i1 + 18) { + j1 += 36; + } + + this.blit(transform, 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 x, double y, int mouseButton) { + 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 = x - (double)(i + i1 % 4 * 16); + double d1 = y - (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 (x >= (double)i && x < (double)(i + 12) && y >= (double)j && y < (double)(j + 54)) { + this.scrolling = true; + } + } + + return super.mouseClicked(x, y, mouseButton); + } + + @Override + public boolean mouseDragged(double fromX, double fromY, int activeButton, double toX, double toY) { + if (this.scrolling && this.isScrollBarActive()) { + int i = this.topPos + 14; + int j = i + 54; + this.scrollOffs = ((float)fromY - (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(fromX, fromY, activeButton, toX, toY); + } + } + + @Override + public boolean mouseScrolled(double x, double y, double delta) { + if (this.isScrollBarActive()) { + int i = this.getOffscreenRows(); + this.scrollOffs = (float)((double)this.scrollOffs - delta / (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/client/screens/ContinuousMinerScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/client/screens/ContinuousMinerScreen.java new file mode 100644 index 00000000..df0b3581 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/screens/ContinuousMinerScreen.java @@ -0,0 +1,71 @@ +package com.hexagram2021.emeraldcraft.client.screens; + +import com.google.common.collect.Lists; +import com.hexagram2021.emeraldcraft.api.fluid.FluidTypes; +import com.hexagram2021.emeraldcraft.common.blocks.entity.ContinuousMinerBlockEntity; +import com.hexagram2021.emeraldcraft.common.crafting.menu.ContinuousMinerMenu; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +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 org.jetbrains.annotations.NotNull; + +import java.util.List; +import java.util.Optional; + +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(@NotNull 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(@NotNull 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); + } + } + + @Override + protected void renderTooltip(@NotNull PoseStack transform, int x, int y) { + super.renderTooltip(transform, x, y); + if(this.menu.getCarried().isEmpty() && this.hoveredSlot == null && this.isHovering(119, 20, 12, 49, x, y) && this.menu.getFluidLevel() > 0) { + this.renderTooltip(transform, this.getFluidTypeToolTips(this.menu.getFluidLevel()), Optional.empty(), x, y); + } + } + + private List getFluidTypeToolTips(int fluidLevel) { + List ret = Lists.newArrayList(Component.translatable(FluidTypes.melted_emerald.getTranslationTag())); + if(this.minecraft != null && this.minecraft.options.advancedItemTooltips) { + ret.add(Component.translatable("fluids.save.bucket", String.format("%.2f", fluidLevel / 100.0F), Component.translatable(ECItems.MELTED_EMERALD_BUCKET.get().getDescriptionId()))); + } + return ret; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/screens/GlassKilnScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/client/screens/GlassKilnScreen.java new file mode 100644 index 00000000..1fd81660 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/screens/GlassKilnScreen.java @@ -0,0 +1,133 @@ +package com.hexagram2021.emeraldcraft.client.screens; + +import com.hexagram2021.emeraldcraft.common.crafting.menu.GlassKilnMenu; +import com.hexagram2021.emeraldcraft.common.crafting.recipebook.GlassKilnRecipeBookComponent; +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 org.jetbrains.annotations.NotNull; + +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, button -> { + recipeBookComponent.toggleVisibility(); + this.leftPos = recipeBookComponent.updateScreenPosition(this.width, this.imageWidth); + ((ImageButton)button).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(@NotNull 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(@NotNull 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 x, double y, int mouseButton) { + if (recipeBookComponent.mouseClicked(x, y, mouseButton)) { + return true; + } + return this.widthTooNarrow && recipeBookComponent.isVisible() || super.mouseClicked(x, y, mouseButton); + } + + @Override + protected void slotClicked(@NotNull Slot clickedSlot, int x, int y, @NotNull ClickType type) { + super.slotClicked(clickedSlot, x, y, type); + recipeBookComponent.slotClicked(clickedSlot); + } + + @Override + public boolean keyPressed(int key, int scanCode, int modifiers) { + return !recipeBookComponent.keyPressed(key, scanCode, modifiers) && super.keyPressed(key, scanCode, modifiers); + } + + @Override + protected boolean hasClickedOutside(double x, double y, int left, int top, int mouseButton) { + boolean flag = x < (double)left || y < (double)top || x >= (double)(left + this.imageWidth) || y >= (double)(top + this.imageHeight); + return recipeBookComponent.hasClickedOutside(x, y, this.leftPos, this.topPos, this.imageWidth, this.imageHeight, mouseButton) && flag; + } + + @Override + public boolean charTyped(char code, int modifiers) { + return recipeBookComponent.charTyped(code, modifiers) || super.charTyped(code, modifiers); + } + + @Override + public void recipesUpdated() { + recipeBookComponent.recipesUpdated(); + } + + @Override @NotNull + public RecipeBookComponent getRecipeBookComponent() { + return recipeBookComponent; + } + + @Override + public void removed() { + recipeBookComponent.removed(); + super.removed(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/screens/IceMakerScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/client/screens/IceMakerScreen.java new file mode 100644 index 00000000..5995b00e --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/screens/IceMakerScreen.java @@ -0,0 +1,81 @@ +package com.hexagram2021.emeraldcraft.client.screens; + +import com.google.common.collect.Lists; +import com.hexagram2021.emeraldcraft.api.fluid.FluidType; +import com.hexagram2021.emeraldcraft.common.blocks.entity.IceMakerBlockEntity; +import com.hexagram2021.emeraldcraft.api.fluid.FluidTypes; +import com.hexagram2021.emeraldcraft.common.crafting.menu.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 org.jetbrains.annotations.NotNull; + +import java.util.List; +import java.util.Optional; + +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(@NotNull 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(@NotNull 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 * FluidTypes.getFluidTypeWithID(this.menu.getFluidTypeIndex()).getGUIID(), 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); + } + } + + @Override + protected void renderTooltip(@NotNull PoseStack transform, int x, int y) { + super.renderTooltip(transform, x, y); + if(this.menu.getCarried().isEmpty() && this.hoveredSlot == null && this.isHovering(79, 18, 12, 49, x, y) && this.menu.getIngredientFluidLevel() > 0) { + this.renderTooltip(transform, this.getFluidTypeToolTips(this.menu.getIngredientFluidLevel(), this.menu.getFluidType()), Optional.empty(), x, y); + } + } + + private List getFluidTypeToolTips(int fluidLevel, FluidType fluidType) { + List ret = Lists.newArrayList(Component.translatable(fluidType.getTranslationTag())); + if(this.minecraft != null && this.minecraft.options.advancedItemTooltips) { + ret.add(Component.translatable("fluids.save.bucket", String.format("%.2f", fluidLevel / 100.0F), Component.translatable(FluidTypes.getFluidBucketItem(fluidType).getDescriptionId()))); + } + return ret; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/screens/MelterScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/client/screens/MelterScreen.java new file mode 100644 index 00000000..f40f8868 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/screens/MelterScreen.java @@ -0,0 +1,79 @@ +package com.hexagram2021.emeraldcraft.client.screens; + +import com.google.common.collect.Lists; +import com.hexagram2021.emeraldcraft.api.fluid.FluidType; +import com.hexagram2021.emeraldcraft.common.blocks.entity.MelterBlockEntity; +import com.hexagram2021.emeraldcraft.api.fluid.FluidTypes; +import com.hexagram2021.emeraldcraft.common.crafting.menu.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 org.jetbrains.annotations.NotNull; + +import java.util.List; +import java.util.Optional; + +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(@NotNull 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(@NotNull 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 * FluidTypes.getFluidTypeWithID(this.menu.getFluidTypeIndex()).getGUIID(), 166 + k, 12, 49 - k); + } + } + + @Override + protected void renderTooltip(@NotNull PoseStack transform, int x, int y) { + super.renderTooltip(transform, x, y); + if(this.menu.getCarried().isEmpty() && this.hoveredSlot == null && this.isHovering(105, 18, 12, 49, x, y) && this.menu.getFluidLevel() > 0) { + this.renderTooltip(transform, this.getFluidTypeToolTips(this.menu.getFluidLevel(), this.menu.getFluidType()), Optional.empty(), x, y); + } + } + + private List getFluidTypeToolTips(int fluidLevel, FluidType fluidType) { + List ret = Lists.newArrayList(Component.translatable(fluidType.getTranslationTag())); + if(this.minecraft != null && this.minecraft.options.advancedItemTooltips) { + ret.add(Component.translatable("fluids.save.bucket", String.format("%.2f", fluidLevel / 100.0F), Component.translatable(FluidTypes.getFluidBucketItem(fluidType).getDescriptionId()))); + } + return ret; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/client/screens/MineralTableScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/client/screens/MineralTableScreen.java new file mode 100644 index 00000000..567276fb --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/screens/MineralTableScreen.java @@ -0,0 +1,65 @@ +package com.hexagram2021.emeraldcraft.client.screens; + +import com.hexagram2021.emeraldcraft.common.crafting.menu.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 org.jetbrains.annotations.NotNull; + +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(@NotNull 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(@NotNull 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/client/screens/PiglinCuteyMerchantScreen.java b/src/main/java/com/hexagram2021/emeraldcraft/client/screens/PiglinCuteyMerchantScreen.java new file mode 100644 index 00000000..61da4ee8 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/client/screens/PiglinCuteyMerchantScreen.java @@ -0,0 +1,335 @@ +package com.hexagram2021.emeraldcraft.client.screens; + +import com.hexagram2021.emeraldcraft.common.crafting.menu.PiglinCuteyMerchantMenu; +import com.hexagram2021.emeraldcraft.common.entities.mobs.PiglinCuteyData; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.network.chat.CommonComponents; +import net.minecraft.network.chat.Component; +import net.minecraft.network.protocol.game.ServerboundSelectTradePacket; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.trading.MerchantOffer; +import net.minecraft.world.item.trading.MerchantOffers; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import org.jetbrains.annotations.NotNull; + +@OnlyIn(Dist.CLIENT) +public class PiglinCuteyMerchantScreen extends AbstractContainerScreen { + private static final ResourceLocation VILLAGER_LOCATION = new ResourceLocation("textures/gui/container/villager2.png"); + private static final int TEXTURE_WIDTH = 512; + private static final int TEXTURE_HEIGHT = 256; + private static final int MERCHANT_MENU_PART_X = 99; + private static final int PROGRESS_BAR_X = 136; + private static final int PROGRESS_BAR_Y = 16; + private static final int SELL_ITEM_1_X = 5; + private static final int SELL_ITEM_2_X = 35; + private static final int BUY_ITEM_X = 68; + private static final int LABEL_Y = 6; + private static final int NUMBER_OF_OFFER_BUTTONS = 7; + private static final int TRADE_BUTTON_X = 5; + private static final int TRADE_BUTTON_HEIGHT = 20; + private static final int TRADE_BUTTON_WIDTH = 89; + private static final int SCROLLER_HEIGHT = 27; + private static final int SCROLLER_WIDTH = 6; + private static final int SCROLL_BAR_HEIGHT = 139; + private static final int SCROLL_BAR_TOP_POS_Y = 18; + private static final int SCROLL_BAR_START_X = 94; + private static final Component TRADES_LABEL = Component.translatable("merchant.trades"); + private static final Component LEVEL_SEPARATOR = Component.literal(" - "); + private static final Component DEPRECATED_TOOLTIP = Component.translatable("merchant.deprecated"); + private int shopItem; + private final TradeOfferButton[] tradeOfferButtons = new TradeOfferButton[NUMBER_OF_OFFER_BUTTONS]; + int scrollOff; + private boolean isDragging; + + public PiglinCuteyMerchantScreen(PiglinCuteyMerchantMenu menu, Inventory inventory, Component title) { + super(menu, inventory, title); + this.imageWidth = 276; + this.inventoryLabelX = 107; + } + + private void postButtonClick() { + this.menu.setSelectionHint(this.shopItem); + this.menu.tryMoveItems(this.shopItem); + this.minecraft.getConnection().send(new ServerboundSelectTradePacket(this.shopItem)); + } + + @Override + protected void init() { + super.init(); + int left = (this.width - this.imageWidth) / 2; + int top = (this.height - this.imageHeight) / 2; + int buttonY = top + PROGRESS_BAR_Y + 2; + + for(int i = 0; i < NUMBER_OF_OFFER_BUTTONS; ++i) { + this.tradeOfferButtons[i] = this.addRenderableWidget(new TradeOfferButton(left + TRADE_BUTTON_X, buttonY, i, button -> { + if (button instanceof TradeOfferButton) { + this.shopItem = ((TradeOfferButton)button).getIndex() + this.scrollOff; + this.postButtonClick(); + } + + })); + buttonY += TRADE_BUTTON_HEIGHT; + } + } + + @Override + protected void renderLabels(@NotNull PoseStack transform, int x, int y) { + int level = this.menu.getTraderLevel(); + if (level > 0 && level <= 5 && this.menu.showProgressBar()) { + Component component = this.title.copy().append(LEVEL_SEPARATOR).append(Component.translatable("merchant.level." + level)); + int fontWidth = this.font.width(component); + int k = 49 + this.imageWidth / 2 - fontWidth / 2; + this.font.draw(transform, component, (float)k, 6.0F, 0x404040); + } else { + this.font.draw(transform, this.title, (float)(49 + this.imageWidth / 2 - this.font.width(this.title) / 2), 6.0F, 0x404040); + } + + this.font.draw(transform, this.playerInventoryTitle, (float)this.inventoryLabelX, (float)this.inventoryLabelY, 0x404040); + int l = this.font.width(TRADES_LABEL); + this.font.draw(transform, TRADES_LABEL, (float)(5 - l / 2 + 48), 6.0F, 0x404040); + } + + @Override + protected void renderBg(@NotNull 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, VILLAGER_LOCATION); + int left = (this.width - this.imageWidth) / 2; + int top = (this.height - this.imageHeight) / 2; + blit(transform, left, top, this.getBlitOffset(), 0.0F, 0.0F, this.imageWidth, this.imageHeight, TEXTURE_WIDTH, TEXTURE_HEIGHT); + MerchantOffers merchantoffers = this.menu.getOffers(); + if (!merchantoffers.isEmpty()) { + int k = this.shopItem; + if (k < 0 || k >= merchantoffers.size()) { + return; + } + + MerchantOffer merchantoffer = merchantoffers.get(k); + if (merchantoffer.isOutOfStock()) { + RenderSystem.setShaderTexture(0, VILLAGER_LOCATION); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + blit(transform, this.leftPos + 83 + MERCHANT_MENU_PART_X, this.topPos + 35, this.getBlitOffset(), 311.0F, 0.0F, 28, 21, TEXTURE_WIDTH, TEXTURE_HEIGHT); + } + } + + } + + private void renderProgressBar(PoseStack transform, int x, int y) { + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderTexture(0, VILLAGER_LOCATION); + int level = this.menu.getTraderLevel(); + int xp = this.menu.getTraderXp(); + if (level < 5) { + blit(transform, x + PROGRESS_BAR_X, y + PROGRESS_BAR_Y, this.getBlitOffset(), 0.0F, 186.0F, 102, 5, TEXTURE_WIDTH, TEXTURE_HEIGHT); + int k = PiglinCuteyData.getMinXpPerLevel(level); + if (xp >= k && PiglinCuteyData.canLevelUp(level)) { + float f = 100.0F / (float)(PiglinCuteyData.getMaxXpPerLevel(level) - k); + int progress = Math.min(Mth.floor(f * (float)(xp - k)), 100); + blit(transform, x + PROGRESS_BAR_X, y + PROGRESS_BAR_Y, this.getBlitOffset(), 0.0F, 191.0F, progress + 1, 5, TEXTURE_WIDTH, TEXTURE_HEIGHT); + int addXp = this.menu.getFutureTraderXp(); + if (addXp > 0) { + int addProgress = Math.min(Mth.floor((float)addXp * f), 100 - progress); + blit(transform, x + PROGRESS_BAR_X + progress + 1, y + PROGRESS_BAR_Y + 1, this.getBlitOffset(), 2.0F, 182.0F, addProgress, 3, TEXTURE_WIDTH, TEXTURE_HEIGHT); + } + + } + } + } + + private void renderScroller(PoseStack transform, int x, int y, MerchantOffers offers) { + int overSize = offers.size() + 1 - NUMBER_OF_OFFER_BUTTONS; + if (overSize > 1) { + int overHeight = SCROLL_BAR_HEIGHT - (27 + (overSize - 1) * SCROLL_BAR_HEIGHT / overSize); + int index = 1 + overHeight / overSize + SCROLL_BAR_HEIGHT / overSize; + int scrollY = Math.min(113, this.scrollOff * index); + if (this.scrollOff == overSize - 1) { + scrollY = 113; + } + + blit(transform, x + SCROLL_BAR_START_X, y + SCROLL_BAR_TOP_POS_Y + scrollY, this.getBlitOffset(), 0.0F, 199.0F, SCROLLER_WIDTH, SCROLLER_HEIGHT, TEXTURE_WIDTH, TEXTURE_HEIGHT); + } else { + blit(transform, x + SCROLL_BAR_START_X, y + SCROLL_BAR_TOP_POS_Y, this.getBlitOffset(), 6.0F, 199.0F, SCROLLER_WIDTH, SCROLLER_HEIGHT, TEXTURE_WIDTH, TEXTURE_HEIGHT); + } + + } + + @Override + public void render(@NotNull PoseStack transform, int x, int y, float partialTicks) { + this.renderBackground(transform); + super.render(transform, x, y, partialTicks); + MerchantOffers merchantoffers = this.menu.getOffers(); + if (!merchantoffers.isEmpty()) { + int left = (this.width - this.imageWidth) / 2; + int top = (this.height - this.imageHeight) / 2; + int merchantY = top + PROGRESS_BAR_Y + 1; + int costAX = left + TRADE_BUTTON_X + SELL_ITEM_1_X; + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderTexture(0, VILLAGER_LOCATION); + this.renderScroller(transform, left, top, merchantoffers); + int index = 0; + + for(MerchantOffer merchantoffer : merchantoffers) { + if (this.canScroll(merchantoffers.size()) && (index < this.scrollOff || index >= NUMBER_OF_OFFER_BUTTONS + this.scrollOff)) { + ++index; + } else { + ItemStack baseCostA = merchantoffer.getBaseCostA(); + ItemStack costA = merchantoffer.getCostA(); + ItemStack costB = merchantoffer.getCostB(); + ItemStack result = merchantoffer.getResult(); + this.itemRenderer.blitOffset = 100.0F; + int itemY = merchantY + 2; + this.renderAndDecorateCostA(transform, costA, baseCostA, costAX, itemY); + if (!costB.isEmpty()) { + this.itemRenderer.renderAndDecorateFakeItem(costB, left + SELL_ITEM_1_X + SELL_ITEM_2_X, itemY); + this.itemRenderer.renderGuiItemDecorations(this.font, costB, left + SELL_ITEM_1_X + SELL_ITEM_2_X, itemY); + } + + this.renderButtonArrows(transform, merchantoffer, left, itemY); + this.itemRenderer.renderAndDecorateFakeItem(result, left + SELL_ITEM_1_X + BUY_ITEM_X, itemY); + this.itemRenderer.renderGuiItemDecorations(this.font, result, left + SELL_ITEM_1_X + BUY_ITEM_X, itemY); + this.itemRenderer.blitOffset = 0.0F; + merchantY += TRADE_BUTTON_HEIGHT; + ++index; + } + } + + MerchantOffer currentOffer = merchantoffers.get(this.shopItem); + if (this.menu.showProgressBar()) { + this.renderProgressBar(transform, left, top); + } + + if (currentOffer.isOutOfStock() && this.isHovering(186, 35, 22, 21, x, y) && this.menu.canRestock()) { + this.renderTooltip(transform, DEPRECATED_TOOLTIP, x, y); + } + + for(TradeOfferButton merchantscreen$tradeofferbutton : this.tradeOfferButtons) { + if (merchantscreen$tradeofferbutton.isHoveredOrFocused()) { + merchantscreen$tradeofferbutton.renderToolTip(transform, x, y); + } + + merchantscreen$tradeofferbutton.visible = merchantscreen$tradeofferbutton.index < this.menu.getOffers().size(); + } + + RenderSystem.enableDepthTest(); + } + + this.renderTooltip(transform, x, y); + } + + private void renderButtonArrows(PoseStack transform, MerchantOffer offer, int x, int y) { + RenderSystem.enableBlend(); + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderTexture(0, VILLAGER_LOCATION); + if (offer.isOutOfStock()) { + blit(transform, x + SELL_ITEM_1_X + SELL_ITEM_2_X + 20, y + 3, this.getBlitOffset(), 25.0F, 171.0F, 10, 9, TEXTURE_WIDTH, TEXTURE_HEIGHT); + } else { + blit(transform, x + SELL_ITEM_1_X + SELL_ITEM_2_X + 20, y + 3, this.getBlitOffset(), 15.0F, 171.0F, 10, 9, TEXTURE_WIDTH, TEXTURE_HEIGHT); + } + + } + + private void renderAndDecorateCostA(PoseStack transform, ItemStack baseCostA, ItemStack costA, int x, int y) { + this.itemRenderer.renderAndDecorateFakeItem(baseCostA, x, y); + if (costA.getCount() == baseCostA.getCount()) { + this.itemRenderer.renderGuiItemDecorations(this.font, baseCostA, x, y); + } else { + this.itemRenderer.renderGuiItemDecorations(this.font, costA, x, y, costA.getCount() == 1 ? "1" : null); + PoseStack posestack = new PoseStack(); + posestack.translate(0.0D, 0.0D, (this.itemRenderer.blitOffset + 200.0F)); + net.minecraft.client.renderer.MultiBufferSource.BufferSource bufferSource = net.minecraft.client.renderer.MultiBufferSource.immediate(com.mojang.blaze3d.vertex.Tesselator.getInstance().getBuilder()); + this.font.drawInBatch(String.valueOf(baseCostA.getCount()), (x + 14) + 19 - 2 - font.width(String.valueOf(baseCostA.getCount())), y + LABEL_Y + 3, 0xFFFFFF, true, posestack.last().pose(), bufferSource, false, 0, 15728880); + bufferSource.endBatch(); + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderTexture(0, VILLAGER_LOCATION); + this.setBlitOffset(this.getBlitOffset() + 300); + blit(transform, x + 7, y + 12, this.getBlitOffset(), 0.0F, 176.0F, 9, 2, TEXTURE_WIDTH, TEXTURE_HEIGHT); + this.setBlitOffset(this.getBlitOffset() - 300); + } + + } + + private boolean canScroll(int size) { + return size > NUMBER_OF_OFFER_BUTTONS; + } + + @Override + public boolean mouseScrolled(double x, double y, double delta) { + int size = this.menu.getOffers().size(); + if (this.canScroll(size)) { + int overSize = size - NUMBER_OF_OFFER_BUTTONS; + this.scrollOff = Mth.clamp((int)((double)this.scrollOff - delta), 0, overSize); + } + + return true; + } + + @Override + public boolean mouseDragged(double fromX, double fromY, int activeButton, double toX, double toY) { + int size = this.menu.getOffers().size(); + if (this.isDragging) { + int scrollTop = this.topPos + SCROLL_BAR_TOP_POS_Y; + int scrollBottom = scrollTop + SCROLL_BAR_HEIGHT; + int overSize = size - NUMBER_OF_OFFER_BUTTONS; + float scrollIndex = ((float)fromY - (float)scrollTop - 13.5F) / ((float)(scrollBottom - scrollTop) - 27.0F); + scrollIndex = scrollIndex * (float)overSize + 0.5F; + this.scrollOff = Mth.clamp((int)scrollIndex, 0, overSize); + return true; + } + return super.mouseDragged(fromX, fromY, activeButton, toX, toY); + } + + @Override + public boolean mouseClicked(double x, double y, int mouseButton) { + this.isDragging = false; + int left = (this.width - this.imageWidth) / 2; + int top = (this.height - this.imageHeight) / 2; + if (this.canScroll(this.menu.getOffers().size()) && + x > (double)(left + SCROLL_BAR_START_X) && x < (double)(left + SCROLL_BAR_START_X + SCROLLER_WIDTH) && + y > (double)(top + SCROLL_BAR_TOP_POS_Y) && y <= (double)(top + SCROLL_BAR_TOP_POS_Y + SCROLL_BAR_HEIGHT + 1)) { + this.isDragging = true; + } + + return super.mouseClicked(x, y, mouseButton); + } + + @OnlyIn(Dist.CLIENT) + class TradeOfferButton extends Button { + final int index; + + public TradeOfferButton(int x, int y, int index, Button.OnPress onPress) { + super(x, y, TRADE_BUTTON_WIDTH, TRADE_BUTTON_HEIGHT, CommonComponents.EMPTY, onPress); + this.index = index; + this.visible = false; + } + + public int getIndex() { + return this.index; + } + + @Override + public void renderToolTip(@NotNull PoseStack transform, int x, int y) { + if (this.isHovered && PiglinCuteyMerchantScreen.this.menu.getOffers().size() > this.index + PiglinCuteyMerchantScreen.this.scrollOff) { + if (x < this.x + 20) { + ItemStack itemstack = PiglinCuteyMerchantScreen.this.menu.getOffers().get(this.index + PiglinCuteyMerchantScreen.this.scrollOff).getCostA(); + PiglinCuteyMerchantScreen.this.renderTooltip(transform, itemstack, x, y); + } else if (x < this.x + 50 && x > this.x + 30) { + ItemStack itemstack2 = PiglinCuteyMerchantScreen.this.menu.getOffers().get(this.index + PiglinCuteyMerchantScreen.this.scrollOff).getCostB(); + if (!itemstack2.isEmpty()) { + PiglinCuteyMerchantScreen.this.renderTooltip(transform, itemstack2, x, y); + } + } else if (x > this.x + 65) { + ItemStack itemstack1 = PiglinCuteyMerchantScreen.this.menu.getOffers().get(this.index + PiglinCuteyMerchantScreen.this.scrollOff).getResult(); + PiglinCuteyMerchantScreen.this.renderTooltip(transform, itemstack1, x, y); + } + } + } + } +} 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..a491cf90 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/CommonProxy.java @@ -0,0 +1,39 @@ +/* + * 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; + +@SuppressWarnings("unused") +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..ed615718 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/ECContent.java @@ -0,0 +1,67 @@ +package com.hexagram2021.emeraldcraft.common; + +import com.hexagram2021.emeraldcraft.common.crafting.compat.ModsLoadedEventSubscriber; +import com.hexagram2021.emeraldcraft.common.register.*; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import com.hexagram2021.emeraldcraft.common.world.ECBiomeModifiers; +import com.hexagram2021.emeraldcraft.common.world.compat.ECNetherBiomeRegion; +import com.hexagram2021.emeraldcraft.common.world.compat.ECOverworldBiomeRegion; +import com.hexagram2021.emeraldcraft.common.world.surface.ECSurfaceRules; +import com.hexagram2021.emeraldcraft.common.world.village.Villages; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import net.minecraftforge.registries.RegisterEvent; +import terrablender.api.Regions; +import terrablender.api.SurfaceRuleManager; + +import java.util.function.Consumer; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@EventBusSubscriber(modid = MODID, bus = EventBusSubscriber.Bus.MOD) +public class ECContent { + public static void modConstruction(IEventBus bus, Consumer runLater) { + ModsLoadedEventSubscriber.compatModLoaded(); + + ECWoodType.init(); + ECBlocks.init(bus); + ECItems.init(bus); + ECBannerPatterns.init(bus); + Villages.Registers.POINTS_OF_INTEREST.register(bus); + Villages.Registers.PROFESSIONS.register(bus); + ECLootModifiers.init(bus); + ECRecipes.init(bus); + ECRecipeSerializer.init(bus); + ECContainerTypes.init(bus); + ECBlockEntity.init(bus); + ECPlacementModifierType.init(bus); + ECBiomes.init(bus); + ECBiomeModifiers.init(bus); + + runLater.accept(ModsLoadedEventSubscriber::SolveCompat); + } + + public static void init() { + SurfaceRuleManager.addSurfaceRules(SurfaceRuleManager.RuleCategory.OVERWORLD, MODID, ECSurfaceRules.overworld()); + SurfaceRuleManager.addSurfaceRules(SurfaceRuleManager.RuleCategory.NETHER, MODID, ECSurfaceRules.nether()); + Regions.register(new ECOverworldBiomeRegion(40)); + Regions.register(new ECNetherBiomeRegion(40)); + } + + @SubscribeEvent + public static void onRegister(RegisterEvent event) { + ECSounds.init(event); + + ECEntities.init(event); + + ECFeatures.init(event); + + ECPotions.init(event); + + ECStructureTypes.init(); + ECStructurePieceTypes.init(); + ECStructures.init(); + ECStructureSets.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..ad02cdb8 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/ECSaveData.java @@ -0,0 +1,40 @@ +package com.hexagram2021.emeraldcraft.common; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.world.level.saveddata.SavedData; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nonnull; + +public class ECSaveData extends SavedData { + private static ECSaveData INSTANCE; + public static final String dataName = "EmeraldCraft-SaveData"; + + public ECSaveData() { + super(); + } + + public ECSaveData(CompoundTag nbt) { + this(); + } + + @Override @NotNull + public CompoundTag save(@Nonnull CompoundTag nbt) { + ListTag dimensionList = new ListTag(); + + //nbt.put("", dimensionList); + + 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..0cc627a8 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/MobAttributeEventSubscriber.java @@ -0,0 +1,24 @@ +package com.hexagram2021.emeraldcraft.common; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.*; +import com.hexagram2021.emeraldcraft.common.register.ECEntities; +import net.minecraft.world.entity.animal.AbstractFish; +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, PiglinCuteyEntity.createAttributes().build()); + event.put(ECEntities.NETHER_PIGMAN, NetherPigmanEntity.createAttributes().build()); + event.put(ECEntities.NETHER_LAMBMAN, NetherLambmanEntity.createAttributes().build()); + event.put(ECEntities.HERRING, AbstractFish.createAttributes().build()); + event.put(ECEntities.PURPLE_SPOTTED_BIGEYE, AbstractFish.createAttributes().build()); + event.put(ECEntities.WRAITH, WraithEntity.createAttributes().build()); + event.put(ECEntities.MANTA, MantaEntity.createAttributes().build()); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/ModVanillaCompat.java b/src/main/java/com/hexagram2021/emeraldcraft/common/ModVanillaCompat.java new file mode 100644 index 00000000..200c81ed --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/ModVanillaCompat.java @@ -0,0 +1,88 @@ +package com.hexagram2021.emeraldcraft.common; + +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import net.minecraft.world.item.AxeItem; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.ComposterBlock; +import net.minecraft.world.level.block.FireBlock; + +import java.util.Map; + +public class ModVanillaCompat { + public static void setup() { + Map strippables = Maps.newHashMap(AxeItem.STRIPPABLES); + strippables.putAll( + ImmutableMap.builder() + .put(ECBlocks.Plant.GINKGO_LOG.get(), ECBlocks.Plant.STRIPPED_GINKGO_LOG.get()) + .put(ECBlocks.Plant.GINKGO_WOOD.get(), ECBlocks.Plant.STRIPPED_GINKGO_WOOD.get()) + .put(ECBlocks.Plant.PALM_LOG.get(), ECBlocks.Plant.STRIPPED_PALM_LOG.get()) + .put(ECBlocks.Plant.PALM_WOOD.get(), ECBlocks.Plant.STRIPPED_PALM_WOOD.get()) + .put(ECBlocks.Plant.PEACH_LOG.get(), ECBlocks.Plant.STRIPPED_PEACH_LOG.get()) + .put(ECBlocks.Plant.PEACH_WOOD.get(), ECBlocks.Plant.STRIPPED_PEACH_WOOD.get()) + .put(ECBlocks.Plant.PURPURACEUS_STEM.get(), ECBlocks.Plant.STRIPPED_PURPURACEUS_STEM.get()) + .put(ECBlocks.Plant.PURPURACEUS_HYPHAE.get(), ECBlocks.Plant.STRIPPED_PURPURACEUS_HYPHAE.get()) + .build() + ); + AxeItem.STRIPPABLES = strippables; + + ComposterBlock.COMPOSTABLES.put(ECItems.CHILI.asItem(), 0.65F); + ComposterBlock.COMPOSTABLES.put(ECItems.CHILI_SEED.asItem(), 0.3F); + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.GINKGO_LEAVES.asItem(), 0.3F); + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.GINKGO_LEAVES.asItem(), 0.3F); + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.GINKGO_SAPLING.asItem(), 0.3F); + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.PALM_LEAVES.asItem(), 0.3F); + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.PALM_SAPLING.asItem(), 0.3F); + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.PEACH_LEAVES.asItem(), 0.3F); + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.PEACH_SAPLING.asItem(), 0.3F); + ComposterBlock.COMPOSTABLES.put(ECItems.GINKGO_NUT.asItem(), 0.65F); + ComposterBlock.COMPOSTABLES.put(ECItems.PEACH.asItem(), 0.65F); + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.CYAN_PETUNIA.asItem(), 0.65F); + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.MAGENTA_PETUNIA.asItem(), 0.65F); + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.HIGAN_BANA.asItem(), 0.65F); + ComposterBlock.COMPOSTABLES.put(ECItems.WARPED_WART.asItem(), 0.65F); + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.PURPURACEUS_ROOTS.asItem(), 0.65F); + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.PURPURACEUS_FUNGUS.asItem(), 0.65F); + ComposterBlock.COMPOSTABLES.put(ECBlocks.Plant.PURPURACEUS_WART_BLOCK.asItem(), 0.85F); + + registerFlammable(ECBlocks.Plant.GINKGO_LEAVES.get(), 30, 60); + registerFlammable(ECBlocks.Plant.GINKGO_LOG.get(), 5, 5); + registerFlammable(ECBlocks.Plant.GINKGO_WOOD.get(), 5, 5); + registerFlammable(ECBlocks.Plant.STRIPPED_GINKGO_LOG.get(), 5, 5); + registerFlammable(ECBlocks.Plant.STRIPPED_GINKGO_WOOD.get(), 5, 5); + registerFlammable(ECBlocks.Plant.GINKGO_PLANKS.get(), 5, 20); + registerFlammable(ECBlocks.TO_SLAB.get(ECBlocks.Plant.GINKGO_PLANKS.getId()).get(), 5, 20); + registerFlammable(ECBlocks.TO_STAIRS.get(ECBlocks.Plant.GINKGO_PLANKS.getId()).get(), 5, 20); + registerFlammable(ECBlocks.TO_FENCE.get(ECBlocks.Plant.GINKGO_PLANKS.getId()).get(), 5, 20); + registerFlammable(ECBlocks.TO_FENCE_GATE.get(ECBlocks.Plant.GINKGO_PLANKS.getId()).get(), 5, 20); + registerFlammable(ECBlocks.Plant.PALM_LEAVES.get(), 30, 60); + registerFlammable(ECBlocks.Plant.PALM_LOG.get(), 5, 5); + registerFlammable(ECBlocks.Plant.PALM_WOOD.get(), 5, 5); + registerFlammable(ECBlocks.Plant.STRIPPED_PALM_LOG.get(), 5, 5); + registerFlammable(ECBlocks.Plant.STRIPPED_PALM_WOOD.get(), 5, 5); + registerFlammable(ECBlocks.Plant.PALM_PLANKS.get(), 5, 20); + registerFlammable(ECBlocks.TO_SLAB.get(ECBlocks.Plant.PALM_PLANKS.getId()).get(), 5, 20); + registerFlammable(ECBlocks.TO_STAIRS.get(ECBlocks.Plant.PALM_PLANKS.getId()).get(), 5, 20); + registerFlammable(ECBlocks.TO_FENCE.get(ECBlocks.Plant.PALM_PLANKS.getId()).get(), 5, 20); + registerFlammable(ECBlocks.TO_FENCE_GATE.get(ECBlocks.Plant.PALM_PLANKS.getId()).get(), 5, 20); + registerFlammable(ECBlocks.Plant.PEACH_LEAVES.get(), 30, 60); + registerFlammable(ECBlocks.Plant.PEACH_LOG.get(), 5, 5); + registerFlammable(ECBlocks.Plant.PEACH_WOOD.get(), 5, 5); + registerFlammable(ECBlocks.Plant.STRIPPED_PEACH_LOG.get(), 5, 5); + registerFlammable(ECBlocks.Plant.STRIPPED_PEACH_WOOD.get(), 5, 5); + registerFlammable(ECBlocks.Plant.PEACH_PLANKS.get(), 5, 20); + registerFlammable(ECBlocks.TO_SLAB.get(ECBlocks.Plant.PEACH_PLANKS.getId()).get(), 5, 20); + registerFlammable(ECBlocks.TO_STAIRS.get(ECBlocks.Plant.PEACH_PLANKS.getId()).get(), 5, 20); + registerFlammable(ECBlocks.TO_FENCE.get(ECBlocks.Plant.PEACH_PLANKS.getId()).get(), 5, 20); + registerFlammable(ECBlocks.TO_FENCE_GATE.get(ECBlocks.Plant.PEACH_PLANKS.getId()).get(), 5, 20); + } + + private static final FireBlock fireblock = (FireBlock)Blocks.FIRE; + + public static void registerFlammable(Block blockIn, int encouragement, int flammability) { + fireblock.setFlammable(blockIn, encouragement, flammability); + } +} 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..ebfc1957 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/ContinuousMinerBlockEntity.java @@ -0,0 +1,370 @@ +package com.hexagram2021.emeraldcraft.common.blocks.entity; + +import com.hexagram2021.emeraldcraft.api.continuous_miner.ContinuousMinerCustomLoot; +import com.hexagram2021.emeraldcraft.common.blocks.workstation.ContinuousMinerBlock; +import com.hexagram2021.emeraldcraft.common.crafting.menu.ContinuousMinerMenu; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +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.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundSource; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.RandomSource; +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.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.block.state.properties.BlockStateProperties; +import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.wrapper.SidedInvWrapper; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.List; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@SuppressWarnings("unused") +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 @NotNull + protected Component getDefaultName() { + return Component.translatable("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 this.fluid; + } + + public void setFluidLevel(int newFluidLevel) { + this.fluid = newFluidLevel; + } + + @Override + public void load(@NotNull 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"); + } + + @Override + public void saveAdditional(@NotNull CompoundTag nbt) { + super.saveAdditional(nbt); + nbt.putInt("Fluid", this.fluid); + nbt.putInt("MineTime", this.mineTime); + ContainerHelper.saveAllItems(nbt, this.items); + } + + public static ItemStack byState(BlockState blockState, ServerLevel level, RandomSource 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.MANGROVE_LOGS)) { + rl = new ResourceLocation(MODID, "continuous_miner/wood/mangrove_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 if (blockState.is(BlockTags.DIRT)) { + rl = new ResourceLocation(MODID, "continuous_miner/ores/dirt"); + } else if (blockState.is(Blocks.WATER) || blockState.is(Blocks.WATER_CAULDRON) || (blockState.hasProperty(BlockStateProperties.WATERLOGGED) && blockState.getValue(BlockStateProperties.WATERLOGGED))) { + //TODO: Different biomes product different fishes. + rl = new ResourceLocation(MODID, "continuous_miner/fishing"); + } else { + rl = ContinuousMinerCustomLoot.getBlockLoot(blockState); + if(rl == null) { + 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); + } + + public void dispenseFrom(BlockState blockState, ServerLevel level, BlockPos pos, RandomSource random) { + final double velo = 0.1D; + + Direction facing = blockState.getValue(ContinuousMinerBlock.FACING); + BlockState front = level.getBlockState(pos.relative(facing)); + ItemStack itemstack = byState(front, level, 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(@NotNull 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(@NotNull StackedContents contents) { + for(ItemStack itemstack : this.items) { + contents.accountStack(itemstack); + } + } + + @Override + public boolean stillValid(@NotNull 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 @NotNull + public ItemStack getItem(int index) { + return this.items.get(index); + } + + @Override @NotNull + public ItemStack removeItem(int index, int count) { + return ContainerHelper.removeItem(this.items, index, count); + } + + @Override @NotNull + public ItemStack removeItemNoUpdate(int index) { + return ContainerHelper.takeItem(this.items, index); + } + + @Override + public void setItem(int index, @NotNull 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, @NotNull ItemStack itemStack, Direction direction) { + return this.canPlaceItem(index, itemStack); + } + + @Override + public boolean canTakeItemThroughFace(int index, @NotNull ItemStack itemStack, @NotNull Direction direction) { + return true; + } + + LazyOptional[] handlers = + SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + + @Override @NotNull + public LazyOptional getCapability(@NotNull 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 (LazyOptional handler : handlers) { + handler.invalidate(); + } + } + + @Override + public void reviveCaps() { + super.reviveCaps(); + this.handlers = SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + } + + @Override @NotNull + protected AbstractContainerMenu createMenu(int id, @NotNull 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..142b53af --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/GlassKilnBlockEntity.java @@ -0,0 +1,432 @@ +package com.hexagram2021.emeraldcraft.common.blocks.entity; + +import com.google.common.collect.Lists; +import com.hexagram2021.emeraldcraft.common.blocks.workstation.GlassKilnBlock; +import com.hexagram2021.emeraldcraft.common.crafting.menu.GlassKilnMenu; +import com.hexagram2021.emeraldcraft.common.crafting.GlassKilnRecipe; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +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.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +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.ExperienceOrb; +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.RecipeHolder; +import net.minecraft.world.inventory.StackedContentsCompatible; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BaseContainerBlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.common.ForgeHooks; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.wrapper.SidedInvWrapper; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.List; + +public class GlassKilnBlockEntity extends BaseContainerBlockEntity implements WorldlyContainer, RecipeHolder, StackedContentsCompatible { + protected static final int SLOT_INPUT = 0; + protected static final int SLOT_FUEL = 1; + protected static final int SLOT_RESULT = 2; + public static final int NUM_SLOTS = 3; + public static final int DATA_LIT_TIME = 0; + public static final int DATA_LIT_DURATION = 1; + public static final int DATA_COOKING_PROGRESS = 2; + public static final int DATA_COOKING_TOTAL_TIME = 3; + public static final int NUM_DATA_VALUES = 4; + private static final int[] SLOTS_FOR_UP = new int[]{SLOT_INPUT}; + private static final int[] SLOTS_FOR_DOWN = new int[]{SLOT_RESULT, SLOT_FUEL}; + private static final int[] SLOTS_FOR_SIDES = new int[]{SLOT_FUEL}; + public static final int BURN_COOL_SPEED = 2; + protected NonNullList items = NonNullList.withSize(NUM_SLOTS, ItemStack.EMPTY); + int litTime; + int litDuration; + int cookingProgress; + int cookingTotalTime; + protected final ContainerData dataAccess = new ContainerData() { + public int get(int index) { + return switch (index) { + case DATA_LIT_TIME -> GlassKilnBlockEntity.this.litTime; + case DATA_LIT_DURATION -> GlassKilnBlockEntity.this.litDuration; + case DATA_COOKING_PROGRESS -> GlassKilnBlockEntity.this.cookingProgress; + case DATA_COOKING_TOTAL_TIME -> GlassKilnBlockEntity.this.cookingTotalTime; + default -> 0; + }; + } + + public void set(int index, int value) { + switch (index) { + case DATA_LIT_TIME -> GlassKilnBlockEntity.this.litTime = value; + case DATA_LIT_DURATION -> GlassKilnBlockEntity.this.litDuration = value; + case DATA_COOKING_PROGRESS -> GlassKilnBlockEntity.this.cookingProgress = value; + case DATA_COOKING_TOTAL_TIME -> GlassKilnBlockEntity.this.cookingTotalTime = value; + } + + } + + public int getCount() { + return NUM_DATA_VALUES; + } + }; + private final Object2IntOpenHashMap recipesUsed = new Object2IntOpenHashMap<>(); + private final RecipeType recipeType; + + + public GlassKilnBlockEntity(BlockPos pos, BlockState state) { + super(ECBlockEntity.GLASS_KILN.get(), pos, state); + this.recipeType = ECRecipes.GLASS_KILN_TYPE.get(); + } + + @Override @NotNull + protected Component getDefaultName() { + return Component.translatable("container.glass_kiln"); + } + + + @Override @NotNull + protected AbstractContainerMenu createMenu(int id, @NotNull Inventory inventory) { + return new GlassKilnMenu(id, inventory, this, this.dataAccess); + } + + private boolean isLit() { + return this.litTime > 0; + } + + @Override + public void load(@NotNull CompoundTag nbt) { + super.load(nbt); + this.items = NonNullList.withSize(this.getContainerSize(), ItemStack.EMPTY); + ContainerHelper.loadAllItems(nbt, this.items); + this.litTime = nbt.getInt("BurnTime"); + this.cookingProgress = nbt.getInt("CookTime"); + this.cookingTotalTime = nbt.getInt("CookTimeTotal"); + this.litDuration = this.getBurnDuration(this.items.get(SLOT_FUEL)); + CompoundTag compoundtag = nbt.getCompound("RecipesUsed"); + + for(String s : compoundtag.getAllKeys()) { + this.recipesUsed.put(new ResourceLocation(s), compoundtag.getInt(s)); + } + } + + @Override + protected void saveAdditional(@NotNull CompoundTag nbt) { + super.saveAdditional(nbt); + nbt.putInt("BurnTime", this.litTime); + nbt.putInt("CookTime", this.cookingProgress); + nbt.putInt("CookTimeTotal", this.cookingTotalTime); + ContainerHelper.saveAllItems(nbt, this.items); + CompoundTag compoundtag = new CompoundTag(); + this.recipesUsed.forEach((id, value) -> compoundtag.putInt(id.toString(), value)); + nbt.put("RecipesUsed", compoundtag); + } + + public static void serverTick(Level level, BlockPos pos, BlockState blockState, GlassKilnBlockEntity blockEntity) { + boolean flag = blockEntity.isLit(); + boolean flag1 = false; + if (blockEntity.isLit()) { + --blockEntity.litTime; + } + + ItemStack itemstack = blockEntity.items.get(SLOT_FUEL); + if (blockEntity.isLit() || !itemstack.isEmpty() && !blockEntity.items.get(SLOT_INPUT).isEmpty()) { + GlassKilnRecipe recipe = level.getRecipeManager().getRecipeFor(blockEntity.recipeType, blockEntity, level).orElse(null); + int i = blockEntity.getMaxStackSize(); + if (!blockEntity.isLit() && blockEntity.canBurn(recipe, blockEntity.items, i)) { + blockEntity.litTime = blockEntity.getBurnDuration(itemstack); + blockEntity.litDuration = blockEntity.litTime; + if (blockEntity.isLit()) { + flag1 = true; + if (itemstack.hasCraftingRemainingItem()) { + blockEntity.items.set(SLOT_FUEL, itemstack.getCraftingRemainingItem()); + } else if (!itemstack.isEmpty()) { + itemstack.shrink(1); + if (itemstack.isEmpty()) { + blockEntity.items.set(SLOT_FUEL, itemstack.getCraftingRemainingItem()); + } + } + } + } + + if (blockEntity.isLit() && blockEntity.canBurn(recipe, blockEntity.items, i)) { + ++blockEntity.cookingProgress; + if (blockEntity.cookingProgress >= blockEntity.cookingTotalTime) { + blockEntity.cookingProgress = 0; + blockEntity.cookingTotalTime = getTotalCookTime(level, blockEntity.recipeType, blockEntity); + if (blockEntity.burn(recipe, blockEntity.items, i)) { + blockEntity.setRecipeUsed(recipe); + } + + flag1 = true; + } + } else { + blockEntity.cookingProgress = 0; + } + } else if (!blockEntity.isLit() && blockEntity.cookingProgress > 0) { + blockEntity.cookingProgress = Mth.clamp(blockEntity.cookingProgress - BURN_COOL_SPEED, 0, blockEntity.cookingTotalTime); + } + + if (flag != blockEntity.isLit()) { + flag1 = true; + blockState = blockState.setValue(GlassKilnBlock.LIT, blockEntity.isLit()); + level.setBlock(pos, blockState, 3); + } + + if (flag1) { + setChanged(level, pos, blockState); + } + + } + + private boolean canBurn(@Nullable GlassKilnRecipe recipe, NonNullList container, int maxCount) { + if (!container.get(SLOT_INPUT).isEmpty() && recipe != null) { + ItemStack itemstack = recipe.assemble(this); + if (itemstack.isEmpty()) { + return false; + } else { + ItemStack itemstack1 = container.get(SLOT_RESULT); + if (itemstack1.isEmpty()) { + return true; + } else if (!itemstack1.sameItem(itemstack)) { + return false; + } else if (itemstack1.getCount() + itemstack.getCount() <= maxCount && itemstack1.getCount() + itemstack.getCount() <= itemstack1.getMaxStackSize()) { + return true; + } else { + return itemstack1.getCount() + itemstack.getCount() <= itemstack.getMaxStackSize(); + } + } + } else { + return false; + } + } + + private boolean burn(@Nullable GlassKilnRecipe recipe, NonNullList container, int maxCount) { + if (recipe != null && this.canBurn(recipe, container, maxCount)) { + ItemStack itemstack = container.get(SLOT_INPUT); + ItemStack itemstack1 = recipe.assemble(this); + ItemStack itemstack2 = container.get(SLOT_RESULT); + if (itemstack2.isEmpty()) { + container.set(SLOT_RESULT, itemstack1.copy()); + } else if (itemstack2.is(itemstack1.getItem())) { + itemstack2.grow(itemstack1.getCount()); + } + + itemstack.shrink(1); + return true; + } else { + return false; + } + } + + protected int getBurnDuration(@NotNull ItemStack itemStack) { + if (itemStack.isEmpty()) { + return 0; + } + return ForgeHooks.getBurnTime(itemStack, this.recipeType) / 2; + } + + private static int getTotalCookTime(Level level, RecipeType recipeType, Container container) { + return level.getRecipeManager().getRecipeFor(recipeType, container, level).map(GlassKilnRecipe::getCookingTime).orElse(200); + } + + @Override + public int[] getSlotsForFace(@NotNull Direction direction) { + if (direction == Direction.DOWN) { + return SLOTS_FOR_DOWN; + } else { + return direction == Direction.UP ? SLOTS_FOR_UP : SLOTS_FOR_SIDES; + } + } + + @Override + public boolean canPlaceItemThroughFace(int index, @NotNull ItemStack itemStack, @Nullable Direction direction) { + return this.canPlaceItem(index, itemStack); + } + + @Override + public boolean canTakeItemThroughFace(int index, @NotNull ItemStack itemStack, @NotNull Direction direction) { + if (direction == Direction.DOWN && index == SLOT_FUEL) { + return itemStack.is(Items.WATER_BUCKET) || itemStack.is(Items.BUCKET); + } + return true; + } + + @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 @NotNull + public ItemStack getItem(int index) { + return this.items.get(index); + } + + @Override @NotNull + public ItemStack removeItem(int index, int count) { + return ContainerHelper.removeItem(this.items, index, count); + } + + @Override @NotNull + 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 == SLOT_INPUT && !flag) { + this.cookingTotalTime = getTotalCookTime(this.level, this.recipeType, this); + this.cookingProgress = 0; + this.setChanged(); + } + + } + + @Override + public boolean stillValid(@NotNull 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 boolean canPlaceItem(int index, @NotNull ItemStack itemStack) { + if (index == SLOT_RESULT) { + return false; + } + if (index != SLOT_FUEL) { + return true; + } + ItemStack fuelItemStack = this.items.get(SLOT_FUEL); + return ForgeHooks.getBurnTime(itemStack, this.recipeType) > 0 || itemStack.is(Items.BUCKET) && !fuelItemStack.is(Items.BUCKET); + } + + @Override + public void clearContent() { + this.items.clear(); + } + + @Override + public void setRecipeUsed(@Nullable Recipe recipe) { + if (recipe != null) { + ResourceLocation resourcelocation = recipe.getId(); + this.recipesUsed.addTo(resourcelocation, 1); + } + + } + + @Override @Nullable + public Recipe getRecipeUsed() { + return null; + } + + @Override + public void awardUsedRecipes(@NotNull Player player) { + } + + public void awardUsedRecipesAndPopExperience(ServerPlayer player) { + List> list = this.getRecipesToAwardAndPopExperience(player.getLevel(), player.position()); + player.awardRecipes(list); + this.recipesUsed.clear(); + } + + public List> getRecipesToAwardAndPopExperience(ServerLevel level, Vec3 pos) { + List> list = Lists.newArrayList(); + + for(Object2IntMap.Entry entry : this.recipesUsed.object2IntEntrySet()) { + this.level.getRecipeManager().byKey(entry.getKey()).ifPresent((recipe) -> { + list.add(recipe); + createExperience(level, pos, entry.getIntValue(), ((GlassKilnRecipe)recipe).getExperience()); + }); + } + + return list; + } + + private static void createExperience(ServerLevel level, Vec3 pos, int count, float exp) { + int i = Mth.floor((float)count * exp); + float f = Mth.frac((float)count * exp); + if (f != 0.0F && Math.random() < (double)f) { + ++i; + } + + ExperienceOrb.award(level, pos, i); + } + + @Override + public void fillStackedContents(@NotNull StackedContents contents) { + for(ItemStack itemstack : this.items) { + contents.accountStack(itemstack); + } + + } + + LazyOptional[] handlers = + SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + + @Override @NotNull + public LazyOptional getCapability(@NotNull Capability capability, @Nullable Direction facing) { + if (!this.remove && facing != null && capability == 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 (LazyOptional handler : handlers) + handler.invalidate(); + } + + @Override + public void reviveCaps() { + super.reviveCaps(); + this.handlers = SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + } +} 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..e21f86ec --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/IceMakerBlockEntity.java @@ -0,0 +1,382 @@ +package com.hexagram2021.emeraldcraft.common.blocks.entity; + +import com.hexagram2021.emeraldcraft.api.fluid.FluidTypes; +import com.hexagram2021.emeraldcraft.common.blocks.workstation.IceMakerBlock; +import com.hexagram2021.emeraldcraft.common.crafting.*; +import com.hexagram2021.emeraldcraft.common.crafting.menu.IceMakerMenu; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +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.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 net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.wrapper.SidedInvWrapper; +import org.jetbrains.annotations.NotNull; + +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, 0}; + + protected NonNullList items = NonNullList.withSize(IceMakerMenu.SLOT_COUNT, ItemStack.EMPTY); + int inputFluidID; + 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.inputFluidID; + 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.inputFluidID = 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 @NotNull + protected Component getDefaultName() { + return Component.translatable("container.ice_maker"); + } + + public int getInputFluidTypeIndex() { + return this.inputFluidID; + } + + 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.get(), 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(FluidTypes.getFluidBucketItemWithID(blockEntity.inputFluidID))) { + 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(FluidTypes.getFluidBucketItemWithID(blockEntity.inputFluidID))); + } else if(ingredientOutput.is(FluidTypes.getFluidBucketItemWithID(blockEntity.inputFluidID)) && 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.inputFluidID = FluidTypes.getIDFromBucketItem(ingredientInput.getItem()); + 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(@NotNull 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(@NotNull CompoundTag nbt) { + super.load(nbt); + this.items = NonNullList.withSize(this.getContainerSize(), ItemStack.EMPTY); + ContainerHelper.loadAllItems(nbt, this.items); + this.inputFluidID = 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 void saveAdditional(@NotNull CompoundTag nbt) { + super.saveAdditional(nbt); + nbt.putInt("InputFluidType", this.inputFluidID); + 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); + } + + @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 @NotNull + public ItemStack getItem(int index) { + return this.items.get(index); + } + + @Override @NotNull + public ItemStack removeItem(int index, int count) { + return ContainerHelper.removeItem(this.items, index, count); + } + + @Override @NotNull + public ItemStack removeItemNoUpdate(int index) { + return ContainerHelper.takeItem(this.items, index); + } + + @Override + public void setItem(int index, @NotNull ItemStack itemStack) { + this.items.set(index, itemStack); + if (itemStack.getCount() > this.getMaxStackSize()) { + itemStack.setCount(this.getMaxStackSize()); + } + } + + @Override + public boolean canPlaceItem(int index, @NotNull 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.get(), container, level).map(IceMakerRecipe::getFreezingTime).orElse(IceMakerRecipe.FREEZING_TIME); + } + + @Override + public void clearContent() { + this.items.clear(); + } + + @Override + public void fillStackedContents(@NotNull StackedContents contents) { + for(ItemStack itemstack : this.items) { + contents.accountStack(itemstack); + } + } + + @Override + public int[] getSlotsForFace(@NotNull 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, @NotNull ItemStack itemStack, @Nullable Direction direction) { + return this.canPlaceItem(index, itemStack); + } + + @Override + public boolean canTakeItemThroughFace(int index, @NotNull ItemStack itemStack, @NotNull Direction direction) { + if (direction == Direction.DOWN && index == IceMakerMenu.CONDENSATE_SLOT) { + return itemStack.is(Items.BUCKET); + } + return true; + } + + LazyOptional[] handlers = + SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + + @Override @NotNull + public LazyOptional getCapability(@NotNull Capability capability, @Nullable Direction facing) { + if (!this.remove && facing != null && capability == 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 (LazyOptional handler : handlers) { + handler.invalidate(); + } + } + + @Override + public void reviveCaps() { + super.reviveCaps(); + this.handlers = SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + } + + @Override @NotNull + protected AbstractContainerMenu createMenu(int id, @NotNull 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..ce1562d5 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/MelterBlockEntity.java @@ -0,0 +1,431 @@ +package com.hexagram2021.emeraldcraft.common.blocks.entity; + +import com.google.common.collect.Lists; +import com.hexagram2021.emeraldcraft.common.blocks.workstation.MelterBlock; +import com.hexagram2021.emeraldcraft.api.fluid.FluidTypes; +import com.hexagram2021.emeraldcraft.common.crafting.menu.MelterMenu; +import com.hexagram2021.emeraldcraft.common.crafting.MelterRecipe; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +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.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.RecipeHolder; +import net.minecraft.world.inventory.StackedContentsCompatible; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BaseContainerBlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.wrapper.SidedInvWrapper; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +import java.util.List; + +import static com.hexagram2021.emeraldcraft.common.blocks.entity.ContinuousMinerBlockEntity.FLUID_LEVEL_BUCKET; + +public class MelterBlockEntity extends BaseContainerBlockEntity implements WorldlyContainer, RecipeHolder, 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 fluidTypeID; + 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.fluidTypeID; + 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.fluidTypeID = 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.get(), 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.hasCraftingRemainingItem()) { + blockEntity.items.set(MelterMenu.FUEL_SLOT, fuelItemStack.getCraftingRemainingItem()); + } else if (!fuelItemStack.isEmpty()) { + fuelItemStack.shrink(1); + if (fuelItemStack.isEmpty()) { + blockEntity.items.set(MelterMenu.FUEL_SLOT, fuelItemStack.getCraftingRemainingItem()); + } + } + } + } + + 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(FluidTypes.getFluidBucketItemWithID(blockEntity.fluidTypeID))) { + 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(FluidTypes.getFluidBucketItemWithID(blockEntity.fluidTypeID))); + } else if(resultOutput.is(FluidTypes.getFluidBucketItemWithID(blockEntity.fluidTypeID)) && 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.fluidTypeID = FluidTypes.getIDFromBucketItem(resultInput.getItem()); + 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 (FluidTypes.getID(recipe.getFluidType()) != this.fluidTypeID) { + 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); + this.fluidTypeID = FluidTypes.getID(recipe.getFluidType()); + this.fluidAmount += recipe.getFluidAmount(); + + itemstack.shrink(1); + return true; + } + return false; + } + + @Override + public boolean stillValid(@NotNull 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(@NotNull 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.fluidTypeID = 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 void saveAdditional(@NotNull CompoundTag nbt) { + super.saveAdditional(nbt); + nbt.putInt("BurnTime", this.litTime); + nbt.putInt("CookTime", this.meltingProgress); + nbt.putInt("CookTimeTotal", this.meltingTotalTime); + nbt.putInt("FluidType", this.fluidTypeID); + nbt.putInt("FluidAmount", this.fluidAmount); + ContainerHelper.saveAllItems(nbt, this.items); + CompoundTag compoundtag = new CompoundTag(); + this.recipesUsed.forEach((id, value) -> compoundtag.putInt(id.toString(), value)); + nbt.put("RecipesUsed", compoundtag); + } + + @Override @NotNull + protected Component getDefaultName() { + return Component.translatable("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 @NotNull + public ItemStack getItem(int index) { + return this.items.get(index); + } + + @Override @NotNull + public ItemStack removeItem(int index, int count) { + return ContainerHelper.removeItem(this.items, index, count); + } + + @Override @NotNull + 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, @NotNull 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.get(), container, level).map(MelterRecipe::getMeltingTime).orElse(MelterRecipe.MELTING_TIME); + } + + @Override + public void clearContent() { + this.items.clear(); + } + + @Override + public void setRecipeUsed(@Nullable Recipe recipe) { + if (recipe != null) { + ResourceLocation resourcelocation = recipe.getId(); + this.recipesUsed.addTo(resourcelocation, 1); + } + } + + @Override @Nullable + public Recipe getRecipeUsed() { + return null; + } + + @Override + public void awardUsedRecipes(@NotNull Player player) { + List> list = Lists.newArrayList(); + + for(Object2IntMap.Entry entry : this.recipesUsed.object2IntEntrySet()) { + this.level.getRecipeManager().byKey(entry.getKey()).ifPresent(list::add); + } + player.awardRecipes(list); + + this.recipesUsed.clear(); + } + + @Override + public void fillStackedContents(@NotNull StackedContents contents) { + for(ItemStack itemstack : this.items) { + contents.accountStack(itemstack); + } + } + + @Override + public int[] getSlotsForFace(@NotNull 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, @NotNull ItemStack itemStack, @Nullable Direction direction) { + return this.canPlaceItem(index, itemStack); + } + + @Override + public boolean canTakeItemThroughFace(int index, @NotNull ItemStack itemStack, @NotNull Direction direction) { + if (direction == Direction.DOWN && index == 1) { + return itemStack.is(Items.WATER_BUCKET) || itemStack.is(Items.BUCKET); + } + return true; + } + + LazyOptional[] handlers = + SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + + @Override @NotNull + public LazyOptional getCapability(@NotNull Capability capability, @Nullable Direction facing) { + if (!this.remove && facing != null && capability == 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 (LazyOptional handler : handlers) { + handler.invalidate(); + } + } + + @Override + public void reviveCaps() { + super.reviveCaps(); + this.handlers = SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + } + + @Override @NotNull + protected AbstractContainerMenu createMenu(int id, @NotNull 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..47f83806 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/entity/MineralTableBlockEntity.java @@ -0,0 +1,428 @@ +package com.hexagram2021.emeraldcraft.common.blocks.entity; + +import com.google.common.collect.Lists; +import com.hexagram2021.emeraldcraft.common.blocks.workstation.MineralTableBlock; +import com.hexagram2021.emeraldcraft.common.crafting.MineralTableRecipe; +import com.hexagram2021.emeraldcraft.common.crafting.menu.MineralTableMenu; +import com.hexagram2021.emeraldcraft.common.register.ECBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +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.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +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.ExperienceOrb; +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.RecipeHolder; +import net.minecraft.world.inventory.StackedContentsCompatible; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BaseContainerBlockEntity; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.wrapper.SidedInvWrapper; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.List; + +public class MineralTableBlockEntity extends BaseContainerBlockEntity implements WorldlyContainer, RecipeHolder, StackedContentsCompatible { + protected static final int SLOT_INPUT = 0; + protected static final int SLOT_FUEL = 1; + protected static final int SLOT_RESULT = 2; + public static final int NUM_SLOTS = 3; + public static final int DATA_LIT_TIME = 0; + public static final int DATA_LIT_DURATION = 1; + public static final int DATA_COOKING_PROGRESS = 2; + public static final int DATA_COOKING_TOTAL_TIME = 3; + public static final int NUM_DATA_VALUES = 4; + private static final int[] SLOTS_FOR_UP = new int[]{SLOT_INPUT}; + private static final int[] SLOTS_FOR_DOWN = new int[]{SLOT_RESULT, SLOT_FUEL}; + private static final int[] SLOTS_FOR_SIDES = new int[]{SLOT_FUEL}; + public static final int BURN_COOL_SPEED = 2; + protected NonNullList items = NonNullList.withSize(NUM_SLOTS, ItemStack.EMPTY); + int litTime; + int litDuration; + int cookingProgress; + int cookingTotalTime; + protected final ContainerData dataAccess = new ContainerData() { + public int get(int index) { + return switch (index) { + case DATA_LIT_TIME -> MineralTableBlockEntity.this.litTime; + case DATA_LIT_DURATION -> MineralTableBlockEntity.this.litDuration; + case DATA_COOKING_PROGRESS -> MineralTableBlockEntity.this.cookingProgress; + case DATA_COOKING_TOTAL_TIME -> MineralTableBlockEntity.this.cookingTotalTime; + default -> 0; + }; + } + + public void set(int index, int value) { + switch (index) { + case DATA_LIT_TIME -> MineralTableBlockEntity.this.litTime = value; + case DATA_LIT_DURATION -> MineralTableBlockEntity.this.litDuration = value; + case DATA_COOKING_PROGRESS -> MineralTableBlockEntity.this.cookingProgress = value; + case DATA_COOKING_TOTAL_TIME -> MineralTableBlockEntity.this.cookingTotalTime = value; + } + + } + + public int getCount() { + return NUM_DATA_VALUES; + } + }; + private final Object2IntOpenHashMap recipesUsed = new Object2IntOpenHashMap<>(); + private final RecipeType recipeType; + + public MineralTableBlockEntity(BlockPos pos, BlockState state) { + super(ECBlockEntity.MINERAL_TABLE.get(), pos, state); + this.recipeType = ECRecipes.MINERAL_TABLE_TYPE.get(); + } + + @Override @NotNull + protected Component getDefaultName() { + return Component.translatable("container.mineral_table"); + } + + + private boolean isLit() { + return this.litTime > 0; + } + + @Override + public void load(@NotNull CompoundTag nbt) { + super.load(nbt); + this.items = NonNullList.withSize(this.getContainerSize(), ItemStack.EMPTY); + ContainerHelper.loadAllItems(nbt, this.items); + this.litTime = nbt.getInt("BurnTime"); + this.cookingProgress = nbt.getInt("CookTime"); + this.cookingTotalTime = nbt.getInt("CookTimeTotal"); + this.litDuration = this.getBurnDuration(this.items.get(SLOT_FUEL)); + CompoundTag compoundtag = nbt.getCompound("RecipesUsed"); + + for(String s : compoundtag.getAllKeys()) { + this.recipesUsed.put(new ResourceLocation(s), compoundtag.getInt(s)); + } + } + + @Override + protected void saveAdditional(@NotNull CompoundTag nbt) { + super.saveAdditional(nbt); + nbt.putInt("BurnTime", this.litTime); + nbt.putInt("CookTime", this.cookingProgress); + nbt.putInt("CookTimeTotal", this.cookingTotalTime); + ContainerHelper.saveAllItems(nbt, this.items); + CompoundTag compoundtag = new CompoundTag(); + this.recipesUsed.forEach((id, value) -> compoundtag.putInt(id.toString(), value)); + nbt.put("RecipesUsed", compoundtag); + } + + public static void serverTick(Level level, BlockPos pos, BlockState blockState, MineralTableBlockEntity blockEntity) { + boolean flag = blockEntity.isLit(); + boolean flag1 = false; + if (blockEntity.isLit()) { + --blockEntity.litTime; + } + + ItemStack itemstack = blockEntity.items.get(SLOT_FUEL); + if (blockEntity.isLit() || !itemstack.isEmpty() && !blockEntity.items.get(SLOT_INPUT).isEmpty()) { + MineralTableRecipe recipe = level.getRecipeManager().getRecipeFor(blockEntity.recipeType, blockEntity, level).orElse(null); + int i = blockEntity.getMaxStackSize(); + if (!blockEntity.isLit() && blockEntity.canBurn(recipe, blockEntity.items, i)) { + blockEntity.litTime = blockEntity.getBurnDuration(itemstack); + blockEntity.litDuration = blockEntity.litTime; + if (blockEntity.isLit()) { + flag1 = true; + if (itemstack.hasCraftingRemainingItem()) + blockEntity.items.set(SLOT_FUEL, itemstack.getCraftingRemainingItem()); + else + if (!itemstack.isEmpty()) { + itemstack.shrink(1); + if (itemstack.isEmpty()) { + blockEntity.items.set(SLOT_FUEL, itemstack.getCraftingRemainingItem()); + } + } + } + } + + if (blockEntity.isLit() && blockEntity.canBurn(recipe, blockEntity.items, i)) { + ++blockEntity.cookingProgress; + if (blockEntity.cookingProgress >= blockEntity.cookingTotalTime) { + blockEntity.cookingProgress = 0; + blockEntity.cookingTotalTime = getTotalCookTime(level, blockEntity.recipeType, blockEntity); + if (blockEntity.burn(recipe, blockEntity.items, i)) { + blockEntity.setRecipeUsed(recipe); + } + + flag1 = true; + } + } else { + blockEntity.cookingProgress = 0; + } + } else if (!blockEntity.isLit() && blockEntity.cookingProgress > 0) { + blockEntity.cookingProgress = Mth.clamp(blockEntity.cookingProgress - BURN_COOL_SPEED, 0, blockEntity.cookingTotalTime); + } + + if (flag != blockEntity.isLit()) { + flag1 = true; + blockState = blockState.setValue(MineralTableBlock.LIT, blockEntity.isLit()); + level.setBlock(pos, blockState, 3); + } + + if (flag1) { + setChanged(level, pos, blockState); + } + + } + + private boolean canBurn(@Nullable MineralTableRecipe recipe, NonNullList container, int maxCount) { + if (!container.get(SLOT_INPUT).isEmpty() && recipe != null) { + ItemStack itemstack = recipe.assemble(this); + if (itemstack.isEmpty()) { + return false; + } + ItemStack itemstack1 = container.get(SLOT_RESULT); + if (itemstack1.isEmpty()) { + return true; + } + if (!itemstack1.sameItem(itemstack)) { + return false; + } + if (itemstack1.getCount() + itemstack.getCount() <= maxCount && itemstack1.getCount() + itemstack.getCount() <= itemstack1.getMaxStackSize()) { + return true; + } + return itemstack1.getCount() + itemstack.getCount() <= itemstack.getMaxStackSize(); + } + return false; + } + + private boolean burn(@Nullable MineralTableRecipe recipe, NonNullList container, int maxCount) { + if (recipe != null && this.canBurn(recipe, container, maxCount)) { + ItemStack itemstack = container.get(SLOT_INPUT); + ItemStack itemstack1 = recipe.assemble(this); + ItemStack itemstack2 = container.get(SLOT_RESULT); + if (itemstack2.isEmpty()) { + container.set(SLOT_RESULT, itemstack1.copy()); + } else if (itemstack2.is(itemstack1.getItem())) { + itemstack2.grow(itemstack1.getCount()); + } + + itemstack.shrink(1); + return true; + } + return false; + } + + protected int getBurnDuration(ItemStack itemStack) { + if (itemStack.isEmpty()) { + return 0; + } + return itemStack.is(Items.BLAZE_POWDER) ? MineralTableRecipe.BURN_TIME * 20 : 0; + } + + @Override @NotNull + protected AbstractContainerMenu createMenu(int id, @NotNull Inventory inventory) { + return new MineralTableMenu(id, inventory, this, this.dataAccess); + } + + private static int getTotalCookTime(Level level, RecipeType recipeType, Container container) { + return level.getRecipeManager().getRecipeFor(recipeType, container, level).map(MineralTableRecipe::getCookingTime).orElse(200); + } + + @Override + public int[] getSlotsForFace(@NotNull Direction direction) { + if (direction == Direction.DOWN) { + return SLOTS_FOR_DOWN; + } else { + return direction == Direction.UP ? SLOTS_FOR_UP : SLOTS_FOR_SIDES; + } + } + + @Override + public boolean canPlaceItemThroughFace(int index, @NotNull ItemStack itemStack, @Nullable Direction direction) { + return this.canPlaceItem(index, itemStack); + } + + @Override + public boolean canTakeItemThroughFace(int index, @NotNull ItemStack itemStack, @NotNull Direction direction) { + if (direction == Direction.DOWN && index == SLOT_FUEL) { + return itemStack.is(Items.WATER_BUCKET) || itemStack.is(Items.BUCKET); + } + return true; + } + + @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 @NotNull + public ItemStack getItem(int index) { + return this.items.get(index); + } + + @Override @NotNull + public ItemStack removeItem(int index, int count) { + return ContainerHelper.removeItem(this.items, index, count); + } + + @Override @NotNull + 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 == SLOT_INPUT && !flag) { + this.cookingTotalTime = getTotalCookTime(this.level, this.recipeType, this); + this.cookingProgress = 0; + this.setChanged(); + } + + } + + @Override + public boolean stillValid(@NotNull 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 boolean canPlaceItem(int index, @NotNull ItemStack itemStack) { + if (index == MineralTableMenu.RESULT_SLOT) { + return false; + } + if (index != MineralTableMenu.FUEL_SLOT) { + return true; + } + return itemStack.is(Items.BLAZE_POWDER); + } + + @Override + public void clearContent() { + this.items.clear(); + } + + @Override + public void setRecipeUsed(@Nullable Recipe recipe) { + if (recipe != null) { + ResourceLocation resourcelocation = recipe.getId(); + this.recipesUsed.addTo(resourcelocation, 1); + } + + } + + @Override @Nullable + public Recipe getRecipeUsed() { + return null; + } + + @Override + public void awardUsedRecipes(@NotNull Player player) { + } + + public void awardUsedRecipesAndPopExperience(ServerPlayer player) { + List> list = this.getRecipesToAwardAndPopExperience(player.getLevel(), player.position()); + player.awardRecipes(list); + this.recipesUsed.clear(); + } + + public List> getRecipesToAwardAndPopExperience(ServerLevel level, Vec3 pos) { + List> list = Lists.newArrayList(); + + for(Object2IntMap.Entry entry : this.recipesUsed.object2IntEntrySet()) { + level.getRecipeManager().byKey(entry.getKey()).ifPresent((recipe) -> { + list.add(recipe); + createExperience(level, pos, entry.getIntValue(), ((MineralTableRecipe)recipe).getExperience()); + }); + } + + return list; + } + + private static void createExperience(ServerLevel level, Vec3 pos, int count, float exp) { + int i = Mth.floor((float)count * exp); + float f = Mth.frac((float)count * exp); + if (f != 0.0F && Math.random() < (double)f) { + ++i; + } + + ExperienceOrb.award(level, pos, i); + } + + @Override + public void fillStackedContents(@NotNull StackedContents contents) { + for(ItemStack itemstack : this.items) { + contents.accountStack(itemstack); + } + + } + + LazyOptional[] handlers = + SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + + @Override @NotNull + public LazyOptional getCapability(@NotNull Capability capability, @Nullable Direction facing) { + if (!this.remove && facing != null && capability == 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 (LazyOptional handler : handlers) + handler.invalidate(); + } + + @Override + public void reviveCaps() { + super.reviveCaps(); + this.handlers = SidedInvWrapper.create(this, Direction.UP, Direction.DOWN, Direction.NORTH); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/nylium/PurpuraceusNyliumBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/nylium/PurpuraceusNyliumBlock.java new file mode 100644 index 00000000..0719ddf0 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/nylium/PurpuraceusNyliumBlock.java @@ -0,0 +1,36 @@ +package com.hexagram2021.emeraldcraft.common.blocks.nylium; + +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECConfiguredFeatures; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.NyliumBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.ChunkGenerator; +import org.jetbrains.annotations.NotNull; + +public class PurpuraceusNyliumBlock extends NyliumBlock { + public PurpuraceusNyliumBlock(Properties props) { + super(props); + } + + @Override + public void performBonemeal(ServerLevel level, @NotNull RandomSource random, @NotNull BlockPos blockPos, @NotNull BlockState blockState) { + BlockState current = level.getBlockState(blockPos); + BlockPos above = blockPos.above(); + ChunkGenerator chunkgenerator = level.getChunkSource().getGenerator(); + if (current.is(ECBlocks.Plant.PURPURACEUS_NYLIUM.get())) { + ECConfiguredFeatures.VegetationFeatures.PURPURACEUS_SWAMP_VEGETATION_BONEMEAL.value().place(level, chunkgenerator, random, above); + } + + for(BlockPos mutable : BlockPos.betweenClosed(blockPos.offset(-1, -1, -1), blockPos.offset(1, 1, 1))) { + BlockState blockstate = level.getBlockState(mutable); + if (blockstate.is(Blocks.NETHERRACK) && random.nextBoolean()) { + level.setBlock(mutable, ECBlocks.Plant.PURPURACEUS_NYLIUM.defaultBlockState(), Block.UPDATE_ALL); + } + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/plant/ChiliBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/plant/ChiliBlock.java new file mode 100644 index 00000000..5d4dfe08 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/plant/ChiliBlock.java @@ -0,0 +1,38 @@ +package com.hexagram2021.emeraldcraft.common.blocks.plant; + +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.CropBlock; +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.material.Material; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.VoxelShape; +import org.jetbrains.annotations.NotNull; + +import java.util.function.Supplier; + +public class ChiliBlock extends CropBlock { + public static final Supplier PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.CROP); + + private static final VoxelShape[] SHAPE_BY_AGE = new VoxelShape[]{Block.box(0.0D, 0.0D, 0.0D, 16.0D, 2.0D, 16.0D), Block.box(0.0D, 0.0D, 0.0D, 16.0D, 3.0D, 16.0D), Block.box(0.0D, 0.0D, 0.0D, 16.0D, 4.0D, 16.0D), Block.box(0.0D, 0.0D, 0.0D, 16.0D, 5.0D, 16.0D), Block.box(0.0D, 0.0D, 0.0D, 16.0D, 6.0D, 16.0D), Block.box(0.0D, 0.0D, 0.0D, 16.0D, 7.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, 9.0D, 16.0D)}; + + public ChiliBlock(BlockBehaviour.Properties props) { + super(props); + } + + @Override @NotNull + protected ItemLike getBaseSeedId() { + return ECItems.CHILI_SEED; + } + + @Override @NotNull + public VoxelShape getShape(BlockState blockState, @NotNull BlockGetter level, @NotNull BlockPos blockPos, @NotNull CollisionContext context) { + return SHAPE_BY_AGE[blockState.getValue(this.getAgeProperty())]; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/plant/HiganBanaFlowerBlock.java b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/plant/HiganBanaFlowerBlock.java new file mode 100644 index 00000000..2f4485b4 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/plant/HiganBanaFlowerBlock.java @@ -0,0 +1,63 @@ +package com.hexagram2021.emeraldcraft.common.blocks.plant; + +import com.hexagram2021.emeraldcraft.common.register.ECProperties; +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.tags.BlockTags; +import net.minecraft.util.RandomSource; +import net.minecraft.world.effect.MobEffect; +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.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.FlowerBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +@SuppressWarnings("deprecation") +public class HiganBanaFlowerBlock extends FlowerBlock { + public static final BooleanProperty LEAF = ECProperties.LEAF; + + public HiganBanaFlowerBlock(MobEffect effect, int duration, Properties props) { + super(effect, duration, props); + this.registerDefaultState(this.stateDefinition.any().setValue(LEAF, true)); + } + + @Override + public boolean isRandomlyTicking(BlockState state) { + return state.getValue(LEAF); + } + + @Override + public void randomTick(@NotNull BlockState state, @NotNull ServerLevel level, @NotNull BlockPos pos, @NotNull RandomSource random) { + if(level.dimension() == Level.OVERWORLD) { + level.setBlock(pos, state.setValue(LEAF, false), Block.UPDATE_ALL); + level.playSound(null, pos, ECSounds.HIGAN_BANA_DROP_LEAVES, SoundSource.BLOCKS, 1.0F, 1.0F); + } + } + + @Override @Nullable + public BlockState getStateForPlacement(@NotNull BlockPlaceContext context) { + if(context.getLevel().dimension() == Level.OVERWORLD) { + return this.defaultBlockState().setValue(LEAF, false); + } + return this.defaultBlockState(); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(LEAF); + } + + @Override + protected boolean mayPlaceOn(@NotNull BlockState blockState, @NotNull BlockGetter level, @NotNull BlockPos blockPos) { + return blockState.is(BlockTags.DIRT) || blockState.is(Blocks.SOUL_SOIL); + } +} 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..fa80e248 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/plant/WarpedWartBlock.java @@ -0,0 +1,98 @@ +package com.hexagram2021.emeraldcraft.common.blocks.plant; + +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.util.RandomSource; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +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 org.jetbrains.annotations.NotNull; + +import java.util.function.Supplier; + +@SuppressWarnings("deprecation") +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, 0)); + } + + @Override @NotNull + public VoxelShape getShape(BlockState state, @NotNull BlockGetter level, @NotNull BlockPos pos, @NotNull CollisionContext context) { + return SHAPE_BY_AGE[state.getValue(AGE)]; + } + + @Override + public boolean canSurvive(@NotNull BlockState state, @NotNull LevelReader level, @NotNull BlockPos pos) { + return super.canSurvive(state, level, pos); + } + + @Override + protected boolean mayPlaceOn(BlockState state, @NotNull BlockGetter level, @NotNull BlockPos pos) { + return state.is(Blocks.SOUL_SAND); + } + + @Override + public boolean isRandomlyTicking(BlockState state) { + return state.getValue(AGE) < MAX_AGE; + } + + @Override + public void randomTick(BlockState state, @NotNull ServerLevel level, @NotNull BlockPos pos, @NotNull RandomSource random) { + int i = state.getValue(AGE); + if (i < MAX_AGE && 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 @NotNull + public ItemStack getCloneItemStack(@NotNull BlockGetter level, @NotNull BlockPos pos, @NotNull BlockState blockState) { + return new ItemStack(ECItems.WARPED_WART.asItem()); + } + + @Override @NotNull + 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..1f3e5e0b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/sculpture/SculptureBlock.java @@ -0,0 +1,52 @@ +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.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 org.jetbrains.annotations.NotNull; + +import java.util.function.Supplier; + +@SuppressWarnings({"unused", "deprecation"}) +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)); + } + + @Override @NotNull + public VoxelShape getShape(@NotNull BlockState blockState, @NotNull BlockGetter level, @NotNull BlockPos pos, @NotNull CollisionContext context) { + return AABB; + } + + @Override @NotNull + public BlockState rotate(BlockState blockState, Rotation rotation) { + return blockState.setValue(FACING, rotation.rotate(blockState.getValue(FACING))); + } + + @Override @NotNull + public BlockState mirror(BlockState blockState, Mirror mirror) { + return blockState.setValue(FACING, mirror.mirror(blockState.getValue(FACING))); + } + + @Override + protected void createBlockStateDefinition(@NotNull 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..b2b88feb --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/CarpentryTableBlock.java @@ -0,0 +1,93 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + +import com.hexagram2021.emeraldcraft.common.crafting.menu.CarpentryTableMenu; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +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 org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.function.Supplier; + +@SuppressWarnings("deprecation") +public class CarpentryTableBlock extends Block { + private static final Component CONTAINER_TITLE = Component.translatable("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 @NotNull + public InteractionResult use(@NotNull BlockState blockState, Level level, @NotNull BlockPos blockPos, @NotNull Player player, + @NotNull InteractionHand interactionHand, @NotNull BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + player.openMenu(blockState.getMenuProvider(level, blockPos)); + return InteractionResult.CONSUME; + } + + @Override @Nullable + public MenuProvider getMenuProvider(@NotNull BlockState blockState, @NotNull Level level, @NotNull BlockPos blockPos) { + return new SimpleMenuProvider((id, inventory, levelAccess) -> + new CarpentryTableMenu(id, inventory, ContainerLevelAccess.create(level, blockPos)), CONTAINER_TITLE); + } + + @Override @NotNull + public VoxelShape getShape(@NotNull BlockState blockState, @NotNull BlockGetter level, @NotNull BlockPos blockPos, @NotNull CollisionContext context) { + return SHAPE; + } + + @Override + public boolean useShapeForLightOcclusion(@NotNull BlockState blockState) { + return true; + } + + @Override @NotNull + public RenderShape getRenderShape(@NotNull BlockState blockState) { + return RenderShape.MODEL; + } + + @Override @NotNull + public BlockState rotate(BlockState blockState, Rotation rotation) { + return blockState.setValue(FACING, rotation.rotate(blockState.getValue(FACING))); + } + + @Override @NotNull + 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(@NotNull BlockState state, @NotNull BlockGetter level, @NotNull BlockPos blockPos, @NotNull 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..9279b589 --- /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.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 org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.Map; +import java.util.function.Supplier; + +@SuppressWarnings("deprecation") +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)); + } + + @Override @Nullable + public BlockEntity newBlockEntity(@NotNull BlockPos blockPos, @NotNull BlockState blockState) { + return new ContinuousMinerBlockEntity(blockPos, blockState); + } + + @Override @NotNull + public VoxelShape getShape(BlockState blockState, @NotNull BlockGetter level, @NotNull BlockPos blockPos, @NotNull CollisionContext context) { + return MINER_MAIN.get(blockState.getValue(FACING)); + } + + @Override @NotNull + public VoxelShape getCollisionShape(BlockState blockState, @NotNull BlockGetter level, @NotNull BlockPos blockPos, @NotNull CollisionContext context) { + return Shapes.or(MINER_MAIN.get(blockState.getValue(FACING)), ROCK_BREAKER.get(blockState.getValue(FACING))); + } + + @Override @NotNull + public InteractionResult use(@NotNull BlockState blockState, Level level, @NotNull BlockPos blockPos, @NotNull Player player, + @NotNull InteractionHand interactionHand, @NotNull BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + player.openMenu(blockState.getMenuProvider(level, blockPos)); + return InteractionResult.CONSUME; + } + + @Nullable + @Override + public BlockEntityTicker getTicker(@NotNull Level level, @NotNull BlockState state, @NotNull BlockEntityType type) { + return createContinuousMinerTicker(level, type, ECBlockEntity.CONTINUOUS_MINER.get()); + } + + @Override + public void onPlace(BlockState blockState, Level level, @NotNull BlockPos blockPos, @NotNull 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, @NotNull BlockPos blockPos, @NotNull Block block, @NotNull 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 @NotNull + public BlockState rotate(BlockState blockState, Rotation rotation) { + return blockState.setValue(FACING, rotation.rotate(blockState.getValue(FACING))); + } + + @Override @NotNull + public BlockState mirror(BlockState blockState, Mirror rotation) { + return blockState.rotate(rotation.getRotation(blockState.getValue(FACING))); + } + + @Override @NotNull + public RenderShape getRenderShape(@NotNull BlockState blockState) { + return RenderShape.MODEL; + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(FACING, TRIGGERED); + } + + @Override + public boolean isPathfindable(@NotNull BlockState state, @NotNull BlockGetter getter, @NotNull BlockPos blockPos, @NotNull 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..83270fb5 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/CrystalballTableBlock.java @@ -0,0 +1,92 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + +import com.hexagram2021.emeraldcraft.common.register.ECProperties; +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.util.RandomSource; +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 org.jetbrains.annotations.NotNull; + +import java.util.function.Supplier; + +@SuppressWarnings("deprecation") +public class CrystalballTableBlock extends Block { + public static final IntegerProperty EXP_COUNT = ECProperties.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).randomTicks().lightLevel((bs) -> 7); + + public CrystalballTableBlock(BlockBehaviour.Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(EXP_COUNT, 0)); + } + + @Override @NotNull + public InteractionResult use(@NotNull BlockState blockState, Level level, @NotNull BlockPos blockPos, @NotNull Player player, + @NotNull InteractionHand interactionHand, @NotNull 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(@NotNull BlockState blockState, ServerLevel level, @NotNull BlockPos blockPos, @NotNull RandomSource 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 @NotNull + public VoxelShape getShape(@NotNull BlockState blockState, @NotNull BlockGetter level, @NotNull BlockPos blockPos, @NotNull CollisionContext context) { + return SHAPE; + } + + @Override + public boolean useShapeForLightOcclusion(@NotNull BlockState blockState) { + return true; + } + + @Override @NotNull + public RenderShape getRenderShape(@NotNull BlockState blockState) { + return RenderShape.MODEL; + } + + @Override + public boolean isPathfindable(@NotNull BlockState state, @NotNull BlockGetter level, @NotNull BlockPos blockPos, @NotNull 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..32c42c74 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/GlassKilnBlock.java @@ -0,0 +1,133 @@ +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.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.RandomSource; +import net.minecraft.world.Containers; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +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.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 net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.function.Supplier; + +@SuppressWarnings("deprecation") +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); + } + + @NotNull + public InteractionResult use(@NotNull BlockState blockState, Level level, @NotNull BlockPos blockPos, + @NotNull Player player, @NotNull InteractionHand interactionHand, @NotNull BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } else { + this.openContainer(level, blockPos, player); + return InteractionResult.CONSUME; + } + } + + @Nullable + @Override + public BlockEntityTicker getTicker(Level level, @NotNull BlockState state, @NotNull BlockEntityType type) { + return level.isClientSide ? null : createTickerHelper(type, ECBlockEntity.GLASS_KILN.get(), GlassKilnBlockEntity::serverTick); + } + + @Override + protected void openContainer(Level level, @NotNull BlockPos pos, @NotNull 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(@NotNull BlockState state, @NotNull BlockGetter level, @NotNull BlockPos blockPos, @NotNull PathComputationType type) { + return false; + } + + @Nullable + @Override + public BlockEntity newBlockEntity(@NotNull BlockPos pos, @NotNull BlockState state) { + return new GlassKilnBlockEntity(pos, state); + } + + @Override + public void setPlacedBy(@NotNull Level level, @NotNull BlockPos blockPos, @NotNull BlockState blockState, @NotNull LivingEntity livingEntity, ItemStack itemStack) { + if (itemStack.hasCustomHoverName()) { + BlockEntity blockentity = level.getBlockEntity(blockPos); + if (blockentity instanceof GlassKilnBlockEntity glassKilnBlockEntity) { + glassKilnBlockEntity.setCustomName(itemStack.getHoverName()); + } + } + } + + @Override + public void onRemove(BlockState blockState, @NotNull Level level, @NotNull BlockPos blockPos, BlockState newBlockState, boolean b) { + if (!blockState.is(newBlockState.getBlock())) { + BlockEntity blockentity = level.getBlockEntity(blockPos); + if (blockentity instanceof GlassKilnBlockEntity glassKilnBlockEntity) { + if (level instanceof ServerLevel serverLevel) { + Containers.dropContents(serverLevel, blockPos, glassKilnBlockEntity); + glassKilnBlockEntity.getRecipesToAwardAndPopExperience(serverLevel, Vec3.atCenterOf(blockPos)); + } + + level.updateNeighbourForOutputSignal(blockPos, this); + } + + super.onRemove(blockState, level, blockPos, newBlockState, b); + } + } + + @Override + public void animateTick(BlockState state, @NotNull Level level, @NotNull BlockPos blockPos, @NotNull RandomSource random) { + if (state.getValue(LIT)) { + double d0 = (double)blockPos.getX() + 0.5D; + double d1 = 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..906ed8d9 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/IceMakerBlock.java @@ -0,0 +1,103 @@ +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.util.RandomSource; +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 org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.function.Supplier; + +@SuppressWarnings("deprecation") +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); + } + + @Override @Nullable + public BlockEntityTicker getTicker(@NotNull Level level, @NotNull BlockState state, @NotNull BlockEntityType type) { + return createIceMakerTicker(level, type, ECBlockEntity.ICE_MAKER.get()); + } + + @Override @NotNull + public InteractionResult use(@NotNull BlockState blockState, Level level, @NotNull BlockPos blockPos, @NotNull Player player, + @NotNull InteractionHand interactionHand, @NotNull BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + this.openContainer(level, blockPos, player); + return InteractionResult.CONSUME; + } + + @Override + protected void openContainer(Level level, @NotNull BlockPos pos, @NotNull Player player) { + BlockEntity blockentity = level.getBlockEntity(pos); + if (blockentity instanceof IceMakerBlockEntity) { + player.openMenu((MenuProvider)blockentity); + } + } + + @Override + public boolean isPathfindable(@NotNull BlockState state, @NotNull BlockGetter level, @NotNull BlockPos blockPos, @NotNull PathComputationType type) { + return false; + } + + @Nullable + @Override + public BlockEntity newBlockEntity(@NotNull BlockPos blockPos, @NotNull BlockState blockState) { + return new IceMakerBlockEntity(blockPos, blockState); + } + + + @Override + public void animateTick(BlockState state, @NotNull Level level, @NotNull BlockPos blockPos, @NotNull RandomSource random) { + if (state.getValue(LIT)) { + double d0 = (double)blockPos.getX() + 0.5D; + double d1 = 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..c82470c2 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/MelterBlock.java @@ -0,0 +1,132 @@ +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.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.RandomSource; +import net.minecraft.world.Containers; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +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 org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.function.Supplier; + +@SuppressWarnings("deprecation") +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); + } + + @Override @Nullable + public BlockEntityTicker getTicker(@NotNull Level level, @NotNull BlockState state, @NotNull BlockEntityType type) { + return createMelterTicker(level, type, ECBlockEntity.MELTER.get()); + } + + @Override @NotNull + public InteractionResult use(@NotNull BlockState blockState, Level level, @NotNull BlockPos blockPos, @NotNull Player player, + @NotNull InteractionHand interactionHand, @NotNull BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + this.openContainer(level, blockPos, player); + return InteractionResult.CONSUME; + } + + @Override + protected void openContainer(Level level, @NotNull BlockPos pos, @NotNull Player player) { + BlockEntity blockentity = level.getBlockEntity(pos); + if (blockentity instanceof MelterBlockEntity) { + player.openMenu((MenuProvider)blockentity); + } + } + + @Override + public boolean isPathfindable(@NotNull BlockState state, @NotNull BlockGetter level, @NotNull BlockPos blockPos, @NotNull PathComputationType type) { + return false; + } + + @Nullable + @Override + public BlockEntity newBlockEntity(@NotNull BlockPos blockPos, @NotNull BlockState blockState) { + return new MelterBlockEntity(blockPos, blockState); + } + + @Override + public void setPlacedBy(@NotNull Level level, @NotNull BlockPos blockPos, @NotNull BlockState blockState, @NotNull LivingEntity livingEntity, ItemStack itemStack) { + if (itemStack.hasCustomHoverName()) { + BlockEntity blockentity = level.getBlockEntity(blockPos); + if (blockentity instanceof MelterBlockEntity melterBlockEntity) { + melterBlockEntity.setCustomName(itemStack.getHoverName()); + } + } + } + + @Override + public void onRemove(BlockState blockState, @NotNull Level level, @NotNull BlockPos blockPos, BlockState newBlockState, boolean b) { + if (!blockState.is(newBlockState.getBlock())) { + BlockEntity blockentity = level.getBlockEntity(blockPos); + if (blockentity instanceof MelterBlockEntity melterBlockEntity) { + if (level instanceof ServerLevel serverLevel) { + Containers.dropContents(serverLevel, blockPos, melterBlockEntity); + } + + level.updateNeighbourForOutputSignal(blockPos, this); + } + + super.onRemove(blockState, level, blockPos, newBlockState, b); + } + } + + + @Override + public void animateTick(BlockState state, @NotNull Level level, @NotNull BlockPos blockPos, @NotNull RandomSource random) { + if (state.getValue(LIT)) { + double d0 = (double)blockPos.getX() + 0.5D; + double d1 = 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..53422d2c --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/MineralTableBlock.java @@ -0,0 +1,136 @@ +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.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.RandomSource; +import net.minecraft.world.Containers; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +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.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 net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.function.Supplier; + +@SuppressWarnings("deprecation") +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); + } + + @Override @Nullable + public BlockEntityTicker getTicker(@NotNull Level level, @NotNull BlockState state, @NotNull BlockEntityType type) { + return createMineralTableTicker(level, type, ECBlockEntity.MINERAL_TABLE.get()); + } + + @Override @NotNull + public InteractionResult use(@NotNull BlockState blockState, Level level, @NotNull BlockPos blockPos, @NotNull Player player, + @NotNull InteractionHand interactionHand, @NotNull BlockHitResult blockHitResult) { + if (level.isClientSide) { + return InteractionResult.SUCCESS; + } + this.openContainer(level, blockPos, player); + return InteractionResult.CONSUME; + } + + @Override + protected void openContainer(Level level, @NotNull BlockPos pos, @NotNull Player player) { + BlockEntity blockentity = level.getBlockEntity(pos); + if (blockentity instanceof MineralTableBlockEntity) { + player.openMenu((MenuProvider)blockentity); + } + } + + @Override + public boolean isPathfindable(@NotNull BlockState state, @NotNull BlockGetter level, @NotNull BlockPos blockPos, @NotNull PathComputationType type) { + return false; + } + + @Nullable + @Override + public BlockEntity newBlockEntity(@NotNull BlockPos blockPos, @NotNull BlockState blockState) { + return new MineralTableBlockEntity(blockPos, blockState); + } + + @Override + public void setPlacedBy(@NotNull Level level, @NotNull BlockPos blockPos, @NotNull BlockState blockState, @NotNull LivingEntity livingEntity, ItemStack itemStack) { + if (itemStack.hasCustomHoverName()) { + BlockEntity blockentity = level.getBlockEntity(blockPos); + if (blockentity instanceof MineralTableBlockEntity mineralTableBlockEntity) { + mineralTableBlockEntity.setCustomName(itemStack.getHoverName()); + } + } + } + + @Override + public void onRemove(BlockState blockState, @NotNull Level level, @NotNull BlockPos blockPos, BlockState newBlockState, boolean b) { + if (!blockState.is(newBlockState.getBlock())) { + BlockEntity blockentity = level.getBlockEntity(blockPos); + if (blockentity instanceof MineralTableBlockEntity mineralTableBlockEntity) { + if (level instanceof ServerLevel serverLevel) { + Containers.dropContents(serverLevel, blockPos, mineralTableBlockEntity); + mineralTableBlockEntity.getRecipesToAwardAndPopExperience(serverLevel, Vec3.atCenterOf(blockPos)); + } + + level.updateNeighbourForOutputSignal(blockPos, this); + } + + super.onRemove(blockState, level, blockPos, newBlockState, b); + } + } + + + @Override + public void animateTick(BlockState state, @NotNull Level level, @NotNull BlockPos blockPos, @NotNull RandomSource random) { + if (state.getValue(LIT)) { + double d0 = (double)blockPos.getX() + 0.5D; + double d1 = 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..d833c398 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/blocks/workstation/SqueezerBlock.java @@ -0,0 +1,153 @@ +package com.hexagram2021.emeraldcraft.common.blocks.workstation; + +import com.hexagram2021.emeraldcraft.common.register.ECProperties; +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 org.jetbrains.annotations.NotNull; + +import java.util.function.Supplier; + +import static net.minecraftforge.common.ToolActions.SHEARS_HARVEST; + +@SuppressWarnings("deprecation") +public class SqueezerBlock extends Block { + public static final IntegerProperty HONEY_COUNT = ECProperties.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, 0)); + } + + @Override @NotNull + public InteractionResult use(@NotNull BlockState blockState, @NotNull Level level, @NotNull BlockPos blockPos, Player player, + @NotNull InteractionHand interactionHand, @NotNull 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(@NotNull BlockState blockState) { + return true; + } + + public int getAnalogOutputSignal(BlockState blockState, @NotNull Level level, @NotNull 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(@NotNull BlockState state, @NotNull BlockGetter level, @NotNull BlockPos blockPos, @NotNull 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/config/ECCommonConfig.java b/src/main/java/com/hexagram2021/emeraldcraft/common/config/ECCommonConfig.java new file mode 100644 index 00000000..3d8c0122 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/config/ECCommonConfig.java @@ -0,0 +1,61 @@ +package com.hexagram2021.emeraldcraft.common.config; + +import net.minecraftforge.common.ForgeConfigSpec; + +public class ECCommonConfig { + public static final ForgeConfigSpec.Builder BUILDER = new ForgeConfigSpec.Builder(); + public static final ForgeConfigSpec SPEC; + + public static final ForgeConfigSpec.BooleanValue GENERATE_DEAD_CRIMSON_OCEAN; + public static final ForgeConfigSpec.BooleanValue GENERATE_DEAD_WARPED_OCEAN; + public static final ForgeConfigSpec.BooleanValue GENERATE_XANADU; + public static final ForgeConfigSpec.BooleanValue GENERATE_GINKGO_FOREST; + public static final ForgeConfigSpec.BooleanValue GENERATE_KARST_HILLS; + public static final ForgeConfigSpec.BooleanValue GENERATE_PETUNIA_PLAINS; + public static final ForgeConfigSpec.BooleanValue GENERATE_GOLDEN_BEACH; + public static final ForgeConfigSpec.BooleanValue GENERATE_PALM_BEACH; + public static final ForgeConfigSpec.BooleanValue GENERATE_AZURE_DESERT; + public static final ForgeConfigSpec.BooleanValue GENERATE_JADEITE_DESERT; + public static final ForgeConfigSpec.BooleanValue GENERATE_VOLCANIC_CAVES; + public static final ForgeConfigSpec.BooleanValue GENERATE_EMERY_DESERT; + public static final ForgeConfigSpec.BooleanValue GENERATE_QUARTZ_DESERT; + public static final ForgeConfigSpec.BooleanValue GENERATE_PURPURACEUS_SWAMP; + + public static final ForgeConfigSpec.BooleanValue ENABLE_CURE_ZOMBIFIED_PIGLIN; + public static final ForgeConfigSpec.IntValue ZOMBIFIED_PIGLIN_CONVERT_TO_PIGLIN_BRUTE_POSSIBILITY_INV; + public static final ForgeConfigSpec.BooleanValue ENABLE_CURE_PHANTOM; + + static { + BUILDER.push("emeraldcraft-common-config"); + BUILDER.comment("You can determine whether each biome can generate in the world or not."); + BUILDER.push("biomes-generation"); + GENERATE_DEAD_CRIMSON_OCEAN = BUILDER.define("GENERATE_DEAD_CRIMSON_OCEAN", true); + GENERATE_DEAD_WARPED_OCEAN = BUILDER.define("GENERATE_DEAD_WARPED_OCEAN", true); + GENERATE_XANADU = BUILDER.define("GENERATE_XANADU", true); + GENERATE_GINKGO_FOREST = BUILDER.define("GENERATE_GINKGO_FOREST", true); + GENERATE_KARST_HILLS = BUILDER.define("GENERATE_KARST_HILLS", true); + GENERATE_PETUNIA_PLAINS = BUILDER.define("GENERATE_PETUNIA_PLAINS", true); + GENERATE_GOLDEN_BEACH = BUILDER.define("GENERATE_GOLDEN_BEACH", true); + GENERATE_PALM_BEACH = BUILDER.define("GENERATE_PALM_BEACH", true); + GENERATE_AZURE_DESERT = BUILDER.define("GENERATE_AZURE_DESERT", true); + GENERATE_JADEITE_DESERT = BUILDER.define("GENERATE_JADEITE_DESERT", true); + GENERATE_VOLCANIC_CAVES = BUILDER.define("GENERATE_VOLCANIC_CAVES", true); + GENERATE_EMERY_DESERT = BUILDER.define("GENERATE_EMERY_DESERT", true); + GENERATE_QUARTZ_DESERT = BUILDER.define("GENERATE_QUARTZ_DESERT", true); + GENERATE_PURPURACEUS_SWAMP = BUILDER.define("GENERATE_PURPURACEUS_SWAMP", true); + BUILDER.pop(); + + BUILDER.comment("You can enable/disable curing mobs and change the possibilities."); + BUILDER.push("cure-mobs"); + ENABLE_CURE_ZOMBIFIED_PIGLIN = BUILDER.comment("Allow players to cure zombified piglin.") + .define("ENABLE_CURE_ZOMBIFIED_PIGLIN", true); + ZOMBIFIED_PIGLIN_CONVERT_TO_PIGLIN_BRUTE_POSSIBILITY_INV = BUILDER.comment("Multiplicative Inverse of the possibility of cured zombified piglin convert to piglin brute. For example, 16 means 6.25% (1/16) chance for converting to piglin brute and 93.75% for piglin.") + .defineInRange("ZOMBIFIED_PIGLIN_CONVERT_TO_PIGLIN_BRUTE_POSSIBILITY_INV", 16, 1, 256); + ENABLE_CURE_PHANTOM = BUILDER.comment("Allow players to cure phantom.") + .define("ENABLE_CURE_PHANTOM", true); + BUILDER.pop(); + BUILDER.pop(); + + SPEC = BUILDER.build(); + } +} 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..9676f8f5 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/CarpentryTableRecipe.java @@ -0,0 +1,38 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.crafting.cache.CachedRecipeList; +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 org.jetbrains.annotations.NotNull; + +public class CarpentryTableRecipe extends SingleItemRecipe { + public static final CachedRecipeList recipeList = new CachedRecipeList<>( + ECRecipes.CARPENTRY_TABLE_TYPE, + CarpentryTableRecipe.class + ); + + public CarpentryTableRecipe(ResourceLocation id, String group, Ingredient ingredient, ItemStack result) { + super(ECRecipes.CARPENTRY_TABLE_TYPE.get(), ECRecipeSerializer.CARPENTRY_SERIALIZER.get(), id, group, ingredient, result); + } + + @Override + public boolean matches(Container inv, @NotNull Level level) { + return this.ingredient.test(inv.getItem(0)); + } + + @Override @NotNull + 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/GlassKilnRecipe.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/GlassKilnRecipe.java new file mode 100644 index 00000000..fe8bb004 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/GlassKilnRecipe.java @@ -0,0 +1,37 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.crafting.cache.CachedRecipeList; +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 org.jetbrains.annotations.NotNull; + +public class GlassKilnRecipe extends AbstractCookingRecipe { + public static final CachedRecipeList recipeList = new CachedRecipeList<>( + ECRecipes.GLASS_KILN_TYPE, + GlassKilnRecipe.class + ); + + public GlassKilnRecipe(ResourceLocation id, String group, Ingredient ingredient, ItemStack result, float experience, int cookingTime) { + super(ECRecipes.GLASS_KILN_TYPE.get(), id, group, ingredient, result, experience, cookingTime); + } + + @Override @NotNull + public RecipeSerializer getSerializer() { + return ECRecipeSerializer.GLASS_KILN_SERIALIZER.get(); + } + + @Override @NotNull + 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/IceMakerRecipe.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/IceMakerRecipe.java new file mode 100644 index 00000000..199ba8e0 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/IceMakerRecipe.java @@ -0,0 +1,100 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.api.fluid.FluidType; +import com.hexagram2021.emeraldcraft.api.fluid.FluidTypes; +import com.hexagram2021.emeraldcraft.common.blocks.entity.IceMakerBlockEntity; +import com.hexagram2021.emeraldcraft.common.crafting.cache.CachedRecipeList; +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.Recipe; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; + +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 final CachedRecipeList recipeList = new CachedRecipeList<>( + ECRecipes.ICE_MAKER_TYPE, + IceMakerRecipe.class + ); + + public static final int FREEZING_TIME = 50; + public static final 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 @NotNull + public RecipeSerializer getSerializer() { + return ECRecipeSerializer.ICE_MAKER_SERIALIZER.get(); + } + + @Override @NotNull + public ItemStack getToastSymbol() { + return new ItemStack(ECBlocks.WorkStation.ICE_MAKER); + } + + @Override @NotNull + 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 @NotNull + public ItemStack assemble(@NotNull Container container) { + return this.result.copy(); + } + + @Override @NotNull + public ItemStack getResultItem() { + return this.result; + } + + @Override + public boolean matches(@NotNull Container container, @NotNull Level level) { + return FluidTypes.getID(this.inputFluid) == ((IceMakerBlockEntity)container).getInputFluidTypeIndex(); + } + + @Override @NotNull + public ResourceLocation getId() { + return this.id; + } + + @Override @NotNull + public RecipeType getType() { + return ECRecipes.ICE_MAKER_TYPE.get(); + } +} 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..31679862 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MelterRecipe.java @@ -0,0 +1,108 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.api.fluid.FluidType; +import com.hexagram2021.emeraldcraft.common.crafting.cache.CachedRecipeList; +import com.hexagram2021.emeraldcraft.common.crafting.menu.MelterMenu; +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 org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +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 final CachedRecipeList recipeList = new CachedRecipeList<>( + ECRecipes.MELTER_TYPE, + MelterRecipe.class + ); + + public static final 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 @NotNull + public RecipeSerializer getSerializer() { + return ECRecipeSerializer.MELTER_SERIALIZER.get(); + } + + @Override @NotNull + public ItemStack getToastSymbol() { + return new ItemStack(ECBlocks.WorkStation.MELTER); + } + + public Ingredient getIngredient() { + return this.ingredient; + } + + @Override @NotNull + public NonNullList getIngredients() { + return NonNullList.of(this.ingredient); + } + + @Override @NotNull + public String getGroup() { + return this.group; + } + + public FluidType getFluidType() { + return resultFluid; + } + + public int getFluidAmount() { + return resultAmount; + } + + public int getMeltingTime() { + return this.meltingTime; + } + + @Override @Nullable + public ItemStack assemble(@NotNull Container container) { + return null; + } + + @Override @Nullable + public ItemStack getResultItem() { + return null; + } + + @Override + public boolean matches(Container container, @NotNull Level level) { + return this.ingredient.test(container.getItem(MelterMenu.INGREDIENT_SLOT)); + } + + @Override @NotNull + public ResourceLocation getId() { + return this.id; + } + + @Override @NotNull + public RecipeType getType() { + return ECRecipes.MELTER_TYPE.get(); + } +} 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..8d699b7d --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/MineralTableRecipe.java @@ -0,0 +1,40 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.hexagram2021.emeraldcraft.common.crafting.cache.CachedRecipeList; +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 org.jetbrains.annotations.NotNull; + +public class MineralTableRecipe extends AbstractCookingRecipe { + + public static final CachedRecipeList recipeList = new CachedRecipeList<>( + ECRecipes.MINERAL_TABLE_TYPE, + MineralTableRecipe.class + ); + + public static final int BURN_TIME = 500; + + public MineralTableRecipe(ResourceLocation id, String group, Ingredient ingredient, ItemStack result, float experience, int cookingTime) { + super(ECRecipes.MINERAL_TABLE_TYPE.get(), id, group, ingredient, result, experience, cookingTime); + } + + @Override @NotNull + public RecipeSerializer getSerializer() { + return ECRecipeSerializer.MINERAL_TABLE_SERIALIZER.get(); + } + + @Override @NotNull + 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/TradeShadowRecipe.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/TradeShadowRecipe.java new file mode 100644 index 00000000..9cb0b98b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/TradeShadowRecipe.java @@ -0,0 +1,138 @@ +package com.hexagram2021.emeraldcraft.common.crafting; + +import com.google.common.collect.Maps; +import com.hexagram2021.emeraldcraft.api.tradable.ITradableDataFactory; +import com.hexagram2021.emeraldcraft.common.crafting.cache.CachedRecipeList; +import com.hexagram2021.emeraldcraft.common.register.ECRecipeSerializer; +import com.hexagram2021.emeraldcraft.common.register.ECRecipes; +import net.minecraft.client.Minecraft; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.Container; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.npc.*; +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; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.Map; + +public class TradeShadowRecipe implements Recipe { + protected final ResourceLocation id; + protected final ItemStack costA; + protected final ItemStack costB; + protected final ItemStack result; + protected final EntityType entityType; + protected final VillagerProfession profession; + protected final int villagerLevel; + protected final int xp; + + protected static final Map> LAZY_RENDER_VILLAGERS = Maps.newHashMap(); + protected static final Map, Map> LAZY_RENDER_TRADERS = Maps.newHashMap(); + + public static final CachedRecipeList recipeList = new CachedRecipeList<>( + ECRecipes.TRADE_SHADOW_TYPE, + TradeShadowRecipe.class + ); + + public TradeShadowRecipe(ResourceLocation id, ItemStack costA, ItemStack costB, ItemStack result, EntityType entityType, + @Nullable VillagerProfession profession, int villagerLevel, int xp) { + this.id = id; + this.costA = costA; + this.costB = costB; + this.result = result; + this.entityType = entityType; + this.profession = profession; + this.villagerLevel = villagerLevel; + this.xp = xp; + } + + @Override + public boolean matches(Container container, @NotNull Level level) { + return this.costA.sameItem(container.getItem(0)) && this.costB.sameItem(container.getItem(1)); + } + + @Override @NotNull + public ItemStack assemble(@NotNull Container container) { + return null; + } + + @Override + public boolean canCraftInDimensions(int wid, int hgt) { + return false; + } + + @Override @NotNull + public ItemStack getResultItem() { + return this.result; + } + + @Override @NotNull + public ResourceLocation getId() { + return this.id; + } + + @Override @NotNull + public RecipeSerializer getSerializer() { + return ECRecipeSerializer.TRADE_SHADOW_SERIALIZER.get(); + } + + @Override @NotNull + public RecipeType getType() { + return ECRecipes.TRADE_SHADOW_TYPE.get(); + } + + public ItemStack getCostA() { + return this.costA; + } + + public ItemStack getCostB() { + return this.costB; + } + + public EntityType getEntityType() { + return this.entityType; + } + + public VillagerProfession getProfession() { + return this.profession; + } + + public int getVillagerLevel() { + return this.villagerLevel; + } + + public int getXp() { + return this.xp; + } + + @OnlyIn(Dist.CLIENT) + public LivingEntity getRenderVillager() { + assert Minecraft.getInstance().level != null; + if(this.entityType != EntityType.VILLAGER || this.profession == null) { + return LAZY_RENDER_TRADERS.computeIfAbsent(this.entityType, entityType1 -> Maps.newHashMap()) + .computeIfAbsent(this.villagerLevel, villagerLevel1 -> { + Entity trader = this.entityType.create(Minecraft.getInstance().level); + assert trader != null; + + ITradableDataFactory.setTradableMobData(trader, this.profession, this.villagerLevel); + return (LivingEntity)trader; + }); + } + return LAZY_RENDER_VILLAGERS.computeIfAbsent(this.profession, profession1 -> Maps.newHashMap()) + .computeIfAbsent(this.villagerLevel, villagerLevel1 -> { + Villager villager = EntityType.VILLAGER.create(Minecraft.getInstance().level); + assert villager != null; + villager.setNoAi(true); + villager.setVillagerData(new VillagerData(VillagerType.PLAINS, this.profession, this.villagerLevel)); + return villager; + }); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/cache/CachedRecipeList.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/cache/CachedRecipeList.java new file mode 100644 index 00000000..0da79ce1 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/cache/CachedRecipeList.java @@ -0,0 +1,87 @@ +package com.hexagram2021.emeraldcraft.common.crafting.cache; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeManager; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.level.Level; +import net.minecraftforge.client.event.RecipesUpdatedEvent; +import net.minecraftforge.event.TagsUpdatedEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import javax.annotation.Nonnull; +import java.util.Collection; +import java.util.Map; +import java.util.Objects; +import java.util.function.Function; +import java.util.function.Supplier; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@Mod.EventBusSubscriber(modid = MODID) +@SuppressWarnings("unused") +public class CachedRecipeList> { + public static final int INVALID_RELOAD_COUNT = -1; + private static int reloadCount = 0; + + private final Supplier> type; + private final Class recipeClass; + private Map recipes; + private boolean cachedDataIsClient; + private int cachedAtReloadCount = INVALID_RELOAD_COUNT; + + public CachedRecipeList(Supplier> type, Class recipeClass) { + this.type = type; + this.recipeClass = recipeClass; + } + + @SubscribeEvent + public static void onTagsUpdated(TagsUpdatedEvent event) { + ++reloadCount; + } + + @SubscribeEvent + public static void onRecipeUpdatedClient(RecipesUpdatedEvent event) { + ++reloadCount; + } + + public static int getReloadCount() { + return reloadCount; + } + + public Collection getRecipes(@Nonnull Level level) { + updateCache(level.getRecipeManager(), level.isClientSide()); + return Objects.requireNonNull(recipes).values(); + } + + public Collection getRecipeNames(@Nonnull Level level) { + updateCache(level.getRecipeManager(), level.isClientSide()); + return Objects.requireNonNull(recipes).keySet(); + } + + public R getById(@Nonnull Level level, ResourceLocation name) { + updateCache(level.getRecipeManager(), level.isClientSide()); + return recipes.get(name); + } + + private void updateCache(RecipeManager manager, boolean isClient) { + if(recipes!=null && cachedAtReloadCount==reloadCount && (!cachedDataIsClient||isClient)) { + return; + } + this.recipes = manager.getRecipes().stream() + .filter(iRecipe -> iRecipe.getType()==type.get()) + .flatMap(r -> { + if(r instanceof IListRecipe listRecipe) { + return listRecipe.getSubRecipes().stream(); + } + return Stream.of(r); + }) + .map(recipeClass::cast) + .collect(Collectors.toMap(R::getId, Function.identity())); + this.cachedDataIsClient = isClient; + this.cachedAtReloadCount = reloadCount; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/cache/IListRecipe.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/cache/IListRecipe.java new file mode 100644 index 00000000..bf65d4d5 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/cache/IListRecipe.java @@ -0,0 +1,9 @@ +package com.hexagram2021.emeraldcraft.common.crafting.cache; + +import net.minecraft.world.item.crafting.Recipe; + +import java.util.List; + +public interface IListRecipe { + List> getSubRecipes(); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/ModsLoadedEventSubscriber.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/ModsLoadedEventSubscriber.java new file mode 100644 index 00000000..1098d757 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/ModsLoadedEventSubscriber.java @@ -0,0 +1,32 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat; + +import com.hexagram2021.emeraldcraft.common.crafting.compat.create.CreateFluidTypes; +import com.hexagram2021.emeraldcraft.common.crafting.compat.example.EmeraldCraftContinuousMinerBlocks; +import com.hexagram2021.emeraldcraft.common.crafting.compat.immersive_engineering.IEFluidTypes; +import net.minecraftforge.fml.ModList; + +public class ModsLoadedEventSubscriber { + public static boolean CREATE = false; + public static boolean IE = false; + + public static void compatModLoaded() { + ModList modList = ModList.get(); + if(modList.isLoaded("create")) { + CREATE = true; + } + if(modList.isLoaded( "immersiveengineering")) { + IE = true; + } + } + + public static void SolveCompat() { + if(CREATE) { + CreateFluidTypes.init(); + } + if(IE) { + IEFluidTypes.init(); + } + + EmeraldCraftContinuousMinerBlocks.init(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/create/CreateFluidTypes.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/create/CreateFluidTypes.java new file mode 100644 index 00000000..0bd027f6 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/create/CreateFluidTypes.java @@ -0,0 +1,18 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat.create; + +import com.hexagram2021.emeraldcraft.api.fluid.FluidType; +import com.hexagram2021.emeraldcraft.api.fluid.FluidTypes; +import com.hexagram2021.emeraldcraft.common.register.ECItems; + +public enum CreateFluidTypes implements FluidType { + melted_zinc { + @Override + public int getGUIID() { + return 7; + } + }; + + public static void init() { + FluidTypes.addFluidType(melted_zinc, ECItems.CreateCompatItems.MELTED_ZINC_BUCKET, ECItems.CreateCompatItems.MELTED_ZINC_BUCKET.getId()); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/example/EmeraldCraftContinuousMinerBlocks.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/example/EmeraldCraftContinuousMinerBlocks.java new file mode 100644 index 00000000..6304876a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/example/EmeraldCraftContinuousMinerBlocks.java @@ -0,0 +1,47 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat.example; + +import com.hexagram2021.emeraldcraft.api.continuous_miner.ContinuousMinerCustomLoot; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import net.minecraft.resources.ResourceLocation; + +import java.util.List; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class EmeraldCraftContinuousMinerBlocks { + public static void init() { + ContinuousMinerCustomLoot.addBlockLoot( + List.of(ECBlocks.Decoration.VITRIFIED_SAND.getId()), + new ResourceLocation(MODID, "continuous_miner/ores/obsidian") + ); + + ContinuousMinerCustomLoot.addBlockLoot(List.of( + ECBlocks.Plant.GINKGO_LOG.getId(), + ECBlocks.Plant.STRIPPED_GINKGO_LOG.getId(), + ECBlocks.Plant.GINKGO_WOOD.getId(), + ECBlocks.Plant.STRIPPED_GINKGO_WOOD.getId() + ), new ResourceLocation(MODID, "continuous_miner/wood/ginkgo_logs")); + ContinuousMinerCustomLoot.addBlockLoot(List.of( + ECBlocks.Plant.PALM_LOG.getId(), + ECBlocks.Plant.STRIPPED_PALM_LOG.getId(), + ECBlocks.Plant.PALM_WOOD.getId(), + ECBlocks.Plant.STRIPPED_PALM_WOOD.getId() + ), new ResourceLocation(MODID, "continuous_miner/wood/palm_logs")); + ContinuousMinerCustomLoot.addBlockLoot(List.of( + ECBlocks.Plant.PEACH_LOG.getId(), + ECBlocks.Plant.STRIPPED_PEACH_LOG.getId(), + ECBlocks.Plant.PEACH_WOOD.getId(), + ECBlocks.Plant.STRIPPED_PEACH_WOOD.getId() + ), new ResourceLocation(MODID, "continuous_miner/wood/peach_logs")); + ContinuousMinerCustomLoot.addBlockLoot(List.of( + ECBlocks.Plant.PURPURACEUS_STEM.getId(), + ECBlocks.Plant.STRIPPED_PURPURACEUS_STEM.getId(), + ECBlocks.Plant.PURPURACEUS_HYPHAE.getId(), + ECBlocks.Plant.STRIPPED_PURPURACEUS_HYPHAE.getId() + ), new ResourceLocation(MODID, "continuous_miner/wood/purpuraceus_stems")); + + ContinuousMinerCustomLoot.addBlockLoot(List.of( + ECBlocks.Plant.PURPURACEUS_NYLIUM.getId() + ), new ResourceLocation(MODID, "continuous_miner/nylium/purpuraceus_nylium")); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/immersive_engineering/IEFluidTypes.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/immersive_engineering/IEFluidTypes.java new file mode 100644 index 00000000..7eef262d --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/immersive_engineering/IEFluidTypes.java @@ -0,0 +1,46 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat.immersive_engineering; + +import com.hexagram2021.emeraldcraft.api.fluid.FluidType; +import com.hexagram2021.emeraldcraft.api.fluid.FluidTypes; +import com.hexagram2021.emeraldcraft.common.register.ECItems; + +public enum IEFluidTypes implements FluidType { + melted_aluminum { + @Override + public int getGUIID() { + return 15; + } + }, + melted_lead { + @Override + public int getGUIID() { + return 14; + } + }, + melted_silver { + @Override + public int getGUIID() { + return 7; + } + }, + melted_nickel { + @Override + public int getGUIID() { + return 11; + } + }, + melted_uranium { + @Override + public int getGUIID() { + return 10; + } + }; + + public static void init() { + FluidTypes.addFluidType(melted_aluminum, ECItems.IECompatItems.MELTED_ALUMINUM_BUCKET, ECItems.IECompatItems.MELTED_ALUMINUM_BUCKET.getId()); + FluidTypes.addFluidType(melted_lead, ECItems.IECompatItems.MELTED_LEAD_BUCKET, ECItems.IECompatItems.MELTED_LEAD_BUCKET.getId()); + FluidTypes.addFluidType(melted_silver, ECItems.IECompatItems.MELTED_SILVER_BUCKET, ECItems.IECompatItems.MELTED_SILVER_BUCKET.getId()); + FluidTypes.addFluidType(melted_nickel, ECItems.IECompatItems.MELTED_NICKEL_BUCKET, ECItems.IECompatItems.MELTED_NICKEL_BUCKET.getId()); + FluidTypes.addFluidType(melted_uranium, ECItems.IECompatItems.MELTED_URANIUM_BUCKET, ECItems.IECompatItems.MELTED_URANIUM_BUCKET.getId()); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/CarpentryTableRecipeCategory.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/CarpentryTableRecipeCategory.java new file mode 100644 index 00000000..e865949d --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/CarpentryTableRecipeCategory.java @@ -0,0 +1,64 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat.jei; + +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.builder.IRecipeLayoutBuilder; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.IFocusGroup; +import mezz.jei.api.recipe.RecipeIngredientRole; +import mezz.jei.api.recipe.RecipeType; +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 CarpentryTableRecipeCategory 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 CarpentryTableRecipeCategory(IGuiHelper guiHelper) { + this.background = guiHelper.createDrawable(TEXTURE, 0, 220, width, height); + this.icon = guiHelper.createDrawableIngredient(VanillaTypes.ITEM_STACK, new ItemStack(ECBlocks.WorkStation.CARPENTRY_TABLE)); + } + + @Override + public RecipeType getRecipeType() { + return JEIHelper.ECJEIRecipeTypes.CARPENTRY_TABLE; + } + + @Override + public Component getTitle() { + return Component.translatable("block.emeraldcraft.carpentry_table"); + } + + @Override + public IDrawable getBackground() { + return background; + } + + @Override + public IDrawable getIcon() { + return icon; + } + + @Override + public void setRecipe(IRecipeLayoutBuilder builder, CarpentryTableRecipe recipe, IFocusGroup focuses) { + builder.addSlot(RecipeIngredientRole.INPUT, 1, 9).addIngredients(recipe.getIngredients().get(0)); + builder.addSlot(RecipeIngredientRole.OUTPUT, 61, 9).addItemStack(recipe.getResultItem()); + } + + @Override + public boolean isHandled(CarpentryTableRecipe recipe) { + return !recipe.isSpecial(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/GlassKilnRecipeCategory.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/GlassKilnRecipeCategory.java new file mode 100644 index 00000000..ef8062ff --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/GlassKilnRecipeCategory.java @@ -0,0 +1,126 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat.jei; + +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.register.ECBlocks; +import com.mojang.blaze3d.vertex.PoseStack; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; +import mezz.jei.api.gui.drawable.*; +import mezz.jei.api.gui.ingredient.IRecipeSlotsView; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.IFocusGroup; +import mezz.jei.api.recipe.RecipeIngredientRole; +import mezz.jei.api.recipe.RecipeType; +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.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 IDrawableAnimated animatedFlame; + private final IDrawable icon; + private final LoadingCache cachedArrows; + + public GlassKilnRecipeCategory(IGuiHelper guiHelper) { + this.background = guiHelper.createDrawable(TEXTURE, 0, 114, 82, 54); + IDrawableStatic staticFlame = guiHelper.createDrawable(TEXTURE, 82, 114, 14, 14); + this.animatedFlame = guiHelper.createAnimatedDrawable(staticFlame, 300, IDrawableAnimated.StartDirection.TOP, true); + this.icon = guiHelper.createDrawableIngredient(VanillaTypes.ITEM_STACK, 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 RecipeType getRecipeType() { + return JEIHelper.ECJEIRecipeTypes.GLASS_KILN; + } + + @Override + public Component getTitle() { + return Component.translatable("block.emeraldcraft.glass_kiln"); + } + + @Override + public IDrawable getBackground() { + return this.background; + } + + @Override + public IDrawable getIcon() { + return this.icon; + } + + @Override + public void draw(GlassKilnRecipe recipe, IRecipeSlotsView recipeSlotsView, 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); + } + + @SuppressWarnings("SameParameterValue") + protected void drawExperience(GlassKilnRecipe recipe, PoseStack poseStack, int y) { + float experience = recipe.getExperience(); + if (experience > 0) { + Component experienceString = Component.translatable("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); + } + } + + @SuppressWarnings("SameParameterValue") + protected void drawCookTime(GlassKilnRecipe recipe, PoseStack poseStack, int y) { + int cookTime = recipe.getCookingTime(); + if (cookTime > 0) { + int cookTimeSeconds = cookTime / 20; + Component timeString = Component.translatable("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(IRecipeLayoutBuilder builder, GlassKilnRecipe recipe, IFocusGroup focuses) { + builder.addSlot(RecipeIngredientRole.INPUT, 1, 1).addIngredients(recipe.getIngredients().get(0)); + builder.addSlot(RecipeIngredientRole.OUTPUT, 61, 19).addItemStack(recipe.getResultItem()); + } + + @Override + public boolean isHandled(GlassKilnRecipe recipe) { + return !recipe.isSpecial(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/IceMakerRecipeCategory.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/IceMakerRecipeCategory.java new file mode 100644 index 00000000..77fb53ea --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/IceMakerRecipeCategory.java @@ -0,0 +1,133 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat.jei; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +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.builder.IRecipeLayoutBuilder; +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.IRecipeSlotsView; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.IFocusGroup; +import mezz.jei.api.recipe.RecipeIngredientRole; +import mezz.jei.api.recipe.RecipeType; +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.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(VanillaTypes.ITEM_STACK, 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), + guiHelper.createDrawable(TEXTURE, 72, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 84, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 96, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 108, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 120, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 132, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 144, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 156, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 168, 56, 12, 49), + guiHelper.createDrawable(TEXTURE, 180, 56, 12, 49) + }; + } + + @Override + public RecipeType getRecipeType() { + return JEIHelper.ECJEIRecipeTypes.ICE_MAKER; + } + + @Override + public Component getTitle() { + return Component.translatable("block.emeraldcraft.ice_maker"); + } + + @Override + public IDrawable getBackground() { + return background; + } + + @Override + public IDrawable getIcon() { + return icon; + } + + @Override + public void draw(IceMakerRecipe recipe, IRecipeSlotsView recipeSlotsView, 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().getGUIID()].draw(poseStack, 72, 1); + } + + @SuppressWarnings("SameParameterValue") + protected void drawCookTime(IceMakerRecipe recipe, PoseStack poseStack, int y) { + int freezeTime = recipe.getFreezingTime(); + if (freezeTime > 0) { + int cookTimeSeconds = freezeTime / 20; + Component timeString = Component.translatable("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(IRecipeLayoutBuilder builder, IceMakerRecipe recipe, IFocusGroup focuses) { + builder.addSlot(RecipeIngredientRole.OUTPUT, 128, 19).addItemStack(recipe.getResultItem()); + } + + 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/jei/JEIHelper.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/JEIHelper.java new file mode 100644 index 00000000..727cdd35 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/JEIHelper.java @@ -0,0 +1,171 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat.jei; + +import com.hexagram2021.emeraldcraft.client.screens.GlassKilnScreen; +import com.hexagram2021.emeraldcraft.client.screens.IceMakerScreen; +import com.hexagram2021.emeraldcraft.client.screens.MelterScreen; +import com.hexagram2021.emeraldcraft.client.screens.MineralTableScreen; +import com.hexagram2021.emeraldcraft.common.crafting.*; +import com.hexagram2021.emeraldcraft.common.crafting.cache.CachedRecipeList; +import com.hexagram2021.emeraldcraft.common.crafting.menu.*; +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.RecipeTypes; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.RecipeType; +import mezz.jei.api.registration.*; +import mezz.jei.api.runtime.IJeiRuntime; +import net.minecraft.client.Minecraft; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Recipe; + +import java.util.ArrayList; +import java.util.List; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@JeiPlugin +public class JEIHelper implements IModPlugin { + public interface ECJEIRecipeTypes { + RecipeType CARPENTRY_TABLE = new RecipeType<>(CarpentryTableRecipeCategory.UID, CarpentryTableRecipe.class); + RecipeType GLASS_KILN = new RecipeType<>(GlassKilnRecipeCategory.UID, GlassKilnRecipe.class); + RecipeType MINERAL_TABLE = new RecipeType<>(MineralTableRecipeCategory.UID, MineralTableRecipe.class); + RecipeType ICE_MAKER = new RecipeType<>(IceMakerRecipeCategory.UID, IceMakerRecipe.class); + RecipeType MELTER = new RecipeType<>(MelterRecipeCategory.UID, MelterRecipe.class); + RecipeType TRADES = new RecipeType<>(VillagerTradeCategory.UID, TradeShadowRecipe.class); + } + + public interface ECJEIMenuTypes { + MenuType CARPENTRY_TABLE = new MenuType<>(CarpentryTableMenu::new); + MenuType GLASS_KILN = new MenuType<>(GlassKilnMenu::new); + MenuType MINERAL_TABLE = new MenuType<>(MineralTableMenu::new); + MenuType ICE_MAKER = new MenuType<>(IceMakerMenu::new); + MenuType MELTER = new MenuType<>(MelterMenu::new); + } + + private static final ResourceLocation UID = new ResourceLocation(MODID, "main"); + + @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 CarpentryTableRecipeCategory(guiHelper), + new GlassKilnRecipeCategory(guiHelper), + new MineralTableRecipeCategory(guiHelper), + new MelterRecipeCategory(guiHelper), + new IceMakerRecipeCategory(guiHelper), + new VillagerTradeCategory(guiHelper) + ); + } + + @Override + public void registerVanillaCategoryExtensions(IVanillaCategoryExtensionRegistration registration) { } + + @Override + public void registerRecipes(IRecipeRegistration registration) { + ECLogger.info("Adding EC recipes to JEI!!"); + registration.addRecipes(ECJEIRecipeTypes.CARPENTRY_TABLE, getRecipes(CarpentryTableRecipe.recipeList)); + registration.addRecipes(ECJEIRecipeTypes.GLASS_KILN, getRecipes(GlassKilnRecipe.recipeList)); + registration.addRecipes(ECJEIRecipeTypes.MINERAL_TABLE, getRecipes(MineralTableRecipe.recipeList)); + registration.addRecipes(ECJEIRecipeTypes.MELTER, getRecipes(MelterRecipe.recipeList)); + registration.addRecipes(ECJEIRecipeTypes.ICE_MAKER, getRecipes(IceMakerRecipe.recipeList)); + registration.addRecipes(ECJEIRecipeTypes.TRADES, getRecipes(TradeShadowRecipe.recipeList)); + } + + private > List getRecipes(CachedRecipeList cachedList) { + return new ArrayList<>(cachedList.getRecipes(Minecraft.getInstance().level)); + } + + @Override + public void registerRecipeTransferHandlers(IRecipeTransferRegistration registration) { + registration.addRecipeTransferHandler( + CarpentryTableMenu.class, + ECJEIMenuTypes.CARPENTRY_TABLE, + ECJEIRecipeTypes.CARPENTRY_TABLE, + CarpentryTableMenu.INPUT_SLOT, 1, + CarpentryTableMenu.INV_SLOT_START, 36 + ); + registration.addRecipeTransferHandler( + GlassKilnMenu.class, + ECJEIMenuTypes.GLASS_KILN, + ECJEIRecipeTypes.GLASS_KILN, + GlassKilnMenu.INGREDIENT_SLOT, 1, + GlassKilnMenu.INV_SLOT_START, 36 + ); + registration.addRecipeTransferHandler( + GlassKilnMenu.class, + ECJEIMenuTypes.GLASS_KILN, + RecipeTypes.FUELING, + GlassKilnMenu.FUEL_SLOT,1, + GlassKilnMenu.INV_SLOT_START, 36 + ); + registration.addRecipeTransferHandler( + MineralTableMenu.class, + ECJEIMenuTypes.MINERAL_TABLE, + ECJEIRecipeTypes.MINERAL_TABLE, + MineralTableMenu.INGREDIENT_SLOT, 1, + MineralTableMenu.INV_SLOT_START, 36 + ); + registration.addRecipeTransferHandler( + MelterMenu.class, + ECJEIMenuTypes.MELTER, + ECJEIRecipeTypes.MELTER, + MelterMenu.INGREDIENT_SLOT, 1, + MelterMenu.INV_SLOT_START, 36 + ); + registration.addRecipeTransferHandler( + MelterMenu.class, + ECJEIMenuTypes.MELTER, + RecipeTypes.FUELING, + MelterMenu.FUEL_SLOT,1, + MelterMenu.INV_SLOT_START, 36 + ); + registration.addRecipeTransferHandler( + IceMakerMenu.class, + ECJEIMenuTypes.ICE_MAKER, + ECJEIRecipeTypes.ICE_MAKER, + IceMakerMenu.INGREDIENT_INPUT_SLOT, 1, + IceMakerMenu.INV_SLOT_START, 36 + ); + } + + @Override + public void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { + registration.addRecipeCatalyst(new ItemStack(ECBlocks.WorkStation.CARPENTRY_TABLE), ECJEIRecipeTypes.CARPENTRY_TABLE); + registration.addRecipeCatalyst(new ItemStack(ECBlocks.WorkStation.GLASS_KILN), ECJEIRecipeTypes.GLASS_KILN, RecipeTypes.FUELING); + registration.addRecipeCatalyst(new ItemStack(ECBlocks.WorkStation.MINERAL_TABLE), ECJEIRecipeTypes.MINERAL_TABLE); + registration.addRecipeCatalyst(new ItemStack(ECBlocks.WorkStation.MELTER), ECJEIRecipeTypes.MELTER); + registration.addRecipeCatalyst(new ItemStack(ECBlocks.WorkStation.ICE_MAKER), ECJEIRecipeTypes.ICE_MAKER); + registration.addRecipeCatalyst(new ItemStack(Items.EMERALD), ECJEIRecipeTypes.TRADES); + } + + @Override + public void registerGuiHandlers(IGuiHandlerRegistration registration) { + registration.addRecipeClickArea(GlassKilnScreen.class, 78, 32, 28, 23, ECJEIRecipeTypes.GLASS_KILN, RecipeTypes.FUELING); + registration.addRecipeClickArea(MineralTableScreen.class, 97, 16, 14, 30, ECJEIRecipeTypes.MINERAL_TABLE); + registration.addRecipeClickArea(MelterScreen.class, 63, 32, 28, 23, ECJEIRecipeTypes.MELTER, RecipeTypes.FUELING); + registration.addRecipeClickArea(IceMakerScreen.class, 96, 32, 28, 23, ECJEIRecipeTypes.ICE_MAKER); + } + + @Override + public void registerAdvanced(IAdvancedRegistration registration) { } + + @Override + public void onRuntimeAvailable(IJeiRuntime jeiRuntime) { } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/MelterRecipeCategory.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/MelterRecipeCategory.java new file mode 100644 index 00000000..93cc975d --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/MelterRecipeCategory.java @@ -0,0 +1,138 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat.jei; + +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +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.builder.IRecipeLayoutBuilder; +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.IRecipeSlotsView; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.IFocusGroup; +import mezz.jei.api.recipe.RecipeIngredientRole; +import mezz.jei.api.recipe.RecipeType; +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.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(VanillaTypes.ITEM_STACK, 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), + guiHelper.createDrawable(TEXTURE, 72, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 84, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 96, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 108, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 120, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 132, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 144, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 156, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 168, 54, 12, 49), + guiHelper.createDrawable(TEXTURE, 180, 54, 12, 49) + }; + } + + @Override + public RecipeType getRecipeType() { + return JEIHelper.ECJEIRecipeTypes.MELTER; + } + + @Override + public Component getTitle() { + return Component.translatable("block.emeraldcraft.melter"); + } + + @Override + public IDrawable getBackground() { + return this.background; + } + + @Override + public IDrawable getIcon() { + return this.icon; + } + + @Override + public void draw(MelterRecipe recipe, IRecipeSlotsView recipeSlotsView, 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().getGUIID()].draw(poseStack, 65, 2); + } + + @SuppressWarnings("SameParameterValue") + protected void drawCookTime(MelterRecipe recipe, PoseStack poseStack, int y) { + int meltTime = recipe.getMeltingTime(); + if (meltTime > 0) { + int cookTimeSeconds = meltTime / 20; + Component timeString = Component.translatable("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(IRecipeLayoutBuilder builder, MelterRecipe recipe, IFocusGroup focuses) { + builder.addSlot(RecipeIngredientRole.INPUT, 1, 1).addIngredients(recipe.getIngredient()); + } + + 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/jei/MineralTableRecipeCategory.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/MineralTableRecipeCategory.java new file mode 100644 index 00000000..daa968ce --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/MineralTableRecipeCategory.java @@ -0,0 +1,105 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat.jei; + +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.ITickTimer; +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; +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.IRecipeSlotsView; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.IFocusGroup; +import mezz.jei.api.recipe.RecipeIngredientRole; +import mezz.jei.api.recipe.RecipeType; +import mezz.jei.api.recipe.category.IRecipeCategory; +import net.minecraft.network.chat.Component; +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(VanillaTypes.ITEM_STACK, 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 RecipeType getRecipeType() { + return JEIHelper.ECJEIRecipeTypes.MINERAL_TABLE; + } + + @Override + public Component getTitle() { + return Component.translatable("block.emeraldcraft.mineral_table"); + } + + @Override + public IDrawable getBackground() { + return background; + } + + @Override + public IDrawable getIcon() { + return icon; + } + + @Override + public void draw(MineralTableRecipe recipe, IRecipeSlotsView recipeSlotsView, 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(IRecipeLayoutBuilder builder, MineralTableRecipe recipe, IFocusGroup focuses) { + builder.addSlot(RecipeIngredientRole.INPUT, 24, 3).addIngredients(recipe.getIngredients().get(0)); + builder.addSlot(RecipeIngredientRole.OUTPUT, 81, 3).addItemStack(recipe.getResultItem()).setBackground(slotDrawable, -1, -1); + } + + private static class BubblesTickTimer implements ITickTimer { + 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/jei/VillagerTradeCategory.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/VillagerTradeCategory.java new file mode 100644 index 00000000..2600c028 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/VillagerTradeCategory.java @@ -0,0 +1,160 @@ +package com.hexagram2021.emeraldcraft.common.crafting.compat.jei; + +import com.hexagram2021.emeraldcraft.common.crafting.TradeShadowRecipe; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Matrix4f; +import com.mojang.math.Quaternion; +import com.mojang.math.Vector3f; +import mezz.jei.api.constants.VanillaTypes; +import mezz.jei.api.gui.builder.IRecipeLayoutBuilder; +import mezz.jei.api.gui.drawable.IDrawable; +import mezz.jei.api.gui.ingredient.IRecipeSlotsView; +import mezz.jei.api.helpers.IGuiHelper; +import mezz.jei.api.recipe.IFocusGroup; +import mezz.jei.api.recipe.RecipeIngredientRole; +import mezz.jei.api.recipe.RecipeType; +import mezz.jei.api.recipe.category.IRecipeCategory; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.EntityRenderDispatcher; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import org.lwjgl.BufferUtils; + +import java.nio.FloatBuffer; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class VillagerTradeCategory implements IRecipeCategory { + public static final ResourceLocation UID = new ResourceLocation(MODID, "villager_trade"); + public static final ResourceLocation TEXTURE = new ResourceLocation(MODID, "textures/gui/villager_trade.png"); + + protected static final int VILLAGER_X = 116; + protected static final int VILLAGER_Y = 46; + protected static final int VILLAGER_W = 47; + protected static final int VILLAGER_H = 71; + + private final IDrawable background; + private final IDrawable icon; + + public VillagerTradeCategory(IGuiHelper guiHelper) { + this.background = guiHelper.createDrawable(TEXTURE, 0, 0, 166, 120); + this.icon = guiHelper.createDrawableIngredient(VanillaTypes.ITEM_STACK, new ItemStack(Items.EMERALD)); + } + + @Override + public Component getTitle() { + return Component.translatable("jei.emeraldcraft.villager_trade"); + } + + @Override + public IDrawable getBackground() { + return this.background; + } + + @Override + public IDrawable getIcon() { + return this.icon; + } + + @Override + public RecipeType getRecipeType() { + return JEIHelper.ECJEIRecipeTypes.TRADES; + } + + @Override + public void draw(TradeShadowRecipe recipe, IRecipeSlotsView recipeSlotsView, PoseStack stack, double mouseX, double mouseY) { + renderEntityInCategory(stack, VILLAGER_X, VILLAGER_Y, VILLAGER_W, VILLAGER_H, mouseX, mouseY, recipe.getRenderVillager()); + } + + @Override + public void setRecipe(IRecipeLayoutBuilder builder, TradeShadowRecipe recipe, IFocusGroup focuses) { + builder.addSlot(RecipeIngredientRole.INPUT, 8, 15).addItemStack(recipe.getCostA()); + builder.addSlot(RecipeIngredientRole.INPUT, 34, 15).addItemStack(recipe.getCostB()); + builder.addSlot(RecipeIngredientRole.OUTPUT, 94, 15).addItemStack(recipe.getResultItem()); + } + + @SuppressWarnings("deprecation") + public static void renderEntityInCategory(PoseStack transform, int x, int y, int w, int h, double mouseX, double mouseY, LivingEntity livingEntity) { + float scale = h / 2.4f; + int cx = x + (w / 2); + int cy = y + (h / 2); + int by = y + h; + int offsetY = 4; + + float headYaw = (float) Math.atan((cx - mouseX) / 40.0F) * 40.0F; + float yaw = (float) Math.atan((cx - mouseX) / 40.0F) * 20.0F; + float pitch = (float) Math.atan((cy - offsetY - mouseY) / 40.0F) * 20.0F; + + double guiScale = Minecraft.getInstance().getWindow().getGuiScale(); + double[] xyzTranslation = getGLTranslation(transform, guiScale); + x *= guiScale; + y *= guiScale; + w *= guiScale; + h *= guiScale; + int scissorX = Math.round(Math.round(xyzTranslation[0] + x)); + int scissorY = Math.round(Math.round(Minecraft.getInstance().getWindow().getScreenHeight() - y - h - xyzTranslation[1])); + int scissorW = Math.round(w); + int scissorH = Math.round(h); + RenderSystem.enableScissor(scissorX, scissorY, scissorW, scissorH); + + final Minecraft mc = Minecraft.getInstance(); + transform.pushPose(); + transform.translate(cx, by - offsetY, 1050.0F); + transform.scale(1.0F, 1.0F, -1.0F); + transform.translate(0.0D, 0.0D, 1000.0D); + transform.scale(scale, scale, scale); + Quaternion pitchRotation = Vector3f.XP.rotationDegrees(pitch); + transform.mulPose(Vector3f.ZP.rotationDegrees(180.0F)); + transform.mulPose(pitchRotation); + float oldYawOffset = livingEntity.yBodyRot; + float oldYaw = livingEntity.getYRot(); + float oldPitch = livingEntity.getXRot(); + float oldPrevYawHead = livingEntity.yHeadRotO; + float oldYawHead = livingEntity.yHeadRot; + livingEntity.yBodyRot = 180.0F + yaw; + livingEntity.setYRot(180.0F + headYaw); + livingEntity.setXRot(-pitch); + livingEntity.yHeadRot = livingEntity.getYRot(); + livingEntity.yHeadRotO = livingEntity.getYRot(); + + EntityRenderDispatcher dispatcher = mc.getEntityRenderDispatcher(); + pitchRotation.conj(); + dispatcher.overrideCameraOrientation(pitchRotation); + dispatcher.setRenderShadow(false); + + MultiBufferSource.BufferSource buffers = mc.renderBuffers().bufferSource(); + RenderSystem.runAsFancy(() -> dispatcher.render(livingEntity, 0.0D, 0.0D, 0.0D, 0.0F, 1.0F, transform, buffers, 0x00F000F0)); + buffers.endBatch(); + dispatcher.setRenderShadow(true); + + livingEntity.yBodyRot = oldYawOffset; + livingEntity.setYRot(oldYaw); + livingEntity.setXRot(oldPitch); + livingEntity.yHeadRotO = oldPrevYawHead; + livingEntity.yHeadRot = oldYawHead; + transform.popPose(); + + RenderSystem.disableScissor(); + } + + private static double[] getGLTranslation(PoseStack transform, double scale) { + final Matrix4f matrix = transform.last().pose(); + final FloatBuffer buf = BufferUtils.createFloatBuffer(16); + matrix.store(buf); + return new double[] { + buf.get(getIndexFloatBuffer(0, 3)) * scale, + buf.get(getIndexFloatBuffer(1, 3)) * scale, + buf.get(getIndexFloatBuffer(2, 3)) * scale + }; + } + + @SuppressWarnings("SameParameterValue") + private static int getIndexFloatBuffer(int x, int y) { + return y * 4 + x; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/package-info.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/package-info.java new file mode 100644 index 00000000..30c2ad40 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/compat/jei/package-info.java @@ -0,0 +1,8 @@ + + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package com.hexagram2021.emeraldcraft.common.crafting.compat.jei; + +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/menu/CarpentryTableMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/CarpentryTableMenu.java new file mode 100644 index 00000000..ebde1c26 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/CarpentryTableMenu.java @@ -0,0 +1,234 @@ +package com.hexagram2021.emeraldcraft.common.crafting.menu; + +import com.google.common.collect.Lists; +import com.hexagram2021.emeraldcraft.common.crafting.CarpentryTableRecipe; +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 org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class CarpentryTableMenu extends AbstractContainerMenu { + public static final int INPUT_SLOT = 0; + public static final int RESULT_SLOT = 1; + public 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(@NotNull ItemStack itemStack) { + return false; + } + + @Override + public void onTake(@NotNull Player player, @NotNull 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 (l - CarpentryTableMenu.this.lastSoundTime > 20) { + 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(@NotNull Player player) { + return stillValid(this.access, player, ECBlocks.WorkStation.CARPENTRY_TABLE.get()); + } + + @Override + public boolean clickMenuButton(@NotNull 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(@NotNull 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.get(), 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 @NotNull + public MenuType getType() { + return ECContainerTypes.CARPENTRY_TABLE_MENU.get(); + } + + public void registerUpdateListener(Runnable listener) { + this.slotUpdateListener = listener; + } + + @Override + public boolean canTakeItemForPickAll(@NotNull ItemStack itemStack, Slot slot) { + return slot.container != this.resultContainer && super.canTakeItemForPickAll(itemStack, slot); + } + + @Override @NotNull + public ItemStack quickMoveStack(@NotNull Player player, int index) { + ItemStack itemstack = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + if (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, 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 (this.level.getRecipeManager() + .getRecipeFor(ECRecipes.CARPENTRY_TABLE_TYPE.get(), 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(@NotNull 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/menu/ContinuousMinerMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/ContinuousMinerMenu.java new file mode 100644 index 00000000..f09c1e1b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/ContinuousMinerMenu.java @@ -0,0 +1,139 @@ +package com.hexagram2021.emeraldcraft.common.crafting.menu; + +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.ItemStack; +import net.minecraft.world.item.Items; +import org.jetbrains.annotations.NotNull; + +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; + 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.inputSlot = this.addSlot(new Slot(container, INPUT_SLOT, 43, 19) { + @Override + public boolean mayPlace(@NotNull 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(@NotNull 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(@NotNull Player player) { + return this.continuousMiner.stillValid(player); + } + + @Override @NotNull + public MenuType getType() { + return ECContainerTypes.CONTINUOUS_MINER_MENU.get(); + } + + @Override @NotNull + public ItemStack quickMoveStack(@NotNull 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(this.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(this.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/menu/GlassKilnMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/GlassKilnMenu.java new file mode 100644 index 00000000..ce63f248 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/GlassKilnMenu.java @@ -0,0 +1,250 @@ +package com.hexagram2021.emeraldcraft.common.crafting.menu; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.GlassKilnBlockEntity; +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.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; +import org.jetbrains.annotations.NotNull; + +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; + public 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 GlassKilnMenu.GlassKilnResultSlot(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 @NotNull + public ItemStack quickMoveStack(@NotNull 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.get(), new SimpleContainer(itemStack), this.level).isPresent(); + } + + public boolean isFuel(ItemStack itemStack) { + return ForgeHooks.getBurnTime(itemStack, ECRecipes.GLASS_KILN_TYPE.get()) > 0; + } + + @Override + public boolean stillValid(@NotNull Player player) { + return this.container.stillValid(player); + } + + @Override + public void fillCraftSlotsStackedContents(@NotNull 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 @NotNull + public RecipeBookType getRecipeBookType() { + return ECRecipes.GLASS_KILN; + } + + @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(@NotNull ItemStack itemStack) { + return this.menu.isFuel(itemStack); + } + + public int getMaxStackSize(@NotNull ItemStack itemStack) { + return super.getMaxStackSize(itemStack); + } + } + + static class GlassKilnResultSlot extends Slot { + private final Player player; + private int removeCount; + + public GlassKilnResultSlot(Player player, Container container, int slot, int x, int y) { + super(container, slot, x, y); + this.player = player; + } + + public boolean mayPlace(@NotNull ItemStack itemStack) { + return false; + } + + @NotNull + public ItemStack remove(int count) { + if (this.hasItem()) { + this.removeCount += Math.min(count, this.getItem().getCount()); + } + + return super.remove(count); + } + + public void onTake(@NotNull Player player, @NotNull ItemStack itemStack) { + this.checkTakeAchievements(itemStack); + super.onTake(player, itemStack); + } + + protected void onQuickCraft(@NotNull ItemStack itemStack, int count) { + this.removeCount += count; + this.checkTakeAchievements(itemStack); + } + + protected void checkTakeAchievements(ItemStack itemStack) { + itemStack.onCraftedBy(this.player.level, this.player, this.removeCount); + if (this.player instanceof ServerPlayer && this.container instanceof GlassKilnBlockEntity) { + ((GlassKilnBlockEntity)this.container).awardUsedRecipesAndPopExperience((ServerPlayer)this.player); + } + + this.removeCount = 0; + net.minecraftforge.event.ForgeEventFactory.firePlayerSmeltedEvent(this.player, itemStack); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/IceMakerMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/IceMakerMenu.java new file mode 100644 index 00000000..db0ab104 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/IceMakerMenu.java @@ -0,0 +1,227 @@ +package com.hexagram2021.emeraldcraft.common.crafting.menu; + +import com.hexagram2021.emeraldcraft.api.fluid.FluidType; +import com.hexagram2021.emeraldcraft.api.fluid.FluidTypes; +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.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 org.jetbrains.annotations.NotNull; + +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; + + 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.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(@NotNull 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(@NotNull 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(@NotNull 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()) || + FluidTypes.isExtraFluidBucket(itemStack); + } + + @Override + public boolean stillValid(@NotNull Player player) { + return this.iceMaker.stillValid(player); + } + + @Override @NotNull + public ItemStack quickMoveStack(@NotNull 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 (this.condensateSlot.mayPlace(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, CONDENSATE_SLOT, RESULT_SLOT, false)) { + return ItemStack.EMPTY; + } + } else if (this.ingredientInputSlot.mayPlace(itemstack1)) { + if (!this.moveItemStackTo(itemstack1, INGREDIENT_INPUT_SLOT, INGREDIENT_OUTPUT_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 FluidTypes.getFluidTypeWithID(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(@NotNull ItemStack itemStack) { + return false; + } + + @Override @NotNull + public ItemStack remove(int count) { + if (this.hasItem()) { + this.removeCount += Math.min(count, this.getItem().getCount()); + } + + return super.remove(count); + } + + @Override + public void onTake(@NotNull Player player, @NotNull ItemStack itemStack) { + this.checkTakeAchievements(itemStack); + super.onTake(player, itemStack); + } + + @Override + protected void onQuickCraft(@NotNull 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.event.ForgeEventFactory.firePlayerSmeltedEvent(this.player, itemStack); + } + + @Override + public int getMaxStackSize() { + return 64; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/MelterMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/MelterMenu.java new file mode 100644 index 00000000..ae2d740b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/MelterMenu.java @@ -0,0 +1,225 @@ +package com.hexagram2021.emeraldcraft.common.crafting.menu; + +import com.hexagram2021.emeraldcraft.api.fluid.FluidType; +import com.hexagram2021.emeraldcraft.api.fluid.FluidTypes; +import com.hexagram2021.emeraldcraft.common.crafting.MelterRecipe; +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 org.jetbrains.annotations.NotNull; + +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(@NotNull 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(@NotNull 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()) || + FluidTypes.isExtraFluidBucket(itemStack); + } + + public boolean isLit() { + return this.melterData.get(0) > 0; + } + + @Override + public boolean stillValid(@NotNull Player player) { + return this.melter.stillValid(player); + } + + @Override @NotNull + public ItemStack quickMoveStack(@NotNull 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 FluidTypes.getFluidTypeWithID(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(@NotNull ItemStack itemStack) { + return menu.level.getRecipeManager().getRecipeFor(ECRecipes.MELTER_TYPE.get(), 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(@NotNull ItemStack itemStack) { + return isFuel(itemStack); + } + + public int getMaxStackSize(@NotNull ItemStack itemStack) { + return super.getMaxStackSize(itemStack); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/MineralTableMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/MineralTableMenu.java new file mode 100644 index 00000000..fa56e0b3 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/MineralTableMenu.java @@ -0,0 +1,219 @@ +package com.hexagram2021.emeraldcraft.common.crafting.menu; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.MineralTableBlockEntity; +import com.hexagram2021.emeraldcraft.common.crafting.MineralTableRecipe; +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; +import org.jetbrains.annotations.NotNull; + +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(@NotNull Player player) { + return this.mineralTable.stillValid(player); + } + + @Override @NotNull + public ItemStack quickMoveStack(@NotNull 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.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(@NotNull 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(@NotNull ItemStack itemStack) { + return this.menu.level.getRecipeManager().getRecipeFor(ECRecipes.MINERAL_TABLE_TYPE.get(), 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(@NotNull ItemStack itemStack) { + return false; + } + + @Override @NotNull + public ItemStack remove(int count) { + if (this.hasItem()) { + this.removeCount += Math.min(count, this.getItem().getCount()); + } + + return super.remove(count); + } + + @Override + public void onTake(@NotNull Player player, @NotNull ItemStack itemStack) { + this.checkTakeAchievements(itemStack); + super.onTake(player, itemStack); + } + + @Override + protected void onQuickCraft(@NotNull 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.event.ForgeEventFactory.firePlayerSmeltedEvent(this.player, itemStack); + } + + @Override + public int getMaxStackSize() { + return 64; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/PiglinCuteyMerchantMenu.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/PiglinCuteyMerchantMenu.java new file mode 100644 index 00000000..6deab773 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/menu/PiglinCuteyMerchantMenu.java @@ -0,0 +1,247 @@ +package com.hexagram2021.emeraldcraft.common.crafting.menu; + +import com.hexagram2021.emeraldcraft.common.register.ECContainerTypes; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.Container; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.npc.ClientSideMerchant; +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.trading.Merchant; +import net.minecraft.world.item.trading.MerchantOffers; +import org.jetbrains.annotations.NotNull; + +public class PiglinCuteyMerchantMenu extends AbstractContainerMenu { + protected static final int PAYMENT1_SLOT = 0; + protected static final int PAYMENT2_SLOT = 1; + protected 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; + private static final int SELL_SLOT1_X = 136; + private static final int SELL_SLOT2_X = 162; + private static final int BUY_SLOT_X = 220; + private static final int ROW_Y = 37; + private final Merchant trader; + private final MerchantContainer tradeContainer; + private int merchantLevel; + private boolean showProgressBar; + private boolean canRestock; + + public PiglinCuteyMerchantMenu(int id, Inventory inventory) { + this(id, inventory, new ClientSideMerchant(inventory.player)); + } + + public PiglinCuteyMerchantMenu(int id, Inventory inventory, Merchant merchant) { + super(ECContainerTypes.PIGLIN_CUTEY_MERCHANT_MENU.get(), id); + this.trader = merchant; + this.tradeContainer = new MerchantContainer(merchant); + this.addSlot(new Slot(this.tradeContainer, PAYMENT1_SLOT, SELL_SLOT1_X, ROW_Y)); + this.addSlot(new Slot(this.tradeContainer, PAYMENT2_SLOT, SELL_SLOT2_X, ROW_Y)); + this.addSlot(new MerchantResultSlot(inventory.player, merchant, this.tradeContainer, RESULT_SLOT, BUY_SLOT_X, ROW_Y)); + + for(int i = 0; i < 3; ++i) { + for(int j = 0; j < 9; ++j) { + this.addSlot(new Slot(inventory, j + i * 9 + 9, 108 + j * 18, 84 + i * 18)); + } + } + + for(int k = 0; k < 9; ++k) { + this.addSlot(new Slot(inventory, k, 108 + k * 18, 142)); + } + + } + + public void setShowProgressBar(boolean showProgressBar) { + this.showProgressBar = showProgressBar; + } + + @Override + public void slotsChanged(@NotNull Container container) { + this.tradeContainer.updateSellItem(); + super.slotsChanged(container); + } + + public void setSelectionHint(int selectionHint) { + this.tradeContainer.setSelectionHint(selectionHint); + } + + @Override + public boolean stillValid(@NotNull Player player) { + return this.trader.getTradingPlayer() == player; + } + + public int getTraderXp() { + return this.trader.getVillagerXp(); + } + + public int getFutureTraderXp() { + return this.tradeContainer.getFutureXp(); + } + + public void setXp(int xp) { + this.trader.overrideXp(xp); + } + + public int getTraderLevel() { + return this.merchantLevel; + } + + public void setMerchantLevel(int level) { + this.merchantLevel = level; + } + + public void setCanRestock(boolean canRestock) { + this.canRestock = canRestock; + } + + public boolean canRestock() { + return this.canRestock; + } + + @Override + public boolean canTakeItemForPickAll(@NotNull ItemStack itemStack, @NotNull Slot slot) { + return false; + } + + @Override @NotNull + public ItemStack quickMoveStack(@NotNull 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); + this.playTradeSound(); + } else if (index != PAYMENT1_SLOT && index != PAYMENT2_SLOT) { + 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; + } + + private void playTradeSound() { + if (!this.trader.isClientSide()) { + Entity entity = (Entity)this.trader; + entity.getLevel().playLocalSound(entity.getX(), entity.getY(), entity.getZ(), this.trader.getNotifyTradeSound(), SoundSource.NEUTRAL, 1.0F, 1.0F, false); + } + + } + + @Override + public void removed(@NotNull Player player) { + super.removed(player); + this.trader.setTradingPlayer(null); + if (!this.trader.isClientSide()) { + if (!player.isAlive() || player instanceof ServerPlayer && ((ServerPlayer)player).hasDisconnected()) { + ItemStack itemstack = this.tradeContainer.removeItemNoUpdate(PAYMENT1_SLOT); + if (!itemstack.isEmpty()) { + player.drop(itemstack, false); + } + + itemstack = this.tradeContainer.removeItemNoUpdate(PAYMENT2_SLOT); + if (!itemstack.isEmpty()) { + player.drop(itemstack, false); + } + } else if (player instanceof ServerPlayer) { + player.getInventory().placeItemBackInInventory(this.tradeContainer.removeItemNoUpdate(PAYMENT1_SLOT)); + player.getInventory().placeItemBackInInventory(this.tradeContainer.removeItemNoUpdate(PAYMENT2_SLOT)); + } + + } + } + + public void tryMoveItems(int index) { + if (this.getOffers().size() > index) { + ItemStack itemstack = this.tradeContainer.getItem(PAYMENT1_SLOT); + if (!itemstack.isEmpty()) { + if (!this.moveItemStackTo(itemstack, INV_SLOT_START, USE_ROW_SLOT_END, true)) { + return; + } + + this.tradeContainer.setItem(PAYMENT1_SLOT, itemstack); + } + + ItemStack itemstack1 = this.tradeContainer.getItem(PAYMENT2_SLOT); + if (!itemstack1.isEmpty()) { + if (!this.moveItemStackTo(itemstack1, INV_SLOT_START, USE_ROW_SLOT_END, true)) { + return; + } + + this.tradeContainer.setItem(PAYMENT2_SLOT, itemstack1); + } + + if (this.tradeContainer.getItem(PAYMENT1_SLOT).isEmpty() && this.tradeContainer.getItem(PAYMENT2_SLOT).isEmpty()) { + ItemStack itemstack2 = this.getOffers().get(index).getCostA(); + this.moveFromInventoryToPaymentSlot(PAYMENT1_SLOT, itemstack2); + ItemStack itemstack3 = this.getOffers().get(index).getCostB(); + this.moveFromInventoryToPaymentSlot(PAYMENT2_SLOT, itemstack3); + } + + } + } + + private void moveFromInventoryToPaymentSlot(int index, ItemStack itemStack) { + if (!itemStack.isEmpty()) { + for(int i = INV_SLOT_START; i < USE_ROW_SLOT_END; ++i) { + ItemStack itemstack = this.slots.get(i).getItem(); + if (!itemstack.isEmpty() && ItemStack.isSameItemSameTags(itemStack, itemstack)) { + ItemStack itemstack1 = this.tradeContainer.getItem(index); + int j = itemstack1.isEmpty() ? 0 : itemstack1.getCount(); + int k = Math.min(itemStack.getMaxStackSize() - j, itemstack.getCount()); + ItemStack itemstack2 = itemstack.copy(); + int l = j + k; + itemstack.shrink(k); + itemstack2.setCount(l); + this.tradeContainer.setItem(index, itemstack2); + if (l >= itemStack.getMaxStackSize()) { + break; + } + } + } + } + + } + + public void setOffers(MerchantOffers offers) { + this.trader.overrideOffers(offers); + } + + public MerchantOffers getOffers() { + return this.trader.getOffers(); + } + + public boolean showProgressBar() { + return this.showProgressBar; + } +} 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..9801cd2d --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/recipebook/GlassKilnRecipeBookComponent.java @@ -0,0 +1,83 @@ +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.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 org.jetbrains.annotations.NotNull; + +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 = Component.translatable("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 slot) { + super.slotClicked(slot); + if (slot != null && slot.index < this.menu.getSize()) { + this.ghostRecipe.clear(); + } + } + + @Override + public void setupGhostRecipe(Recipe recipe, List slots) { + ItemStack itemstack = recipe.getResultItem(); + this.ghostRecipe.setRecipe(recipe); + this.ghostRecipe.addIngredient(Ingredient.of(itemstack), (slots.get(2)).x, (slots.get(2)).y); + NonNullList ingredients = recipe.getIngredients(); + Slot slot = slots.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 = slots.get(i); + this.ghostRecipe.addIngredient(ingredient, slot1.x, slot1.y); + } + } + + } + + + @Override @NotNull + protected Component getRecipeFilterName() { + return FILTER_NAME; + } + + @SuppressWarnings("deprecation") + protected Set getFuelItems() { + return AbstractFurnaceBlockEntity.getFuel().keySet(); + } +} 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..02ad0bd9 --- /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 org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +public class CarpentryTableRecipeSerializer implements RecipeSerializer{ + private final CarpentryTableRecipeSerializer.Creator factory; + + public CarpentryTableRecipeSerializer(CarpentryTableRecipeSerializer.Creator creator) { + this.factory = creator; + } + + @SuppressWarnings("deprecation") + @Override @NotNull + public T fromJson(@NotNull ResourceLocation id, @NotNull 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); + } + + @Override @Nullable + public T fromNetwork(@NotNull ResourceLocation id, FriendlyByteBuf buf) { + String group = buf.readUtf(); + Ingredient ingredient = Ingredient.fromNetwork(buf); + ItemStack itemstack = buf.readItem(); + return this.factory.create(id, group, 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..9f53912e --- /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 org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +public class GlassKilnRecipeSerializer implements RecipeSerializer { + private final int defaultCookingTime; + private final GlassKilnRecipeSerializer.Creator factory; + + public GlassKilnRecipeSerializer(GlassKilnRecipeSerializer.Creator creator, int cookingTime) { + this.defaultCookingTime = cookingTime; + this.factory = creator; + } + + @SuppressWarnings("deprecation") + @Override @NotNull + public T fromJson(@NotNull ResourceLocation id, @NotNull 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); + } + + @Override @Nullable + public T fromNetwork(@NotNull ResourceLocation id, FriendlyByteBuf buf) { + String group = buf.readUtf(); + Ingredient ingredient = Ingredient.fromNetwork(buf); + ItemStack itemstack = buf.readItem(); + float xp = buf.readFloat(); + int time = buf.readVarInt(); + return this.factory.create(id, group, ingredient, itemstack, xp, time); + } + + @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..279b57c0 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/IceMakerRecipeSerializer.java @@ -0,0 +1,82 @@ +package com.hexagram2021.emeraldcraft.common.crafting.serializer; + +import com.google.gson.JsonObject; +import com.hexagram2021.emeraldcraft.api.fluid.FluidType; +import com.hexagram2021.emeraldcraft.api.fluid.FluidTypes; +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 org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +public class IceMakerRecipeSerializer implements RecipeSerializer { + private final int defaultFreezingTime; + private final IceMakerRecipeSerializer.Creator factory; + + public IceMakerRecipeSerializer(IceMakerRecipeSerializer.Creator creator, int freezingTime) { + this.defaultFreezingTime = freezingTime; + this.factory = creator; + } + + @SuppressWarnings("deprecation") + @Override @NotNull + public T fromJson(@NotNull ResourceLocation id, @NotNull 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 = FluidTypes.getFluidTypeFromName(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); + } + + @Override @Nullable + public T fromNetwork(@NotNull ResourceLocation id, FriendlyByteBuf buf) { + String group = buf.readUtf(); + FluidType fluidType = FluidTypes.getFluidTypeFromName(buf.readUtf()); + int fluidAmount = buf.readVarInt(); + ItemStack result = buf.readItem(); + int time = buf.readVarInt(); + return this.factory.create(id, group, fluidType, fluidAmount, result, time); + } + + @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..715aa195 --- /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.api.fluid.FluidType; +import com.hexagram2021.emeraldcraft.api.fluid.FluidTypes; +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 org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +public class MelterRecipeSerializer 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 @NotNull + public T fromJson(@NotNull ResourceLocation id, @NotNull 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 = FluidTypes.getFluidTypeFromName(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); + } + + @Override @Nullable + public T fromNetwork(@NotNull ResourceLocation id, FriendlyByteBuf buf) { + String group = buf.readUtf(); + Ingredient ingredient = Ingredient.fromNetwork(buf); + FluidType fluidType = FluidTypes.getFluidTypeFromName(buf.readUtf()); + int fluidAmount = buf.readVarInt(); + int time = buf.readVarInt(); + return this.factory.create(id, group, ingredient, fluidType, fluidAmount, time); + } + + @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..38327031 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/MineralTableRecipeSerializer.java @@ -0,0 +1,77 @@ +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 org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +public class MineralTableRecipeSerializer implements RecipeSerializer { + private final int defaultCookingTime; + private final MineralTableRecipeSerializer.Creator factory; + + public MineralTableRecipeSerializer(MineralTableRecipeSerializer.Creator creator, int cookingTime) { + this.defaultCookingTime = cookingTime; + this.factory = creator; + } + + @SuppressWarnings("deprecation") + @Override @NotNull + public T fromJson(@NotNull ResourceLocation id, @NotNull 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(@NotNull ResourceLocation id, FriendlyByteBuf buf) { + String group = buf.readUtf(); + Ingredient ingredient = Ingredient.fromNetwork(buf); + ItemStack itemstack = buf.readItem(); + float xp = buf.readFloat(); + int time = buf.readVarInt(); + return this.factory.create(id, group, ingredient, itemstack, xp, time); + } + + @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/TradeShadowRecipeSerializer.java b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/TradeShadowRecipeSerializer.java new file mode 100644 index 00000000..036ba334 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/crafting/serializer/TradeShadowRecipeSerializer.java @@ -0,0 +1,72 @@ +package com.hexagram2021.emeraldcraft.common.crafting.serializer; + +import com.google.gson.JsonObject; +import com.hexagram2021.emeraldcraft.common.crafting.TradeShadowRecipe; +import net.minecraft.core.Registry; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.npc.VillagerProfession; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.RecipeSerializer; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +import static com.hexagram2021.emeraldcraft.common.util.RegistryHelper.getRegistryName; + +public class TradeShadowRecipeSerializer implements RecipeSerializer { + private final TradeShadowRecipeSerializer.Creator factory; + + public TradeShadowRecipeSerializer(TradeShadowRecipeSerializer.Creator creator) { + this.factory = creator; + } + + @Deprecated + @Override @NotNull + public T fromJson(@NotNull ResourceLocation id, @NotNull JsonObject json) { + JsonObject costAObject = GsonHelper.getAsJsonObject(json, "costA"); + ItemStack costA = new ItemStack(Registry.ITEM.get(new ResourceLocation(GsonHelper.getAsString(costAObject, "item"))), GsonHelper.getAsInt(costAObject, "count")); + JsonObject costBObject = GsonHelper.getAsJsonObject(json, "costB"); + ItemStack costB = new ItemStack(Registry.ITEM.get(new ResourceLocation(GsonHelper.getAsString(costBObject, "item"))), GsonHelper.getAsInt(costBObject, "count")); + JsonObject resultObject = GsonHelper.getAsJsonObject(json, "result"); + ItemStack result = new ItemStack(Registry.ITEM.get(new ResourceLocation(GsonHelper.getAsString(resultObject, "item"))), GsonHelper.getAsInt(resultObject, "count")); + EntityType entityType = Registry.ENTITY_TYPE.get(new ResourceLocation(GsonHelper.getAsString(json, "entityType"))); + VillagerProfession profession = Registry.VILLAGER_PROFESSION.get(new ResourceLocation(GsonHelper.getAsString(json, "profession"))); + int villagerLevel = GsonHelper.getAsInt(json, "villagerLevel"); + int xp = GsonHelper.getAsInt(json, "xp"); + + return this.factory.create(id, costA, costB, result, entityType, profession, villagerLevel, xp); + } + + @SuppressWarnings("deprecation") + @Override @Nullable + public T fromNetwork(@NotNull ResourceLocation id, @NotNull FriendlyByteBuf buf) { + ItemStack costA = buf.readItem(); + ItemStack costB = buf.readItem(); + ItemStack result = buf.readItem(); + EntityType entityType = Registry.ENTITY_TYPE.get(buf.readResourceLocation()); + VillagerProfession profession = Registry.VILLAGER_PROFESSION.get(buf.readResourceLocation()); + int villagerLevel = buf.readInt(); + int xp = buf.readInt(); + + return this.factory.create(id, costA, costB, result, entityType, profession, villagerLevel, xp); + } + + @Override + public void toNetwork(@NotNull FriendlyByteBuf buf, @NotNull T recipe) { + buf.writeItem(recipe.getCostA()); + buf.writeItem(recipe.getCostB()); + buf.writeItem(recipe.getResultItem()); + buf.writeResourceLocation(getRegistryName(recipe.getEntityType())); + buf.writeResourceLocation(getRegistryName(recipe.getProfession())); + buf.writeInt(recipe.getVillagerLevel()); + buf.writeInt(recipe.getXp()); + } + + + public interface Creator { + T create(ResourceLocation id, ItemStack costA, ItemStack costB, ItemStack result, EntityType entityType, VillagerProfession profession, int villagerLevel, int xp); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/dispenser/ECBoatDispenseItemBehaviour.java b/src/main/java/com/hexagram2021/emeraldcraft/common/dispenser/ECBoatDispenseItemBehaviour.java new file mode 100644 index 00000000..47d93625 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/dispenser/ECBoatDispenseItemBehaviour.java @@ -0,0 +1,67 @@ +package com.hexagram2021.emeraldcraft.common.dispenser; + +import com.hexagram2021.emeraldcraft.common.entities.ECBoat; +import com.hexagram2021.emeraldcraft.common.entities.ECChestBoat; +import com.hexagram2021.emeraldcraft.common.entities.IECBoat; +import net.minecraft.core.BlockPos; +import net.minecraft.core.BlockSource; +import net.minecraft.core.Direction; +import net.minecraft.core.dispenser.DefaultDispenseItemBehavior; +import net.minecraft.tags.FluidTags; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.DispenserBlock; +import org.jetbrains.annotations.NotNull; + +public class ECBoatDispenseItemBehaviour extends DefaultDispenseItemBehavior { + private final DefaultDispenseItemBehavior defaultDispenseItemBehavior = new DefaultDispenseItemBehavior(); + private final ECBoat.ECBoatType type; + private final boolean isChestBoat; + + @SuppressWarnings("unused") + public ECBoatDispenseItemBehaviour(ECBoat.ECBoatType type) { + this(type, false); + } + + public ECBoatDispenseItemBehaviour(ECBoat.ECBoatType type, boolean withChest) { + this.type = type; + this.isChestBoat = withChest; + } + + @Override @NotNull + public ItemStack execute(BlockSource block, @NotNull ItemStack itemStack) { + Direction direction = block.getBlockState().getValue(DispenserBlock.FACING); + Level level = block.getLevel(); + double d0 = block.x() + (double)((float)direction.getStepX() * 1.125F); + double d1 = block.y() + (double)((float)direction.getStepY() * 1.125F); + double d2 = block.z() + (double)((float)direction.getStepZ() * 1.125F); + BlockPos blockpos = block.getPos().relative(direction); + + IECBoat boat = isChestBoat ? new ECChestBoat(level, d0, d1, d2) : new ECBoat(level, d0, d1, d2); + boat.setECBoatType(this.type); + Entity boatEntity = (Entity)boat; + boatEntity.setYRot(direction.toYRot()); + + double d3; + if (level.getFluidState(blockpos).is(FluidTags.WATER)) { + d3 = 1.0D; + } else { + if (!level.getBlockState(blockpos).isAir() || !level.getFluidState(blockpos.below()).is(FluidTags.WATER)) { + return this.defaultDispenseItemBehavior.dispense(block, itemStack); + } + + d3 = 0.0D; + } + + boatEntity.setPos(d0, d1 + d3, d2); + level.addFreshEntity(boatEntity); + itemStack.shrink(1); + return itemStack; + } + + @Override + protected void playSound(BlockSource block) { + block.getLevel().levelEvent(1000, block.getPos(), 0); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/ECBoat.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/ECBoat.java new file mode 100644 index 00000000..875347b9 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/ECBoat.java @@ -0,0 +1,169 @@ +package com.hexagram2021.emeraldcraft.common.entities; + +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECEntities; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientboundAddEntityPacket; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.tags.FluidTags; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import org.jetbrains.annotations.NotNull; + +import java.util.Arrays; + +public class ECBoat extends Boat implements IECBoat { + public static final EntityDataAccessor DATA_ID_ECTYPE = SynchedEntityData.defineId(ECBoat.class, EntityDataSerializers.INT); + + public ECBoat(EntityType type, Level level) { + super(type, level); + this.blocksBuilding = true; + } + + public ECBoat(Level level, double x, double y, double z) { + this(ECEntities.BOAT, level); + this.setPos(x, y, z); + this.xo = x; + this.yo = y; + this.zo = z; + } + + @Override + protected void defineSynchedData() { + super.defineSynchedData(); + this.entityData.define(DATA_ID_ECTYPE, ECBoatType.GINKGO.ordinal()); + } + + @Override @NotNull + public Packet getAddEntityPacket() { + return new ClientboundAddEntityPacket(this); + } + + @Override + protected void addAdditionalSaveData(CompoundTag nbt) { + nbt.putString("Type", this.getECBoatType().getName()); + } + + @Override + protected void readAdditionalSaveData(CompoundTag nbt) { + if (nbt.contains("Type", Tag.TAG_STRING)) { + this.entityData.set(DATA_ID_ECTYPE, ECBoat.ECBoatType.byName(nbt.getString("Type")).ordinal()); + } + } + + @Override + protected void checkFallDamage(double y, boolean onGround, @NotNull BlockState state, @NotNull BlockPos pos) { + this.lastYd = this.getDeltaMovement().y; + if (!this.isPassenger()) { + if (onGround) { + if (this.fallDistance > 3.0F) { + if (this.status != Status.ON_LAND) { + this.resetFallDistance(); + return; + } + + this.causeFallDamage(this.fallDistance, 1.0F, DamageSource.FALL); + if (!this.level.isClientSide && !this.isRemoved()) { + this.kill(); + if (this.level.getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) { + int j; + for(j = 0; j < 3; ++j) { + this.spawnAtLocation(this.getECBoatType().getPlanks()); + } + + for(j = 0; j < 2; ++j) { + this.spawnAtLocation(Items.STICK); + } + } + } + } + + this.resetFallDistance(); + } else if (!this.level.getFluidState(this.blockPosition().below()).is(FluidTags.WATER) && y < 0.0) { + this.fallDistance = (float)((double)this.fallDistance - y); + } + } + + } + + @Override @NotNull + public Item getDropItem() { + return switch (ECBoatType.byId(this.entityData.get(DATA_ID_ECTYPE))) { + case GINKGO -> ECItems.GINKGO_BOAT.get(); + case PALM -> ECItems.PALM_BOAT.get(); + case PEACH -> ECItems.PEACH_BOAT.get(); + }; + } + + @Override + public void setECBoatType(ECBoatType type) { + this.entityData.set(DATA_ID_ECTYPE, type.ordinal()); + } + + @Override + public ECBoatType getECBoatType() { + return ECBoatType.byId(this.entityData.get(DATA_ID_ECTYPE)); + } + + /** @deprecated */ + @Deprecated + @Override + public void setType(@NotNull Boat.Type vanillaType) { + } + + /** @deprecated */ + @Deprecated + @Override @NotNull + public Boat.Type getBoatType() { + return Type.OAK; + } + + public enum ECBoatType { + GINKGO("ginkgo", ECBlocks.Plant.GINKGO_PLANKS.get()), + PALM("palm", ECBlocks.Plant.PALM_PLANKS.get()), + PEACH("peach", ECBlocks.Plant.PEACH_PLANKS.get()); + + private final String name; + private final Block planks; + + ECBoatType(String name, Block planks) { + this.name = name; + this.planks = planks; + } + + public String getName() { + return this.name; + } + + public Block getPlanks() { + return this.planks; + } + + public String toString() { + return this.name; + } + + public static ECBoatType byId(int id) { + ECBoatType[] type = values(); + return type[id >= 0 && id < type.length ? id : 0]; + } + + public static ECBoatType byName(String aName) { + ECBoatType[] types = values(); + return Arrays.stream(types).filter((t) -> t.getName().equals(aName)).findFirst().orElse(types[0]); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/ECChestBoat.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/ECChestBoat.java new file mode 100644 index 00000000..836fe94c --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/ECChestBoat.java @@ -0,0 +1,131 @@ +package com.hexagram2021.emeraldcraft.common.entities; + +import com.hexagram2021.emeraldcraft.common.register.ECEntities; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientboundAddEntityPacket; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.tags.FluidTags; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.vehicle.Boat; +import net.minecraft.world.entity.vehicle.ChestBoat; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.GameRules; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import org.jetbrains.annotations.NotNull; + +public class ECChestBoat extends ChestBoat implements IECBoat { + public static final EntityDataAccessor DATA_ID_ECTYPE = SynchedEntityData.defineId(ECChestBoat.class, EntityDataSerializers.INT); + + public ECChestBoat(EntityType type, Level level) { + super(type, level); + } + + public ECChestBoat(Level level, double x, double y, double z) { + this(ECEntities.CHEST_BOAT, level); + this.setPos(x, y, z); + this.xo = x; + this.yo = y; + this.zo = z; + } + + @Override + protected void defineSynchedData() { + super.defineSynchedData(); + this.entityData.define(DATA_ID_ECTYPE, ECBoat.ECBoatType.GINKGO.ordinal()); + } + + @Override @NotNull + public Packet getAddEntityPacket() { + return new ClientboundAddEntityPacket(this); + } + + @Override + protected void addAdditionalSaveData(CompoundTag nbt) { + nbt.putString("Type", this.getECBoatType().getName()); + this.addChestVehicleSaveData(nbt); + } + + @Override + protected void readAdditionalSaveData(CompoundTag nbt) { + if (nbt.contains("Type", Tag.TAG_STRING)) { + this.entityData.set(DATA_ID_ECTYPE, ECBoat.ECBoatType.byName(nbt.getString("Type")).ordinal()); + } + this.readChestVehicleSaveData(nbt); + } + + @Override + protected void checkFallDamage(double y, boolean onGround, @NotNull BlockState state, @NotNull BlockPos pos) { + this.lastYd = this.getDeltaMovement().y; + if (!this.isPassenger()) { + if (onGround) { + if (this.fallDistance > 3.0F) { + if (this.status != Status.ON_LAND) { + this.resetFallDistance(); + return; + } + + this.causeFallDamage(this.fallDistance, 1.0F, DamageSource.FALL); + if (!this.level.isClientSide && !this.isRemoved()) { + this.kill(); + if (this.level.getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) { + int j; + for(j = 0; j < 3; ++j) { + this.spawnAtLocation(this.getECBoatType().getPlanks()); + } + + for(j = 0; j < 2; ++j) { + this.spawnAtLocation(Items.STICK); + } + } + } + } + + this.resetFallDistance(); + } else if (!this.level.getFluidState(this.blockPosition().below()).is(FluidTags.WATER) && y < 0.0) { + this.fallDistance = (float)((double)this.fallDistance - y); + } + } + } + + @Override @NotNull + public Item getDropItem() { + return switch (ECBoat.ECBoatType.byId(this.entityData.get(DATA_ID_ECTYPE))) { + case GINKGO -> ECItems.GINKGO_CHEST_BOAT.get(); + case PALM -> ECItems.PALM_CHEST_BOAT.get(); + case PEACH -> ECItems.PEACH_CHEST_BOAT.get(); + }; + } + + @Override + public void setECBoatType(ECBoat.ECBoatType type) { + this.entityData.set(DATA_ID_ECTYPE, type.ordinal()); + } + + @Override + public ECBoat.ECBoatType getECBoatType() { + return ECBoat.ECBoatType.byId(this.entityData.get(DATA_ID_ECTYPE)); + } + + /** @deprecated */ + @Deprecated + @Override + public void setType(@NotNull Boat.Type vanillaType) { + } + + /** @deprecated */ + @Deprecated + @Override + @NotNull + public Boat.Type getBoatType() { + return Type.OAK; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/IECBoat.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/IECBoat.java new file mode 100644 index 00000000..a4dd827e --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/IECBoat.java @@ -0,0 +1,6 @@ +package com.hexagram2021.emeraldcraft.common.entities; + +public interface IECBoat { + void setECBoatType(ECBoat.ECBoatType type); + ECBoat.ECBoatType getECBoatType(); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/ai/MantaAi.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/ai/MantaAi.java new file mode 100644 index 00000000..2abd6097 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/ai/MantaAi.java @@ -0,0 +1,78 @@ +package com.hexagram2021.emeraldcraft.common.entities.ai; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; +import com.hexagram2021.emeraldcraft.common.entities.mobs.MantaEntity; +import com.mojang.datafixers.util.Pair; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.Brain; +import net.minecraft.world.entity.ai.behavior.*; +import net.minecraft.world.entity.ai.memory.MemoryModuleType; +import net.minecraft.world.entity.schedule.Activity; +import net.minecraft.world.level.Level; + +import java.util.Optional; +import java.util.UUID; + +public class MantaAi { + public static Brain makeBrain(Brain brain) { + initCoreActivity(brain); + initIdleActivity(brain); + brain.setCoreActivities(ImmutableSet.of(Activity.CORE)); + brain.setDefaultActivity(Activity.IDLE); + brain.useDefaultActivity(); + return brain; + } + + private static void initCoreActivity(Brain brain) { + brain.addActivity(Activity.CORE, 0, ImmutableList.of( + new Swim(0.8F), + new AnimalPanic(2.5F), + new LookAtTargetSink(45, 90), + new MoveToTargetSink() + )); + } + + private static void initIdleActivity(Brain brain) { + brain.addActivityWithConditions(Activity.IDLE, ImmutableList.of( + Pair.of(0, new RunSometimes<>(new SetEntityLookTarget(entity -> true, 6.0F), UniformInt.of(30, 60))), + Pair.of(1, new StayCloseToTarget<>(MantaAi::getLikedPlayerPositionTracker, 7, 32, 1.0F)), + Pair.of(2, new RunOne<>(ImmutableList.of( + Pair.of(new FlyingRandomStroll(1.0F), 2), + Pair.of(new SetWalkTargetFromLookTarget(1.0F, 3), 2), + Pair.of(new DoNothing(30, 60), 1) + ))) + ), ImmutableSet.of()); + } + + public static void updateActivity(MantaEntity manta) { + manta.getBrain().setActiveActivityToFirstValid(ImmutableList.of(Activity.IDLE)); + } + + private static Optional getLikedPlayerPositionTracker(LivingEntity manta) { + return getLikedPlayer(manta).map(entity -> new EntityTracker(entity, true)); + } + + private static Optional getLikedPlayer(LivingEntity manta) { + Level level = manta.getLevel(); + if (!level.isClientSide() && level instanceof ServerLevel serverlevel) { + Optional optional = manta.getBrain().getMemory(MemoryModuleType.LIKED_PLAYER); + if (optional.isPresent()) { + Entity entity = serverlevel.getEntity(optional.get()); + if (entity instanceof ServerPlayer serverplayer) { + if ((serverplayer.gameMode.isSurvival() || serverplayer.gameMode.isCreative()) && serverplayer.closerThan(manta, 64.0D)) { + return Optional.of(serverplayer); + } + } + + return Optional.empty(); + } + } + + return Optional.empty(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/goals/OfferFlowerToPlayerGoal.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/goals/OfferFlowerToPlayerGoal.java new file mode 100644 index 00000000..0c35fdd0 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/goals/OfferFlowerToPlayerGoal.java @@ -0,0 +1,53 @@ +package com.hexagram2021.emeraldcraft.common.entities.goals; + +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.ai.goal.Goal; +import net.minecraft.world.entity.ai.targeting.TargetingConditions; +import net.minecraft.world.entity.animal.IronGolem; +import net.minecraft.world.entity.player.Player; + +import java.util.EnumSet; + +public class OfferFlowerToPlayerGoal extends Goal { + private static final TargetingConditions OFFER_TARGER_CONTEXT = TargetingConditions.forNonCombat().range(6.0D).selector(entity -> + entity.hasEffect(MobEffects.HERO_OF_THE_VILLAGE)); + public static final int OFFER_TICKS = 400; + private final IronGolem golem; + private Player player; + private int tick; + + public OfferFlowerToPlayerGoal(IronGolem ironGolem) { + this.golem = ironGolem; + this.setFlags(EnumSet.of(Flag.MOVE, Flag.LOOK)); + } + + public boolean canUse() { + if (!this.golem.level.isDay()) { + return false; + } + if (this.golem.getRandom().nextInt(4000) != 0) { + return false; + } + this.player = this.golem.level.getNearestPlayer(OFFER_TARGER_CONTEXT, this.golem); + return this.player != null && this.golem.closerThan(this.player, 6.0D); + } + + public boolean canContinueToUse() { + return this.tick > 0; + } + + public void start() { + this.tick = this.adjustedTickDelay(OFFER_TICKS); + this.golem.offerFlower(true); + } + + public void stop() { + this.golem.offerFlower(false); + this.player = null; + } + + public void tick() { + this.golem.getLookControl().setLookAt(this.player, 30.0F, 30.0F); + --this.tick; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/HerringEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/HerringEntity.java new file mode 100644 index 00000000..16a93d18 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/HerringEntity.java @@ -0,0 +1,42 @@ +package com.hexagram2021.emeraldcraft.common.entities.mobs; + +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.animal.AbstractSchoolingFish; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; + +public class HerringEntity extends AbstractSchoolingFish { + public HerringEntity(EntityType type, Level level) { + super(type, level); + } + + @Override @NotNull + public ItemStack getBucketItemStack() { + return new ItemStack(ECItems.HERRING_BUCKET); + } + + @Override + protected SoundEvent getAmbientSound() { + return ECSounds.HERRING_AMBIENT; + } + + @Override + protected SoundEvent getDeathSound() { + return ECSounds.HERRING_DEATH; + } + + @Override + protected SoundEvent getHurtSound(@NotNull DamageSource damageSource) { + return ECSounds.HERRING_HURT; + } + + @Override @NotNull + protected SoundEvent getFlopSound() { + return ECSounds.HERRING_FLOP; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/MantaEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/MantaEntity.java new file mode 100644 index 00000000..a8d268dc --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/MantaEntity.java @@ -0,0 +1,322 @@ +package com.hexagram2021.emeraldcraft.common.entities.mobs; + +import com.google.common.collect.ImmutableList; +import com.hexagram2021.emeraldcraft.common.entities.ai.MantaAi; +import com.hexagram2021.emeraldcraft.common.register.ECTriggers; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import com.hexagram2021.emeraldcraft.common.util.PlayerHealable; +import com.hexagram2021.emeraldcraft.common.util.Vec3Util; +import com.mojang.serialization.Dynamic; +import net.minecraft.Util; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.network.protocol.game.DebugPackets; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.Mth; +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.Brain; +import net.minecraft.world.entity.ai.attributes.AttributeSupplier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.ai.control.FlyingMoveControl; +import net.minecraft.world.entity.ai.memory.MemoryModuleType; +import net.minecraft.world.entity.ai.navigation.FlyingPathNavigation; +import net.minecraft.world.entity.ai.navigation.PathNavigation; +import net.minecraft.world.entity.ai.sensing.Sensor; +import net.minecraft.world.entity.ai.sensing.SensorType; +import net.minecraft.world.entity.monster.Phantom; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Optional; +import java.util.UUID; + +public class MantaEntity extends PathfinderMob implements PlayerRideableFlying, OwnableEntity, PlayerHealable { + protected static final ImmutableList>> SENSOR_TYPES = ImmutableList.of( + SensorType.NEAREST_LIVING_ENTITIES, + SensorType.NEAREST_PLAYERS, + SensorType.HURT_BY + ); + protected static final ImmutableList> MEMORY_TYPES = ImmutableList.of( + MemoryModuleType.PATH, + MemoryModuleType.LOOK_TARGET, + MemoryModuleType.NEAREST_VISIBLE_LIVING_ENTITIES, + MemoryModuleType.WALK_TARGET, + MemoryModuleType.CANT_REACH_WALK_TARGET_SINCE, + MemoryModuleType.HURT_BY, + MemoryModuleType.LIKED_PLAYER, + MemoryModuleType.IS_PANICKING + ); + + public MantaEntity(EntityType type, Level level) { + super(type, level); + this.moveControl = new FlyingMoveControl(this, 20, true); + } + + @Override @NotNull + protected Brain.Provider brainProvider() { + return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); + } + + @Override @NotNull + protected Brain makeBrain(@NotNull Dynamic dynamic) { + return MantaAi.makeBrain(this.brainProvider().makeBrain(dynamic)); + } + + @Override @NotNull @SuppressWarnings("unchecked") + public Brain getBrain() { + return (Brain)super.getBrain(); + } + + @SuppressWarnings("unused") + public boolean isTame() { + return this.getBrain().getMemory(MemoryModuleType.LIKED_PLAYER).isPresent(); + } + + @Override @Nullable + public UUID getOwnerUUID() { + Optional player = this.getBrain().getMemory(MemoryModuleType.LIKED_PLAYER); + return player.orElse(null); + } + + @Override @Nullable + public LivingEntity getOwner() { + try { + UUID uuid = this.getOwnerUUID(); + return uuid == null ? null : this.level.getPlayerByUUID(uuid); + } catch (IllegalArgumentException illegalargumentexception) { + return null; + } + } + + public void cureFrom(Phantom phantom, Player player) { + this.setHealedPlayer(player.getUUID()); + if (player instanceof ServerPlayer serverPlayer) { + ECTriggers.CURED_PHANTOM.trigger(serverPlayer, phantom, this); + } + } + + @Override + public void fly(int velocity) { + if(!this.isOnGround() || velocity > 12) { + Vec3 move = this.getDeltaMovement(); + this.setDeltaMovement(move.x, (velocity - 12) / 45.0D, move.z); + } + } + + public static AttributeSupplier.Builder createAttributes() { + return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 30.0D).add(Attributes.FLYING_SPEED, 0.2D).add(Attributes.MOVEMENT_SPEED, 0.2D).add(Attributes.ATTACK_DAMAGE, 2.0D).add(Attributes.FOLLOW_RANGE, 48.0D); + } + + @Override @NotNull + protected PathNavigation createNavigation(@NotNull Level level) { + FlyingPathNavigation flyingpathnavigation = new FlyingPathNavigation(this, level); + flyingpathnavigation.setCanOpenDoors(false); + flyingpathnavigation.setCanFloat(true); + flyingpathnavigation.setCanPassDoors(true); + return flyingpathnavigation; + } + + @Override + protected float getStandingEyeHeight(@NotNull Pose pose, EntityDimensions dim) { + return dim.height * 0.6F; + } + + @Override + public boolean isBaby() { + return false; + } + + @Override + public boolean hurt(DamageSource damageSource, float damage) { + Entity entity = damageSource.getEntity(); + if (entity instanceof Player player) { + UUID owner = this.getOwnerUUID(); + if (owner != null && player.getUUID().equals(owner)) { + return false; + } + } + + return super.hurt(damageSource, damage); + } + + @Override + public void travel(@NotNull Vec3 velo) { + if (this.isAlive() && (this.isEffectiveAi() || this.isControlledByLocalInstance())) { + LivingEntity passenger = this.getControllingPassenger(); + if(this.isOnGround()) { + this.moveRelative(0.02F, Vec3Util.UP); + } + if (this.isInWater()) { + this.moveRelative(0.02F, velo); + this.move(MoverType.SELF, this.getDeltaMovement()); + this.setDeltaMovement(this.getDeltaMovement().scale(0.5F)); + } else if (this.isInLava()) { + this.moveRelative(0.02F, velo); + this.move(MoverType.SELF, this.getDeltaMovement()); + this.setDeltaMovement(this.getDeltaMovement().scale(0.3D)); + } else if (this.isVehicle() && passenger != null) { + this.setYRot(passenger.getYRot()); + this.yRotO = this.getYRot(); + this.setXRot(passenger.getXRot() * 0.5F); + this.setRot(this.getYRot(), this.getXRot()); + this.yBodyRot = this.getYRot(); + this.yHeadRot = this.yBodyRot; + super.travel(new Vec3(passenger.xxa * 8.0D, velo.y, passenger.zza * 8.0D)); + } else{ + this.moveRelative(this.getSpeed(), velo); + this.move(MoverType.SELF, this.getDeltaMovement()); + this.setDeltaMovement(this.getDeltaMovement().scale(0.8F)); + } + } + + this.calculateEntityAnimation(this, false); + } + + @Override @Nullable + public LivingEntity getControllingPassenger() { + return this.getFirstPassenger() instanceof Player player ? player : null; + } + + @Override @Nullable + public SoundEvent getAmbientSound() { + return ECSounds.MANTA_AMBIENT; + } + + @Override + protected SoundEvent getHurtSound(@NotNull DamageSource damageSource) { + return ECSounds.MANTA_HURT; + } + + @Override + protected SoundEvent getDeathSound() { + return ECSounds.MANTA_DEATH; + } + + @Override + protected void playStepSound(@NotNull BlockPos blockPos, @NotNull BlockState blockState) { + } + + @Override + protected void checkFallDamage(double velo, boolean onGround, @NotNull BlockState blockState, @NotNull BlockPos blockPos) { + } + + @Override + public boolean onClimbable() { + return false; + } + + @Override + protected float getSoundVolume() { + return 0.4F; + } + + public int getUniqueFlapTickOffset() { + return this.getId() * 3; + } + + @Override + public void aiStep() { + super.aiStep(); + if (!this.level.isClientSide && this.isAlive() && this.tickCount % 20 == 0) { + this.heal(1.0F); + } + } + + @Override + protected void customServerAiStep() { + this.level.getProfiler().push("mantaBrain"); + this.getBrain().tick((ServerLevel)this.level, this); + this.level.getProfiler().pop(); + this.level.getProfiler().push("mantaActivityUpdate"); + MantaAi.updateActivity(this); + this.level.getProfiler().pop(); + super.customServerAiStep(); + } + + @Override + public void tick() { + super.tick(); + + if (this.level.isClientSide) { + float f = Mth.cos((float) (this.getUniqueFlapTickOffset() + this.tickCount) * 0.1F + (float) Math.PI); + + this.level.addParticle(ParticleTypes.FIREWORK, + this.getX() + f + this.random.nextDouble() - 0.5D, + this.getY() + f + this.random.nextDouble() * 0.5D, + this.getZ() + f + this.random.nextDouble() - 0.5D, + 0.0D, 0.0D, 0.0D); + } + } + + @Override + public boolean causeFallDamage(float distance, float multiplier, @NotNull DamageSource damageSource) { + return false; + } + + @Override @NotNull + public InteractionResult mobInteract(@NotNull Player player, @NotNull InteractionHand hand) { + if (!this.isBaby()) { + if (this.isVehicle()) { + return super.mobInteract(player, hand); + } + } + + if (!this.level.isClientSide) { + player.setYRot(this.getYRot()); + player.setXRot(this.getXRot()); + player.startRiding(this); + } + + return InteractionResult.sidedSuccess(this.level.isClientSide); + } + + @Override + protected void sendDebugPackets() { + super.sendDebugPackets(); + DebugPackets.sendEntityBrain(this); + } + + @Override + public boolean isFlapping() { + return !this.isOnGround(); + } + + @Override + public boolean removeWhenFarAway(double dist) { + return false; + } + + @Override @NotNull + public Vec3 getLeashOffset() { + return new Vec3(0.0D, this.getEyeHeight() * 0.6D, this.getBbWidth() * 0.1D); + } + + @Override + public boolean isPlayerHealed() { + return this.getBrain().getMemory(MemoryModuleType.LIKED_PLAYER).isPresent(); + } + + @Deprecated + @Override + public void setPlayerHealed(boolean healed) {} + + @Override @NotNull + public UUID getHealedPlayer() { + Optional player = this.getBrain().getMemory(MemoryModuleType.LIKED_PLAYER); + return player.orElse(Util.NIL_UUID); + } + + @Override + public void setHealedPlayer(@Nullable UUID player) { + this.getBrain().setMemory(MemoryModuleType.LIKED_PLAYER, player); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/NetherLambmanEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/NetherLambmanEntity.java new file mode 100644 index 00000000..cc9dcd52 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/NetherLambmanEntity.java @@ -0,0 +1,196 @@ +package com.hexagram2021.emeraldcraft.common.entities.mobs; + +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.village.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 org.jetbrains.annotations.NotNull; + +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, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, AbstractSkeleton.class, 8.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Evoker.class, 12.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Vindicator.class, 8.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Vex.class, 8.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Pillager.class, 15.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Illusioner.class, 12.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zoglin.class, 10.0F, 1.0D, 1.0D)); + 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(@NotNull ServerLevel level, @NotNull 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 @NotNull + public InteractionResult mobInteract(Player player, @NotNull 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(@NotNull CompoundTag nbt) { + super.readAdditionalSaveData(nbt); + 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 distance) { + 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); + } + + @Override + protected SoundEvent getAmbientSound() { + return this.isTrading() ? ECSounds.NETHER_LAMBMAN_TRADE : ECSounds.NETHER_LAMBMAN_AMBIENT; + } + + @Override + protected SoundEvent getHurtSound(@NotNull DamageSource damageSource) { + return ECSounds.NETHER_LAMBMAN_HURT; + } + + @Override + protected SoundEvent getDeathSound() { + return ECSounds.NETHER_LAMBMAN_DEATH; + } + + @Override @NotNull + 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, 50.0D) + .add(Attributes.MOVEMENT_SPEED, 0.5D) + .add(Attributes.FOLLOW_RANGE, 48.0D); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/NetherPigmanEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/NetherPigmanEntity.java new file mode 100644 index 00000000..c01b19ef --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/NetherPigmanEntity.java @@ -0,0 +1,196 @@ +package com.hexagram2021.emeraldcraft.common.entities.mobs; + +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.village.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 org.jetbrains.annotations.NotNull; + +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, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, AbstractSkeleton.class, 8.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Evoker.class, 12.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Vindicator.class, 8.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Vex.class, 8.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Pillager.class, 15.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Illusioner.class, 12.0F, 1.0D, 1.0D)); + this.goalSelector.addGoal(1, new AvoidEntityGoal<>(this, Zoglin.class, 10.0F, 1.0D, 1.0D)); + 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(@NotNull ServerLevel level, @NotNull 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 @NotNull + public InteractionResult mobInteract(Player player, @NotNull 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(@NotNull CompoundTag nbt) { + super.readAdditionalSaveData(nbt); + 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 distance) { + 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); + } + + @Override + protected SoundEvent getAmbientSound() { + return this.isTrading() ? ECSounds.NETHER_PIGMAN_TRADE : ECSounds.NETHER_PIGMAN_AMBIENT; + } + + @Override + protected SoundEvent getHurtSound(@NotNull DamageSource damageSource) { + return ECSounds.NETHER_PIGMAN_HURT; + } + + @Override + protected SoundEvent getDeathSound() { + return ECSounds.NETHER_PIGMAN_DEATH; + } + + @Override @NotNull + 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, 50.0D) + .add(Attributes.MOVEMENT_SPEED, 0.5D) + .add(Attributes.FOLLOW_RANGE, 48.0D); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyData.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyData.java new file mode 100644 index 00000000..34df7b97 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyData.java @@ -0,0 +1,36 @@ +package com.hexagram2021.emeraldcraft.common.entities.mobs; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; + +public record PiglinCuteyData(int level) { + 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) + ); + + public PiglinCuteyData(int level) { + this.level = Math.max(MIN_LEVEL, 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/common/entities/mobs/PiglinCuteyDataHolder.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyDataHolder.java new file mode 100644 index 00000000..d3911577 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyDataHolder.java @@ -0,0 +1,7 @@ +package com.hexagram2021.emeraldcraft.common.entities.mobs; + +public interface PiglinCuteyDataHolder { + PiglinCuteyData getPiglinCuteyData(); + + void setPiglinCuteyData(PiglinCuteyData data); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyEntity.java new file mode 100644 index 00000000..d3fe3e5e --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PiglinCuteyEntity.java @@ -0,0 +1,557 @@ +package com.hexagram2021.emeraldcraft.common.entities.mobs; + +import com.google.common.annotations.VisibleForTesting; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.hexagram2021.emeraldcraft.common.crafting.menu.PiglinCuteyMerchantMenu; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.register.ECTriggers; +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import com.hexagram2021.emeraldcraft.common.world.village.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.nbt.Tag; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.chat.Component; +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.server.level.ServerPlayer; +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.SimpleMenuProvider; +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.monster.piglin.PiglinAi; +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.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 org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.Map; +import java.util.OptionalInt; +import java.util.Set; + +public class PiglinCuteyEntity extends AbstractVillager implements PiglinCuteyDataHolder { + public static final EntityDataSerializer PIGLIN_CUTEY_DATA = new EntityDataSerializer.ForValueType<>() { + @Override + public void write(FriendlyByteBuf buf, PiglinCuteyData data) { + buf.writeVarInt(data.level()); + } + + @Override @NotNull + public PiglinCuteyData read(FriendlyByteBuf buf) { + return new PiglinCuteyData(buf.readVarInt()); + } + }; + + 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.5D, 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(); + } + + @Override + public boolean hurt(@NotNull DamageSource source, float v) { + boolean flag = super.hurt(source, v); + if (this.level.isClientSide) { + return false; + } else { + if (flag && source.getEntity() instanceof Player) { + PiglinAi.angerNearbyPiglins((Player)source.getEntity(), true); + } + + return flag; + } + } + + @Nullable + @Override + public AgeableMob getBreedOffspring(@NotNull ServerLevel level, @NotNull 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 @NotNull + public InteractionResult mobInteract(Player player, @NotNull 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().level(); + return PiglinCuteyData.canLevelUp(i) && this.cuteyXp >= PiglinCuteyData.getMaxXpPerLevel(i); + } + + private void increaseMerchantCareer() { + this.setPiglinCuteyData(this.getPiglinCuteyData().setLevel(this.getPiglinCuteyData().level() + 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.level()); + 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().level()); + } + + @Override + public void openTradingScreen(Player player, @NotNull Component title, int level) { + OptionalInt menu = player.openMenu( + new SimpleMenuProvider((id, inventory, merchant) -> new PiglinCuteyMerchantMenu(id, inventory, this), title) + ); + if (menu.isPresent()) { + MerchantOffers merchantoffers = this.getOffers(); + if (!merchantoffers.isEmpty()) { + player.sendMerchantOffers(menu.getAsInt(), merchantoffers, level, this.getVillagerXp(), this.showProgressBar(), this.canRestock()); + } + } + } + + @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(@NotNull DamageSource damageSource) { + return ECSounds.PIGLIN_CUTEY_HURT; + } + + @Override + protected SoundEvent getDeathSound() { + return ECSounds.PIGLIN_CUTEY_DEATH; + } + + @Override @NotNull + protected SoundEvent getTradeUpdatedSound(boolean correct) { + return correct ? ECSounds.PIGLIN_CUTEY_YES : ECSounds.PIGLIN_CUTEY_NO; + } + + @Override @NotNull + 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 player) { + int i = this.getPlayerReputation(player); + if (i != 0) { + for(MerchantOffer merchantoffer : this.getOffers()) { + merchantoffer.addToSpecialPriceDiff(-Mth.floor((float)i * merchantoffer.getPriceMultiplier())); + } + } + + if (player.hasEffect(MobEffects.HERO_OF_THE_VILLAGE)) { + MobEffectInstance mobeffectinstance = player.getEffect(MobEffects.HERO_OF_THE_VILLAGE); + if(mobeffectinstance != null) { + 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 void 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; + } + } + } + } + } + + this.portalTarget = null; + } + + @Nullable + private BlockPos getPortalTarget() { + return portalTarget; + } + + @Override + public void addAdditionalSaveData(@NotNull CompoundTag nbt) { + super.addAdditionalSaveData(nbt); + PiglinCuteyData.CODEC.encodeStart(NbtOps.INSTANCE, this.getPiglinCuteyData()).resultOrPartial(ECLogger::error).ifPresent( + piglinCuteyData -> nbt.put("PiglinCuteyData", piglinCuteyData) + ); + nbt.putInt("FoodLevel", this.foodLevel); + nbt.putInt("Xp", this.cuteyXp); + if(this.lastTradedPlayer != null) { + nbt.putUUID("lastTradedPlayer", this.lastTradedPlayer.getUUID()); + } + } + + @Override + public void readAdditionalSaveData(@NotNull CompoundTag nbt) { + super.readAdditionalSaveData(nbt); + if (nbt.contains("PiglinCuteyData", Tag.TAG_COMPOUND)) { + DataResult dataResult = PiglinCuteyData.CODEC.parse(new Dynamic<>(NbtOps.INSTANCE, nbt.get("PiglinCuteyData"))); + dataResult.resultOrPartial(ECLogger::error).ifPresent(this::setPiglinCuteyData); + } + + if (nbt.contains("FoodLevel", Tag.TAG_INT)) { + this.foodLevel = nbt.getInt("FoodLevel"); + } + + if (nbt.contains("Xp", Tag.TAG_INT)) { + this.cuteyXp = nbt.getInt("Xp"); + } + + if(nbt.contains("lastTradedPlayer", Tag.TAG_INT_ARRAY)) { + this.lastTradedPlayer = this.level.getPlayerByUUID(nbt.getUUID("lastTradedPlayer")); + } + + 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) + )); + if(!this.cutey.level.isClientSide) { + ECTriggers.PIGLIN_CUTEY.trigger((ServerPlayer) this.cutey.lastTradedPlayer); + } + } + + 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/common/entities/mobs/PlayerRideableFlying.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PlayerRideableFlying.java new file mode 100644 index 00000000..2de159e9 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PlayerRideableFlying.java @@ -0,0 +1,12 @@ +package com.hexagram2021.emeraldcraft.common.entities.mobs; + +import net.minecraft.world.entity.PlayerRideable; + +public interface PlayerRideableFlying extends PlayerRideable { + default boolean canFly() { + return true; + } + + // called each tick when player sits on a flyable mob. + void fly(int velocity); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PurpleSpottedBigeyeEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PurpleSpottedBigeyeEntity.java new file mode 100644 index 00000000..55418914 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/PurpleSpottedBigeyeEntity.java @@ -0,0 +1,42 @@ +package com.hexagram2021.emeraldcraft.common.entities.mobs; + +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.animal.AbstractSchoolingFish; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; + +public class PurpleSpottedBigeyeEntity extends AbstractSchoolingFish { + public PurpleSpottedBigeyeEntity(EntityType type, Level level) { + super(type, level); + } + + @Override @NotNull + public ItemStack getBucketItemStack() { + return new ItemStack(ECItems.BIGEYE_BUCKET); + } + + @Override + protected SoundEvent getAmbientSound() { + return ECSounds.BIGEYE_AMBIENT; + } + + @Override + protected SoundEvent getDeathSound() { + return ECSounds.BIGEYE_DEATH; + } + + @Override + protected SoundEvent getHurtSound(@NotNull DamageSource damageSource) { + return ECSounds.BIGEYE_HURT; + } + + @Override @NotNull + protected SoundEvent getFlopSound() { + return ECSounds.BIGEYE_FLOP; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/WraithEntity.java b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/WraithEntity.java new file mode 100644 index 00000000..c6ff4835 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/entities/mobs/WraithEntity.java @@ -0,0 +1,144 @@ +package com.hexagram2021.emeraldcraft.common.entities.mobs; + +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; +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.goal.target.HurtByTargetGoal; +import net.minecraft.world.entity.ai.goal.target.NearestAttackableTargetGoal; +import net.minecraft.world.entity.animal.IronGolem; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.npc.AbstractVillager; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; + +import java.util.Objects; + +public class WraithEntity extends Monster { + protected int spellCastingTickCount; + + public WraithEntity(EntityType type, Level level) { + super(type, level); + this.xpReward = 12; + } + + public static AttributeSupplier.Builder createAttributes() { + return Monster.createMonsterAttributes() + .add(Attributes.MOVEMENT_SPEED, 0.6D).add(Attributes.FOLLOW_RANGE, 12.0D).add(Attributes.MAX_HEALTH, 40.0D) + .add(Attributes.ATTACK_DAMAGE, 4.0D).add(Attributes.ATTACK_SPEED, 8.0D); + } + + @Override + protected void registerGoals() { + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new WraithNauseaSpellGoal()); + this.goalSelector.addGoal(2, new MeleeAttackGoal(this, 2.0D, false)); + this.goalSelector.addGoal(8, new RandomStrollGoal(this, 0.6D)); + this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Mob.class, 8.0F)); + this.targetSelector.addGoal(1, new HurtByTargetGoal(this)); + this.targetSelector.addGoal(2, (new NearestAttackableTargetGoal<>(this, Player.class, true)).setUnseenMemoryTicks(300)); + this.targetSelector.addGoal(3, (new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)).setUnseenMemoryTicks(300)); + this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, false)); + } + + @Override + public void readAdditionalSaveData(@NotNull CompoundTag nbt) { + super.readAdditionalSaveData(nbt); + this.spellCastingTickCount = nbt.getInt("SpellTicks"); + } + + @Override + public void addAdditionalSaveData(@NotNull CompoundTag nbt) { + super.addAdditionalSaveData(nbt); + nbt.putInt("SpellTicks", this.spellCastingTickCount); + } + + @Override + protected SoundEvent getAmbientSound() { + return ECSounds.WRAITH_AMBIENT; + } + + @Override + protected SoundEvent getDeathSound() { + return ECSounds.WRAITH_DEATH; + } + + @Override + protected SoundEvent getHurtSound(@NotNull DamageSource damageSource) { + return ECSounds.WRAITH_HURT; + } + + @Override + protected void customServerAiStep() { + super.customServerAiStep(); + if (this.spellCastingTickCount > 0) { + --this.spellCastingTickCount; + } + } + + class WraithNauseaSpellGoal extends Goal { + protected int attackWarmupDelay; + protected int nextAttackTickCount; + + @Override + public boolean canUse() { + LivingEntity livingentity = WraithEntity.this.getTarget(); + if (livingentity != null && livingentity.isAlive()) { + if(WraithEntity.this.spellCastingTickCount > 0) { + return false; + } + return WraithEntity.this.tickCount >= this.nextAttackTickCount; + } + return false; + } + + @Override + public boolean canContinueToUse() { + LivingEntity livingentity = WraithEntity.this.getTarget(); + return livingentity != null && livingentity.isAlive() && this.attackWarmupDelay > 0; + } + + @Override + public void start() { + this.attackWarmupDelay = this.adjustedTickDelay(this.getCastWarmupTime()); + WraithEntity.this.spellCastingTickCount = this.getCastingTime(); + this.nextAttackTickCount = WraithEntity.this.tickCount + this.getCastingInterval() + WraithEntity.this.getRandom().nextInt(100); + } + + @Override + public void tick() { + --this.attackWarmupDelay; + if (this.attackWarmupDelay == 0) { + this.performSpellCasting(); + } + } + + protected void performSpellCasting() { + LivingEntity target = Objects.requireNonNull(WraithEntity.this.getTarget()); + target.addEffect(new MobEffectInstance(MobEffects.CONFUSION, 400, 2), WraithEntity.this); + target.addEffect(new MobEffectInstance(MobEffects.BLINDNESS, 160), WraithEntity.this); + target.addEffect(new MobEffectInstance(MobEffects.WEAKNESS, 120), WraithEntity.this); + } + + protected int getCastWarmupTime() { + return 40; + } + + protected int getCastingTime() { + return 20; + } + + protected int getCastingInterval() { + return 280; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/items/BottleFoodItem.java b/src/main/java/com/hexagram2021/emeraldcraft/common/items/BottleFoodItem.java new file mode 100644 index 00000000..2c049279 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/items/BottleFoodItem.java @@ -0,0 +1,68 @@ +package com.hexagram2021.emeraldcraft.common.items; + +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.*; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; + +public class BottleFoodItem extends Item { + private final int drinkDuration; + + public BottleFoodItem(int drinkDuration, Properties props) { + super(props); + this.drinkDuration = drinkDuration; + } + + @Override @NotNull + public ItemStack finishUsingItem(@NotNull ItemStack itemStack, @NotNull Level level, @NotNull LivingEntity entity) { + super.finishUsingItem(itemStack, level, entity); + + this.additionalEffects(level, entity); + + if (itemStack.isEmpty()) { + return new ItemStack(Items.GLASS_BOTTLE); + } else { + if (entity instanceof Player player && !player.getAbilities().instabuild) { + ItemStack itemstack = new ItemStack(Items.GLASS_BOTTLE); + if (!player.getInventory().add(itemstack)) { + player.drop(itemstack, false); + } + } + + return itemStack; + } + } + + protected void additionalEffects(Level level, LivingEntity entity) { + } + + @Override + public int getUseDuration(@NotNull ItemStack itemStack) { + return drinkDuration; + } + + @Override @NotNull + public UseAnim getUseAnimation(@NotNull ItemStack itemStack) { + return UseAnim.DRINK; + } + + @Override @NotNull + public SoundEvent getDrinkingSound() { + return SoundEvents.HONEY_DRINK; + } + + @Override @NotNull + public SoundEvent getEatingSound() { + return SoundEvents.HONEY_DRINK; + } + + @Override @NotNull + public InteractionResultHolder use(@NotNull Level level, @NotNull Player player, @NotNull InteractionHand hand) { + return ItemUtils.startUsingInstantly(level, player, hand); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/items/ChorusFlowerEggdropSoupItem.java b/src/main/java/com/hexagram2021/emeraldcraft/common/items/ChorusFlowerEggdropSoupItem.java new file mode 100644 index 00000000..93aa36cf --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/items/ChorusFlowerEggdropSoupItem.java @@ -0,0 +1,25 @@ +package com.hexagram2021.emeraldcraft.common.items; + +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.BowlFoodItem; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; + +public class ChorusFlowerEggdropSoupItem extends BowlFoodItem { + public ChorusFlowerEggdropSoupItem(Properties props) { + super(props); + } + + @Override @NotNull + public ItemStack finishUsingItem(@NotNull ItemStack itemStack, @NotNull Level level, @NotNull LivingEntity entity) { + if(!level.isClientSide) { + entity.removeEffect(MobEffects.HUNGER); + entity.removeEffect(MobEffects.POISON); + entity.removeEffect(MobEffects.WITHER); + } + + return super.finishUsingItem(itemStack, level, entity); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/items/ECBoatItem.java b/src/main/java/com/hexagram2021/emeraldcraft/common/items/ECBoatItem.java new file mode 100644 index 00000000..820cf896 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/items/ECBoatItem.java @@ -0,0 +1,86 @@ +package com.hexagram2021.emeraldcraft.common.items; + +import com.hexagram2021.emeraldcraft.common.dispenser.ECBoatDispenseItemBehaviour; +import com.hexagram2021.emeraldcraft.common.entities.ECBoat; +import com.hexagram2021.emeraldcraft.common.entities.ECChestBoat; +import com.hexagram2021.emeraldcraft.common.entities.IECBoat; +import net.minecraft.core.BlockPos; +import net.minecraft.stats.Stats; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntitySelector; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.DispenserBlock; +import net.minecraft.world.level.gameevent.GameEvent; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; +import org.jetbrains.annotations.NotNull; + +import java.util.List; +import java.util.function.Predicate; + +public class ECBoatItem extends Item { + private static final Predicate ENTITY_PREDICATE = EntitySelector.NO_SPECTATORS.and(Entity::isPickable); + private final ECBoat.ECBoatType type; + private final boolean hasChest; + + public ECBoatItem(boolean hasChest, ECBoat.ECBoatType type, Item.Properties properties) { + super(properties); + this.hasChest = hasChest; + this.type = type; + DispenserBlock.registerBehavior(this, new ECBoatDispenseItemBehaviour(type, hasChest)); + } + + @Override @NotNull + public InteractionResultHolder use(@NotNull Level level, Player player, @NotNull InteractionHand hand) { + ItemStack itemstack = player.getItemInHand(hand); + HitResult hitresult = getPlayerPOVHitResult(level, player, ClipContext.Fluid.ANY); + if (hitresult.getType() == HitResult.Type.MISS) { + return InteractionResultHolder.pass(itemstack); + } else { + Vec3 vec3 = player.getViewVector(1.0F); + List list = level.getEntities(player, player.getBoundingBox().expandTowards(vec3.scale(5.0D)).inflate(1.0D), ENTITY_PREDICATE); + if (!list.isEmpty()) { + Vec3 vec31 = player.getEyePosition(); + + for(Entity entity : list) { + AABB aabb = entity.getBoundingBox().inflate(entity.getPickRadius()); + if (aabb.contains(vec31)) { + return InteractionResultHolder.pass(itemstack); + } + } + } + + if (hitresult.getType() == HitResult.Type.BLOCK) { + IECBoat boat = this.hasChest ? + new ECChestBoat(level, hitresult.getLocation().x, hitresult.getLocation().y, hitresult.getLocation().z) : + new ECBoat(level, hitresult.getLocation().x, hitresult.getLocation().y, hitresult.getLocation().z); + boat.setECBoatType(this.type); + Entity boatEntity = (Entity)boat; + boatEntity.setYRot(player.getYRot()); + if (!level.noCollision(boatEntity, boatEntity.getBoundingBox())) { + return InteractionResultHolder.fail(itemstack); + } else { + if (!level.isClientSide) { + level.addFreshEntity(boatEntity); + level.gameEvent(player, GameEvent.ENTITY_PLACE, new BlockPos(hitresult.getLocation())); + if (!player.getAbilities().instabuild) { + itemstack.shrink(1); + } + } + + player.awardStat(Stats.ITEM_USED.get(this)); + return InteractionResultHolder.sidedSuccess(itemstack, level.isClientSide()); + } + } else { + return InteractionResultHolder.pass(itemstack); + } + } + } +} 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..cf141035 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/items/EmeraldArmorItem.java @@ -0,0 +1,84 @@ +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 org.jetbrains.annotations.NotNull; + +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; + + @SuppressWarnings("deprecation") + private static final LazyLoadedValue repairIngredient = new LazyLoadedValue<>(() -> Ingredient.of(Items.EMERALD)); + + public static final 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 { + @Override + public int getDurabilityForSlot(EquipmentSlot pSlot) { + return HEALTH_PER_SLOT[pSlot.getIndex()] * durabilityMultiplier; + } + + @Override + public int getDefenseForSlot(EquipmentSlot pSlot) { + return slotProtections[pSlot.getIndex()]; + } + + @Override + public int getEnchantmentValue() { + return enchantmentValue; + } + + @Override @NotNull + public SoundEvent getEquipSound() { + return sound; + } + + @Override @NotNull + public Ingredient getRepairIngredient() { + return repairIngredient.get(); + } + + @Override @NotNull + public String getName() { + return name; + } + + @Override + public float getToughness() { + return toughness; + } + + @Override + 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..61079b6f --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/items/LapisArmorItem.java @@ -0,0 +1,84 @@ +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 org.jetbrains.annotations.NotNull; + +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; + + @SuppressWarnings("deprecation") + private static final LazyLoadedValue repairIngredient = new LazyLoadedValue<>(() -> Ingredient.of(Items.LAPIS_LAZULI)); + + public static final 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 { + @Override + public int getDurabilityForSlot(EquipmentSlot pSlot) { + return HEALTH_PER_SLOT[pSlot.getIndex()] * durabilityMultiplier; + } + + @Override + public int getDefenseForSlot(EquipmentSlot pSlot) { + return slotProtections[pSlot.getIndex()]; + } + + @Override + public int getEnchantmentValue() { + return enchantmentValue; + } + + @Override @NotNull + public SoundEvent getEquipSound() { + return sound; + } + + @Override @NotNull + public Ingredient getRepairIngredient() { + return repairIngredient.get(); + } + + @Override @NotNull + public String getName() { + return name; + } + + @Override + public float getToughness() { + return toughness; + } + + @Override + public float getKnockbackResistance() { + return knockbackResistance; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/items/StickFoodItem.java b/src/main/java/com/hexagram2021/emeraldcraft/common/items/StickFoodItem.java new file mode 100644 index 00000000..4f565946 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/items/StickFoodItem.java @@ -0,0 +1,31 @@ +package com.hexagram2021.emeraldcraft.common.items; + +import net.minecraft.world.entity.LivingEntity; +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.level.Level; +import org.jetbrains.annotations.NotNull; + +public class StickFoodItem extends Item { + public StickFoodItem(Properties props) { + super(props); + } + + @Override @NotNull + public ItemStack finishUsingItem(@NotNull ItemStack itemStack, @NotNull Level level, @NotNull LivingEntity entity) { + super.finishUsingItem(itemStack, level, entity); + if(itemStack.isEmpty()) { + return new ItemStack(Items.STICK); + } + if (entity instanceof Player player && !player.getAbilities().instabuild) { + ItemStack itemstack = new ItemStack(Items.STICK); + if (!player.getInventory().add(itemstack)) { + player.drop(itemstack, false); + } + } + + return itemStack; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBannerPatterns.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBannerPatterns.java new file mode 100644 index 00000000..22fb54ee --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBannerPatterns.java @@ -0,0 +1,48 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.EmeraldCraft; +import net.minecraft.core.Registry; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.BannerPatternItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.entity.BannerPattern; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.RegistryObject; + +import java.util.ArrayList; +import java.util.List; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECBannerPatterns { + public static final DeferredRegister REGISTER = DeferredRegister.create(Registry.BANNER_PATTERN_REGISTRY, MODID); + + public static final List ALL_BANNERS = new ArrayList<>(); + + public static final BannerEntry BEE = addBanner("bee", "bee"); + public static final BannerEntry SNOW = addBanner("snow", "snw"); + public static final BannerEntry BOTTLE = addBanner("bottle", "btl"); + public static final BannerEntry POTION = addBanner("potion", "ptn"); + + public static void init(IEventBus bus) { + REGISTER.register(bus); + } + + private static BannerEntry addBanner(String name, String hashName) { + RegistryObject pattern = REGISTER.register(name, () -> new BannerPattern("ec_"+hashName)); + TagKey tag = TagKey.create(Registry.BANNER_PATTERN_REGISTRY, pattern.getId()); + ECItems.ItemRegObject item = ECItems.ItemRegObject.register(name + "_banner_pattern", () -> new BannerPatternItem( + tag, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(1) + )); + BannerEntry result = new BannerEntry(pattern, tag, item); + ALL_BANNERS.add(result); + return result; + } + + public record BannerEntry( + RegistryObject pattern, + TagKey tag, + ECItems.ItemRegObject item + ) { } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomeKeys.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomeKeys.java new file mode 100644 index 00000000..1289a92b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomeKeys.java @@ -0,0 +1,53 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.config.ECCommonConfig; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.biome.Biome; +import net.minecraftforge.registries.ForgeRegistries; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECBiomeKeys { +//Overworld + //Ocean + public static final BiomeKey DEAD_CRIMSON_OCEAN = registerKey(ECCommonConfig.GENERATE_DEAD_CRIMSON_OCEAN.get(), "dead_crimson_ocean"); + public static final BiomeKey DEAD_WARPED_OCEAN = registerKey(ECCommonConfig.GENERATE_DEAD_WARPED_OCEAN.get(), "dead_warped_ocean"); + + public static final BiomeKey DEEP_DEAD_CRIMSON_OCEAN = registerKey(ECCommonConfig.GENERATE_DEAD_CRIMSON_OCEAN.get(), "deep_dead_crimson_ocean"); + public static final BiomeKey DEEP_DEAD_WARPED_OCEAN = registerKey(ECCommonConfig.GENERATE_DEAD_WARPED_OCEAN.get(), "deep_dead_warped_ocean"); + + //Island + public static final BiomeKey XANADU = registerKey(ECCommonConfig.GENERATE_XANADU.get(), "xanadu"); + + //Forest + public static final BiomeKey GINKGO_FOREST = registerKey(ECCommonConfig.GENERATE_GINKGO_FOREST.get(), "ginkgo_forest"); + + //Hills + public static final BiomeKey KARST_HILLS = registerKey(ECCommonConfig.GENERATE_KARST_HILLS.get(), "karst_hills"); + + //Plain + public static final BiomeKey PETUNIA_PLAINS = registerKey(ECCommonConfig.GENERATE_PETUNIA_PLAINS.get(), "petunia_plains"); + + //Beach + public static final BiomeKey GOLDEN_BEACH = registerKey(ECCommonConfig.GENERATE_GOLDEN_BEACH.get(), "golden_beach"); + public static final BiomeKey PALM_BEACH = registerKey(ECCommonConfig.GENERATE_PALM_BEACH.get(), "palm_beach"); + + //Desert + public static final BiomeKey AZURE_DESERT = registerKey(ECCommonConfig.GENERATE_AZURE_DESERT.get(), "azure_desert"); + public static final BiomeKey JADEITE_DESERT = registerKey(ECCommonConfig.GENERATE_JADEITE_DESERT.get(), "jadeite_desert"); + + //Underground + public static final BiomeKey VOLCANIC_CAVES = registerKey(ECCommonConfig.GENERATE_VOLCANIC_CAVES.get(), "volcanic_caves"); + +//Nether + public static final BiomeKey EMERY_DESERT = registerKey(ECCommonConfig.GENERATE_EMERY_DESERT.get(), "emery_desert"); + public static final BiomeKey QUARTZ_DESERT = registerKey(ECCommonConfig.GENERATE_QUARTZ_DESERT.get(), "quartz_desert"); + public static final BiomeKey PURPURACEUS_SWAMP = registerKey(ECCommonConfig.GENERATE_PURPURACEUS_SWAMP.get(), "purpuraceus_swamp"); + + private static BiomeKey registerKey(boolean generate, String biomeName) { + return new BiomeKey(ResourceKey.create(ForgeRegistries.Keys.BIOMES, new ResourceLocation(MODID, biomeName)), generate); + } + + public record BiomeKey(ResourceKey key, boolean generate) {} +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomeTags.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomeTags.java new file mode 100644 index 00000000..288ec940 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomeTags.java @@ -0,0 +1,34 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.biome.Biome; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECBiomeTags { + public static final TagKey HAS_SHELTER = create("has_structure/shelter"); + public static final TagKey HAS_NETHER_WARFIELD = create("has_structure/nether_warfield"); + public static final TagKey HAS_ENTRENCHMENT = create("has_structure/entrenchment"); + public static final TagKey HAS_VILLAGE_SWAMP = create("has_structure/village_swamp"); + + public static final TagKey HAS_CAMP_BADLANDS = create("has_structure/camp_badlands"); + public static final TagKey HAS_CAMP_BIRCH = create("has_structure/camp_birch"); + public static final TagKey HAS_CAMP_DESERT = create("has_structure/camp_desert"); + public static final TagKey HAS_CAMP_JUNGLE = create("has_structure/camp_jungle"); + public static final TagKey HAS_CAMP_PLAINS = create("has_structure/camp_plains"); + public static final TagKey HAS_CAMP_SAVANNA = create("has_structure/camp_savanna"); + public static final TagKey HAS_CAMP_SNOW = create("has_structure/camp_snow"); + public static final TagKey HAS_CAMP_STONY = create("has_structure/camp_stony"); + public static final TagKey HAS_CAMP_SWAMP = create("has_structure/camp_swamp"); + public static final TagKey HAS_CAMP_TAIGA = create("has_structure/camp_taiga"); + + public static final TagKey DEAD_CRIMSON_OCEAN = create("dead_crimson_ocean"); + public static final TagKey DEAD_WARPED_OCEAN = create("dead_warped_ocean"); + + + private static TagKey create(String name) { + return TagKey.create(Registry.BIOME_REGISTRY, new ResourceLocation(MODID, name)); + } +} 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..a5dda454 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBiomes.java @@ -0,0 +1,527 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.data.worldgen.BiomeDefaultFeatures; +import net.minecraft.data.worldgen.Carvers; +import net.minecraft.data.worldgen.placement.*; +import net.minecraft.sounds.Music; +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.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@SuppressWarnings("unused") +public class ECBiomes { + private static final DeferredRegister REGISTER = DeferredRegister.create(ForgeRegistries.BIOMES, MODID); + + public static final RegistryObject DEAD_CRIMSON_OCEAN = REGISTER.register("dead_crimson_ocean", () -> DeadCrimsonOcean(false)); + public static final RegistryObject DEAD_WARPED_OCEAN = REGISTER.register("dead_warped_ocean", () -> DeadWarpedOcean(false)); + public static final RegistryObject DEEP_DEAD_CRIMSON_OCEAN = REGISTER.register("deep_dead_crimson_ocean", () -> DeadCrimsonOcean(true)); + public static final RegistryObject DEEP_DEAD_WARPED_OCEAN = REGISTER.register("deep_dead_warped_ocean", () -> DeadWarpedOcean(true)); + public static final RegistryObject XANADU = REGISTER.register("xanadu", ECBiomes::Xanadu); + public static final RegistryObject GINKGO_FOREST = REGISTER.register("ginkgo_forest", ECBiomes::GinkgoForest); + public static final RegistryObject KARST_HILLS = REGISTER.register("karst_hills", ECBiomes::KarstHills); + public static final RegistryObject PETUNIA_PLAINS = REGISTER.register("petunia_plains", ECBiomes::PetuniaPlains); + public static final RegistryObject GOLDEN_BEACH = REGISTER.register("golden_beach", ECBiomes::GoldenBeach); + public static final RegistryObject PALM_BEACH = REGISTER.register("palm_beach", ECBiomes::PalmBeach); + public static final RegistryObject AZURE_DESERT = REGISTER.register("azure_desert", ECBiomes::AzureDesertBiome); + public static final RegistryObject JADEITE_DESERT = REGISTER.register("jadeite_desert", ECBiomes::JadeiteDesertBiome); + public static final RegistryObject VOLCANIC_CAVES = REGISTER.register("volcanic_caves", ECBiomes::VolcanicCaves); + public static final RegistryObject EMERY_DESERT = REGISTER.register("emery_desert", ECBiomes::EmeryDesertBiome); + public static final RegistryObject QUARTZ_DESERT = REGISTER.register("quartz_desert", ECBiomes::QuartzDesertBiome); + public static final RegistryObject PURPURACEUS_SWAMP = REGISTER.register("purpuraceus_swamp", ECBiomes::PurpuraceusSwamp); + + public static void init(IEventBus bus) { + REGISTER.register(bus); + } + + private static void globalOverworldGeneration(BiomeGenerationSettings.Builder builder) { + BiomeDefaultFeatures.addDefaultCarversAndLakes(builder); + BiomeDefaultFeatures.addDefaultCrystalFormations(builder); + BiomeDefaultFeatures.addDefaultMonsterRoom(builder); + BiomeDefaultFeatures.addDefaultUndergroundVariety(builder); + BiomeDefaultFeatures.addDefaultSprings(builder); + BiomeDefaultFeatures.addSurfaceFreezing(builder); + } + + public static void oceanSpawns(MobSpawnSettings.Builder builder, int squidWeight, int minCount, int maxCount) { + builder.addSpawn(MobCategory.WATER_CREATURE, new MobSpawnSettings.SpawnerData(EntityType.SQUID, squidWeight, 1, minCount)); + builder.addSpawn(MobCategory.WATER_AMBIENT, new MobSpawnSettings.SpawnerData(EntityType.COD, maxCount, 3, 6)); + BiomeDefaultFeatures.caveSpawns(builder); + builder.addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.DROWNED, 5, 1, 1)); + } + + private static Biome baseOcean(MobSpawnSettings.Builder mobSpawnSetting, int waterColor, int waterFogColor, int fogColor, BiomeGenerationSettings.Builder biomeGenerationSetting) { + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.RAIN) + .temperature(0.5F).downfall(0.5F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(waterColor).waterFogColor(waterFogColor) + .fogColor(fogColor).skyColor(calculateSkyColor(0.5F)) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).backgroundMusic(null).build()) + .mobSpawnSettings(mobSpawnSetting.build()) + .generationSettings(biomeGenerationSetting.build()).build(); + } + + private static BiomeGenerationSettings.Builder baseOceanGeneration() { + BiomeGenerationSettings.Builder biomeGenSettingsBuilder = new BiomeGenerationSettings.Builder(); + globalOverworldGeneration(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultOres(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addWaterTrees(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultFlowers(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultGrass(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultMushrooms(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultExtraVegetation(biomeGenSettingsBuilder); + return biomeGenSettingsBuilder; + } + + public static Biome DeadCrimsonOcean(boolean isDeep) { + MobSpawnSettings.Builder mobSpawnSettingsBuilder = new MobSpawnSettings.Builder(); + if (isDeep) { + oceanSpawns(mobSpawnSettingsBuilder, 8, 4, 8); + } else { + oceanSpawns(mobSpawnSettingsBuilder, 10, 2, 15); + } + + mobSpawnSettingsBuilder.addSpawn(MobCategory.WATER_AMBIENT, new MobSpawnSettings.SpawnerData(ECEntities.PURPLE_SPOTTED_BIGEYE, 25, 8, 8)); + mobSpawnSettingsBuilder.addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.DROWNED, 1, 1, 2)); + BiomeGenerationSettings.Builder biomeGenSettingsBuilder = baseOceanGeneration(); + biomeGenSettingsBuilder.addFeature( + GenerationStep.Decoration.VEGETAL_DECORATION, + isDeep ? AquaticPlacements.SEAGRASS_DEEP_WARM : AquaticPlacements.SEAGRASS_WARM + ); + if (isDeep) { + BiomeDefaultFeatures.addDefaultSeagrass(biomeGenSettingsBuilder); + } + + BiomeDefaultFeatures.addLukeWarmKelp(biomeGenSettingsBuilder); + return baseOcean(mobSpawnSettingsBuilder, 0x804cd6, 0x370537, 0xd86064, biomeGenSettingsBuilder); + } + + public static Biome DeadWarpedOcean(boolean isDeep) { + MobSpawnSettings.Builder mobSpawnSettingsBuilder = new MobSpawnSettings.Builder(); + oceanSpawns(mobSpawnSettingsBuilder, 3, 4, 15); + mobSpawnSettingsBuilder.addSpawn(MobCategory.WATER_AMBIENT, new MobSpawnSettings.SpawnerData(ECEntities.HERRING, 15, 1, 5)); + mobSpawnSettingsBuilder.addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.ENDERMAN, 1, 1, 2)); + BiomeGenerationSettings.Builder biomeGenSettingsBuilder = baseOceanGeneration(); + biomeGenSettingsBuilder.addFeature( + GenerationStep.Decoration.VEGETAL_DECORATION, + isDeep ? AquaticPlacements.SEAGRASS_DEEP_COLD : AquaticPlacements.SEAGRASS_COLD + ); + BiomeDefaultFeatures.addDefaultSeagrass(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addColdOceanExtraVegetation(biomeGenSettingsBuilder); + return baseOcean(mobSpawnSettingsBuilder, 0x1a9ed6, 0x052d41, 0x60d2d8, biomeGenSettingsBuilder); + } + + private static Biome Xanadu() { + BiomeGenerationSettings.Builder biomeGenSettingsBuilder = new BiomeGenerationSettings.Builder(); + MobSpawnSettings.Builder mobSpawnSettingsBuilder = (new MobSpawnSettings.Builder()) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.DONKEY, 4, 1, 2)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.HORSE, 4, 1, 2)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.CHICKEN, 7, 2, 4)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.WOLF, 2, 1, 4)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.SHEEP, 4, 2, 4)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.MOOSHROOM, 1, 1, 2)); + BiomeDefaultFeatures.caveSpawns(mobSpawnSettingsBuilder); + globalOverworldGeneration(biomeGenSettingsBuilder); + addXanaduDeltas(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addPlainGrass(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultOres(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomeGenSettingsBuilder); + addXanaduVegetation(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addInfestedStone(biomeGenSettingsBuilder); + Music music = Musics.createGameMusic(SoundEvents.MUSIC_BIOME_MEADOW); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.RAIN) + .temperature(1.0F).downfall(0.9F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(0x2260e1).waterFogColor(0x050533) + .fogColor(0xc0d8ff).skyColor(calculateSkyColor(1.0F)) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).backgroundMusic(music).build()) + .mobSpawnSettings(mobSpawnSettingsBuilder.build()) + .generationSettings(biomeGenSettingsBuilder.build()).build(); + } + + private static Biome GinkgoForest() { + MobSpawnSettings.Builder mobSpawnSettingsBuilder = new MobSpawnSettings.Builder(); + BiomeDefaultFeatures.farmAnimals(mobSpawnSettingsBuilder); + mobSpawnSettingsBuilder.addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.WOLF, 8, 4, 4)).addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.RABBIT, 4, 2, 3)).addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.FOX, 8, 2, 4)); + BiomeDefaultFeatures.commonSpawns(mobSpawnSettingsBuilder); + BiomeGenerationSettings.Builder biomeGenSettingsBuilder = new BiomeGenerationSettings.Builder(); + globalOverworldGeneration(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addFerns(biomeGenSettingsBuilder); + addGinkgoTrees(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultOres(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultFlowers(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultExtraVegetation(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addCommonBerryBushes(biomeGenSettingsBuilder); + + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.RAIN) + .temperature(0.5F).downfall(0.9F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(0x2260e1).waterFogColor(0x050533).grassColorOverride(0xfadc50).foliageColorOverride(0xfadc50) + .fogColor(0xc0d8ff).skyColor(calculateSkyColor(0.5F)) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).backgroundMusic(null).build()) + .mobSpawnSettings(mobSpawnSettingsBuilder.build()) + .generationSettings(biomeGenSettingsBuilder.build()).build(); + } + + private static Biome KarstHills() { + MobSpawnSettings.Builder mobSpawnSettingsBuilder = new MobSpawnSettings.Builder(); + BiomeDefaultFeatures.oceanSpawns(mobSpawnSettingsBuilder, 8, 4, 8); + BiomeGenerationSettings.Builder biomeGenSettingsBuilder = new BiomeGenerationSettings.Builder(); + globalOverworldGeneration(biomeGenSettingsBuilder); + addKarstDeltas(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultOres(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addExtraEmeralds(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addInfestedStone(biomeGenSettingsBuilder); + Music music = Musics.createGameMusic(SoundEvents.MUSIC_BIOME_STONY_PEAKS); + + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.RAIN) + .temperature(1.0F).downfall(0.3F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(4445678).waterFogColor(270131) + .fogColor(0xc0d8ff).skyColor(calculateSkyColor(1.0F)) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).backgroundMusic(music).build()) + .mobSpawnSettings(mobSpawnSettingsBuilder.build()) + .generationSettings(biomeGenSettingsBuilder.build()).build(); + } + + private static Biome PetuniaPlains() { + BiomeGenerationSettings.Builder biomeGenSettingsBuilder = new BiomeGenerationSettings.Builder(); + MobSpawnSettings.Builder mobSpawnSettingsBuilder = (new MobSpawnSettings.Builder()) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.DONKEY, 1, 1, 2)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.RABBIT, 2, 2, 6)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.SHEEP, 2, 2, 4)); + BiomeDefaultFeatures.commonSpawns(mobSpawnSettingsBuilder); + globalOverworldGeneration(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addPlainGrass(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultOres(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomeGenSettingsBuilder); + addPetuniaPlainsVegetation(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addExtraEmeralds(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addInfestedStone(biomeGenSettingsBuilder); + Music music = Musics.createGameMusic(SoundEvents.MUSIC_BIOME_MEADOW); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.RAIN) + .temperature(0.5F).downfall(0.8F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(0x2260e1).waterFogColor(0x050533) + .fogColor(0xc0d8ff).skyColor(calculateSkyColor(0.5F)) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).backgroundMusic(music).build()) + .mobSpawnSettings(mobSpawnSettingsBuilder.build()) + .generationSettings(biomeGenSettingsBuilder.build()).build(); + } + + public static Biome GoldenBeach() { + MobSpawnSettings.Builder mobSpawnSettingsBuilder = new MobSpawnSettings.Builder(); + + BiomeDefaultFeatures.commonSpawns(mobSpawnSettingsBuilder); + BiomeGenerationSettings.Builder biomeGenSettingsBuilder = new BiomeGenerationSettings.Builder(); + globalOverworldGeneration(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultOres(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultFlowers(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultGrass(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultMushrooms(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultExtraVegetation(biomeGenSettingsBuilder); + + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.NONE) + .temperature(0.8F).downfall(0.4F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(4159204).waterFogColor(329011) + .fogColor(0xc0d8ff).skyColor(calculateSkyColor(0.8F)) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).backgroundMusic(null).build()) + .mobSpawnSettings(mobSpawnSettingsBuilder.build()) + .generationSettings(biomeGenSettingsBuilder.build()).build(); + } + + public static Biome PalmBeach() { + MobSpawnSettings.Builder mobSpawnSettingsBuilder = new MobSpawnSettings.Builder(); + + BiomeDefaultFeatures.commonSpawns(mobSpawnSettingsBuilder); + BiomeGenerationSettings.Builder biomeGenSettingsBuilder = new BiomeGenerationSettings.Builder(); + globalOverworldGeneration(biomeGenSettingsBuilder); + addPalmTrees(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultOres(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultFlowers(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultGrass(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultMushrooms(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultExtraVegetation(biomeGenSettingsBuilder); + + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.NONE) + .temperature(0.8F).downfall(0.6F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(4159204).waterFogColor(329011) + .fogColor(0xc0d8ff).skyColor(calculateSkyColor(0.8F)) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).backgroundMusic(null).build()) + .mobSpawnSettings(mobSpawnSettingsBuilder.build()) + .generationSettings(biomeGenSettingsBuilder.build()).build(); + } + + private static Biome AzureDesertBiome() { + BiomeGenerationSettings.Builder biomeGenSettingsBuilder = new BiomeGenerationSettings.Builder(); + + MobSpawnSettings.Builder mobSpawnSettingsBuilder = new MobSpawnSettings.Builder(); + BiomeDefaultFeatures.commonSpawns(mobSpawnSettingsBuilder); + + BiomeDefaultFeatures.addDefaultCarversAndLakes(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultCrystalFormations(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultMonsterRoom(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultUndergroundVariety(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addSurfaceFreezing(biomeGenSettingsBuilder); + + BiomeDefaultFeatures.addDefaultOres(biomeGenSettingsBuilder); + addExtraLapis(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomeGenSettingsBuilder); + + BiomeDefaultFeatures.addBadlandGrass(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultMushrooms(biomeGenSettingsBuilder); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.NONE) + .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(mobSpawnSettingsBuilder.build()) + .generationSettings(biomeGenSettingsBuilder.build()).build(); + } + + private static Biome JadeiteDesertBiome() { + MobSpawnSettings.Builder mobSpawnSettingsBuilder = new MobSpawnSettings.Builder(); + BiomeDefaultFeatures.commonSpawns(mobSpawnSettingsBuilder); + BiomeGenerationSettings.Builder biomeGenSettingsBuilder = new BiomeGenerationSettings.Builder(); + + BiomeDefaultFeatures.addDefaultCarversAndLakes(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultCrystalFormations(biomeGenSettingsBuilder); + addZombieVillagerRoom(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultUndergroundVariety(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultSprings(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addSurfaceFreezing(biomeGenSettingsBuilder); + + BiomeDefaultFeatures.addDefaultOres(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomeGenSettingsBuilder); + + BiomeDefaultFeatures.addBadlandGrass(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultMushrooms(biomeGenSettingsBuilder); + + BiomeDefaultFeatures.addExtraEmeralds(biomeGenSettingsBuilder); + addExtraEmerald(biomeGenSettingsBuilder); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.NONE) + .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(mobSpawnSettingsBuilder.build()) + .generationSettings(biomeGenSettingsBuilder.build()).build(); + } + + public static Biome VolcanicCaves() { + MobSpawnSettings.Builder mobSpawnSettingsBuilder = new MobSpawnSettings.Builder(); + mobSpawnSettingsBuilder.addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.MAGMA_CUBE, 10, 3, 8)); + BiomeDefaultFeatures.commonSpawns(mobSpawnSettingsBuilder); + BiomeGenerationSettings.Builder biomeGenSettingsBuilder = new BiomeGenerationSettings.Builder(); + globalOverworldGeneration(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultOres(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultSoftDisks(biomeGenSettingsBuilder); + BiomeDefaultFeatures.addDefaultMushrooms(biomeGenSettingsBuilder); + addVolcanicCavesFeatures(biomeGenSettingsBuilder); + Music music = Musics.createGameMusic(SoundEvents.MUSIC_BIOME_DRIPSTONE_CAVES); + + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.RAIN) + .temperature(0.5F).downfall(0.5F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(4159204).waterFogColor(329011).fogColor(0xc0d8ff).skyColor(calculateSkyColor(0.5F)) + .ambientParticle(new AmbientParticleSettings(ParticleTypes.LAVA, 0.00625F)) + .ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).backgroundMusic(music).build()) + .mobSpawnSettings(mobSpawnSettingsBuilder.build()) + .generationSettings(biomeGenSettingsBuilder.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 biomeGenSettingsBuilder = (new BiomeGenerationSettings.Builder()) + .addCarver(GenerationStep.Carving.AIR, Carvers.NETHER_CAVE) + .addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, MiscOverworldPlacements.SPRING_LAVA) + .addFeature(GenerationStep.Decoration.LOCAL_MODIFICATIONS, NetherPlacements.BASALT_PILLAR) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.SPRING_OPEN) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.PATCH_FIRE) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.GLOWSTONE_EXTRA) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.GLOWSTONE) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.PATCH_CRIMSON_ROOTS) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, OrePlacements.ORE_MAGMA) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.SPRING_CLOSED) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, OrePlacements.ORE_SOUL_SAND); + + BiomeDefaultFeatures.addNetherDefaultOres(biomeGenSettingsBuilder); + addExtraAncientDebris(biomeGenSettingsBuilder); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.NONE) + .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(biomeGenSettingsBuilder.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 biomeGenSettingsBuilder = (new BiomeGenerationSettings.Builder()) + .addCarver(GenerationStep.Carving.AIR, Carvers.NETHER_CAVE) + .addFeature(GenerationStep.Decoration.LOCAL_MODIFICATIONS, NetherPlacements.BASALT_PILLAR) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.GLOWSTONE_EXTRA) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.GLOWSTONE) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.PATCH_CRIMSON_ROOTS) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, OrePlacements.ORE_MAGMA) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, OrePlacements.ORE_SOUL_SAND); + BiomeDefaultFeatures.addNetherDefaultOres(biomeGenSettingsBuilder); + addExtraQuartz(biomeGenSettingsBuilder); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.NONE) + .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(biomeGenSettingsBuilder.build()).build(); + } + + private static Biome PurpuraceusSwamp() { + MobSpawnSettings mobspawnsettings = (new MobSpawnSettings.Builder()) + .addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.ZOMBIFIED_PIGLIN, 100, 4, 4)) + .addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.ENDERMAN, 5, 4, 4)) + .addSpawn(MobCategory.MONSTER, new MobSpawnSettings.SpawnerData(EntityType.PIGLIN, 15, 4, 4)) + .addSpawn(MobCategory.CREATURE, new MobSpawnSettings.SpawnerData(EntityType.STRIDER, 60, 1, 2)) + .build(); + BiomeGenerationSettings.Builder biomegenerationsettings$builder = (new BiomeGenerationSettings.Builder()) + .addCarver(GenerationStep.Carving.AIR, Carvers.NETHER_CAVE) + .addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, MiscOverworldPlacements.SPRING_LAVA) + .addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, ECPlacedFeatures.PURPURACEUS_FUNGI) + .addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, ECPlacedFeatures.PURPURACEUS_SWAMP_VEGETATION) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.SPRING_OPEN) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.PATCH_FIRE) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.GLOWSTONE_EXTRA) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.GLOWSTONE) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.PATCH_CRIMSON_ROOTS) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, OrePlacements.ORE_MAGMA) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.SPRING_CLOSED) + .addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, OrePlacements.ORE_SOUL_SAND); + + BiomeDefaultFeatures.addDefaultMushrooms(biomegenerationsettings$builder); + BiomeDefaultFeatures.addNetherDefaultOres(biomegenerationsettings$builder); + addPurpuraceusDeltas(biomegenerationsettings$builder); + return (new Biome.BiomeBuilder()).precipitation(Biome.Precipitation.NONE) + .temperature(2.0F).downfall(0.0F) + .specialEffects((new BiomeSpecialEffects.Builder()) + .waterColor(4159204).waterFogColor(329011).fogColor(0x973e97).skyColor(calculateSkyColor(2.0F)) + .ambientLoopSound(SoundEvents.AMBIENT_NETHER_WASTES_LOOP) + .ambientMoodSound(new AmbientMoodSettings(SoundEvents.AMBIENT_NETHER_WASTES_MOOD, 6000, 8, 2.0D)) + .ambientAdditionsSound(new AmbientAdditionsSettings(SoundEvents.AMBIENT_NETHER_WASTES_ADDITIONS, 0.0111D)) + .backgroundMusic(Musics.createGameMusic(SoundEvents.MUSIC_BIOME_NETHER_WASTES)).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); + } + + public static void addXanaduVegetation(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, ECPlacedFeatures.TREES_PEACH); + builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, ECPlacedFeatures.FLOWER_PETUNIA_PLAINS); + } + + public static void addPetuniaPlainsVegetation(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, VegetationPlacements.PATCH_GRASS_PLAIN); + builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, ECPlacedFeatures.FLOWER_PETUNIA_PLAINS); + builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, VegetationPlacements.TREES_MEADOW); + } + + private static void addExtraLapis(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, ECPlacedFeatures.ORE_LAPIS_EXTRA); + } + + private static void addExtraEmerald(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_ORES, ECPlacedFeatures.ORE_EMERALD_EXTRA); + } + + private static void addExtraAncientDebris(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, ECPlacedFeatures.ORE_DEBRIS_EXTRA); + } + + private static void addExtraQuartz(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, ECPlacedFeatures.ORE_QUARTZ_EXTRA); + } + + private static void addZombieVillagerRoom(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_STRUCTURES, ECPlacedFeatures.ZOMBIE_VILLAGER_ROOM); + } + + private static void addVolcanicCavesFeatures(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, ECPlacedFeatures.VOLCANIC_CAVES_LAVA_POOL); + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.SPRING_OPEN); + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, OrePlacements.ORE_MAGMA); + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, NetherPlacements.SPRING_CLOSED); + builder.addFeature(GenerationStep.Decoration.UNDERGROUND_DECORATION, OrePlacements.ORE_BLACKSTONE); + } + + private static void addXanaduDeltas(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.RAW_GENERATION, ECPlacedFeatures.XANADU_DELTA); + } + + private static void addKarstDeltas(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.RAW_GENERATION, ECPlacedFeatures.KARST_DELTA); + } + + private static void addGinkgoTrees(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, ECPlacedFeatures.TREES_GINKGO); + } + + private static void addPalmTrees(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, ECPlacedFeatures.TREES_PALM); + } + + private static void addPurpuraceusDeltas(BiomeGenerationSettings.Builder builder) { + builder.addFeature(GenerationStep.Decoration.RAW_GENERATION, ECPlacedFeatures.PURPURACEUS_SWAMP_DELTA); + builder.addFeature(GenerationStep.Decoration.RAW_GENERATION, ECPlacedFeatures.PURPURACEUS_SWAMP_LAVA_DELTA); + } +} 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..eee93344 --- /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.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public final class ECBlockEntity { + public static final DeferredRegister> REGISTER = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, 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..988efff0 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBlocks.java @@ -0,0 +1,1168 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +import java.util.HashMap; +import java.util.List; +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.nylium.PurpuraceusNyliumBlock; +import com.hexagram2021.emeraldcraft.common.blocks.plant.*; +import com.hexagram2021.emeraldcraft.common.blocks.workstation.*; +import com.hexagram2021.emeraldcraft.common.crafting.compat.ModsLoadedEventSubscriber; +import com.hexagram2021.emeraldcraft.common.world.grower.*; +import net.minecraft.ChatFormatting; +import net.minecraft.Util; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Tuple; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.*; +import net.minecraft.world.level.ItemLike; +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.properties.SlabType; +import net.minecraft.world.level.block.state.properties.WoodType; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.level.material.MaterialColor; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; + +import static com.hexagram2021.emeraldcraft.common.util.RegistryHelper.getRegistryName; + +@SuppressWarnings("unused") +public final class ECBlocks { + public static final DeferredRegister REGISTER = DeferredRegister.create(ForgeRegistries.BLOCKS, MODID); + + private ECBlocks() {} + + private static String changeNameTo(String name, String postfix) { + if(name.endsWith("_block")) { + name = name.replaceAll("_block", postfix); + } else if(name.endsWith("_bricks")) { + name = name.replaceAll("_bricks", "_brick" + postfix); + } else if(name.endsWith("_planks")) { + name = name.replaceAll("_planks", postfix); + } else { + name = name + postfix; + } + return name; + } + + private static void registerStairs(Block fullBlock) { + String name = changeNameTo(getRegistryName(fullBlock).getPath(), "_stairs"); + TO_STAIRS.put(getRegistryName(fullBlock), new BlockEntry<>( + name, + () -> BlockBehaviour.Properties.copy(fullBlock), + p -> new StairBlock(fullBlock::defaultBlockState, p) + )); + } + private static void registerStairs(BlockEntry fullBlock) { + String name = changeNameTo(fullBlock.getId().getPath(), "_stairs"); + TO_STAIRS.put(fullBlock.getId(), new BlockEntry<>( + name, + fullBlock::getProperties, + p -> new StairBlock(fullBlock::defaultBlockState, p) + )); + } + private static void registerStairs(ResourceLocation fullBlockRegistryName, String fullBlockName, BlockBehaviour.Properties props, + Supplier defaultBlockState, Supplier addToTab) { + String name = changeNameTo(fullBlockName, "_stairs"); + BlockEntry blockEntry = new BlockEntry<>( + name, + () -> props, + p -> new StairBlock(defaultBlockState, p) + ); + if(addToTab.get()) { + TO_STAIRS.put(fullBlockRegistryName, blockEntry); + } else { + ECItems.REGISTER.register(blockEntry.getId().getPath(), () -> new BlockItem(blockEntry.get(), new Item.Properties())); + } + } + + private static void registerSlab(Block fullBlock) { + String name = changeNameTo(getRegistryName(fullBlock).getPath(), "_slab"); + TO_SLAB.put(getRegistryName(fullBlock), 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 = changeNameTo(fullBlock.getId().getPath(), "_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 + ) + ) + )); + } + @SuppressWarnings("SameParameterValue") + private static void registerSlab(ResourceLocation fullBlockRegistryName, String fullBlockName, BlockBehaviour.Properties props, + Supplier defaultBlockState, Supplier addToTab) { + String name = changeNameTo(fullBlockName, "_slab"); + BlockEntry blockEntry = new BlockEntry<>( + name, + () -> props, + p -> new SlabBlock(p.isSuffocating((state, world, pos) -> + defaultBlockState.get().isSuffocating(world, pos) && state.getValue(SlabBlock.TYPE) == SlabType.DOUBLE + ).isRedstoneConductor((state, world, pos) -> + defaultBlockState.get().isRedstoneConductor(world, pos) && state.getValue(SlabBlock.TYPE) == SlabType.DOUBLE + ) + ) + ); + if(addToTab.get()) { + TO_SLAB.put(fullBlockRegistryName, blockEntry); + } else { + ECItems.REGISTER.register(blockEntry.getId().getPath(), () -> new BlockItem(blockEntry.get(), new Item.Properties())); + } + } + + private static void registerWall(Block fullBlock) { + String name = changeNameTo(getRegistryName(fullBlock).getPath(), "_wall"); + TO_WALL.put(getRegistryName(fullBlock), new BlockEntry<>( + name, + () -> BlockBehaviour.Properties.copy(fullBlock), + WallBlock::new + )); + } + private static void registerWall(BlockEntry fullBlock) { + String name = changeNameTo(fullBlock.getId().getPath(), "_wall"); + TO_WALL.put(fullBlock.getId(), new BlockEntry<>( + name, + fullBlock::getProperties, + WallBlock::new + )); + } + private static void registerWall(ResourceLocation fullBlockRegistryName, String fullBlockName, BlockBehaviour.Properties props, Supplier addToTab) { + String name = changeNameTo(fullBlockName, "_wall"); + BlockEntry blockEntry = new BlockEntry<>( + name, + () -> props, + WallBlock::new + ); + if(addToTab.get()) { + TO_WALL.put(fullBlockRegistryName, blockEntry); + } else { + ECItems.REGISTER.register(blockEntry.getId().getPath(), () -> new BlockItem(blockEntry.get(), new Item.Properties())); + } + } + + private static void registerFence(BlockEntry fullBlock) { + String name = changeNameTo(fullBlock.getId().getPath(), "_fence"); + TO_FENCE.put(fullBlock.getId(), new BlockEntry<>( + name, + () -> BlockBehaviour.Properties.copy(Blocks.OAK_FENCE).color(fullBlock.get().defaultMaterialColor()), + FenceBlock::new + )); + } + + private static void registerFenceGate(BlockEntry fullBlock) { + String name = changeNameTo(fullBlock.getId().getPath(), "_fence_gate"); + TO_FENCE_GATE.put(fullBlock.getId(), new BlockEntry<>( + name, + () -> BlockBehaviour.Properties.copy(Blocks.OAK_FENCE_GATE).color(fullBlock.get().defaultMaterialColor()), + FenceGateBlock::new + )); + } + + private static void registerDoor(BlockEntry fullBlock) { + String name = changeNameTo(fullBlock.getId().getPath(), "_door"); + TO_DOOR.put(fullBlock.getId(), new BlockEntry<>( + name, + () -> BlockBehaviour.Properties.copy(Blocks.OAK_DOOR).color(fullBlock.get().defaultMaterialColor()), + DoorBlock::new + )); + } + + private static void registerTrapDoor(BlockEntry fullBlock) { + String name = changeNameTo(fullBlock.getId().getPath(), "_trapdoor"); + TO_TRAPDOOR.put(fullBlock.getId(), new BlockEntry<>( + name, + () -> BlockBehaviour.Properties.copy(Blocks.OAK_TRAPDOOR).color(fullBlock.get().defaultMaterialColor()), + TrapDoorBlock::new + )); + } + + private static void registerWoodPressurePlate(BlockEntry fullBlock) { + String name = changeNameTo(fullBlock.getId().getPath(), "_pressure_plate"); + TO_PRESSURE_PLATE.put(fullBlock.getId(), new BlockEntry<>( + name, + () -> BlockBehaviour.Properties.copy(Blocks.OAK_PRESSURE_PLATE).color(fullBlock.get().defaultMaterialColor()), + (props) -> new PressurePlateBlock(PressurePlateBlock.Sensitivity.EVERYTHING, props) + )); + } + + private static void registerWoodButton(BlockEntry fullBlock) { + String name = changeNameTo(fullBlock.getId().getPath(), "_button"); + TO_BUTTON.put(fullBlock.getId(), new BlockEntry<>( + name, + () -> BlockBehaviour.Properties.copy(Blocks.OAK_BUTTON).color(fullBlock.get().defaultMaterialColor()), + WoodButtonBlock::new + )); + } + + private static void registerSign(BlockEntry fullBlock, WoodType woodType) { + String name1 = changeNameTo(fullBlock.getId().getPath(), "_sign"); + String name2 = changeNameTo(fullBlock.getId().getPath(), "_wall_sign"); + TO_SIGN.put(fullBlock.getId(), new Tuple<>(new BlockEntry<>( + name1, + () -> BlockBehaviour.Properties.of(Material.WOOD).noCollission().strength(1.0F).sound(SoundType.WOOD).color(fullBlock.get().defaultMaterialColor()), + (props) -> new StandingSignBlock(props, woodType) + ), new BlockEntry<>( + name2, + () -> BlockBehaviour.Properties.of(Material.WOOD).noCollission().strength(1.0F).sound(SoundType.WOOD).color(fullBlock.get().defaultMaterialColor()), + (props) -> new WallSignBlock(props, woodType) + ))); + } + + 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))); + } + for(Map.Entry> blockFence : ECBlocks.TO_FENCE.entrySet()) { + ECItems.REGISTER.register(blockFence.getValue().getId().getPath(), () -> + new BlockItem(blockFence.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry> blockFenceGate : ECBlocks.TO_FENCE_GATE.entrySet()) { + ECItems.REGISTER.register(blockFenceGate.getValue().getId().getPath(), () -> + new BlockItem(blockFenceGate.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry> blockDoor : ECBlocks.TO_DOOR.entrySet()) { + ECItems.REGISTER.register(blockDoor.getValue().getId().getPath(), () -> + new BlockItem(blockDoor.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry> blockTrapDoor : ECBlocks.TO_TRAPDOOR.entrySet()) { + ECItems.REGISTER.register(blockTrapDoor.getValue().getId().getPath(), () -> + new BlockItem(blockTrapDoor.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry> blockPressurePlate : ECBlocks.TO_PRESSURE_PLATE.entrySet()) { + ECItems.REGISTER.register(blockPressurePlate.getValue().getId().getPath(), () -> + new BlockItem(blockPressurePlate.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry> blockButton : ECBlocks.TO_BUTTON.entrySet()) { + ECItems.REGISTER.register(blockButton.getValue().getId().getPath(), () -> + new BlockItem(blockButton.getValue().get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + } + for(Map.Entry, BlockEntry>> blockSign : + ECBlocks.TO_SIGN.entrySet()) { + ECItems.REGISTER.register(blockSign.getValue().getA().getId().getPath(), () -> + new SignItem(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP), + blockSign.getValue().getA().get(), + blockSign.getValue().getB().get())); + } + } + + 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); + + //Create + Supplier createCompatPredicate = () -> ModsLoadedEventSubscriber.CREATE; + + registerStairs( + new ResourceLocation("create", "zinc_block"), + "zinc_block", + BlockBehaviour.Properties.copy(Blocks.IRON_BLOCK).color(MaterialColor.GLOW_LICHEN), + Blocks.AIR::defaultBlockState, + createCompatPredicate + ); + registerSlab( + new ResourceLocation("create", "zinc_block"), + "zinc_block", + BlockBehaviour.Properties.copy(Blocks.IRON_BLOCK).color(MaterialColor.GLOW_LICHEN), + Blocks.AIR::defaultBlockState, + createCompatPredicate + ); + registerWall( + new ResourceLocation("create", "zinc_block"), + "zinc_block", + BlockBehaviour.Properties.copy(Blocks.IRON_BLOCK).color(MaterialColor.GLOW_LICHEN), + createCompatPredicate + ); + + //ImmersiveEngineering + Supplier ieCompatPredicate = () -> ModsLoadedEventSubscriber.IE; + + registerStairs( + new ResourceLocation("immersiveengineering", "storage_aluminum"), + "aluminum_block", + BlockBehaviour.Properties.of(Material.METAL).sound(SoundType.METAL).strength(5.0F, 10.0F).requiresCorrectToolForDrops(), + Blocks.AIR::defaultBlockState, + ieCompatPredicate + ); + registerWall( + new ResourceLocation("immersiveengineering", "storage_aluminum"), + "aluminum_block", + BlockBehaviour.Properties.of(Material.METAL).sound(SoundType.METAL).strength(5.0F, 10.0F).requiresCorrectToolForDrops(), + ieCompatPredicate + ); + + registerStairs( + new ResourceLocation("immersiveengineering", "storage_lead"), + "lead_block", + BlockBehaviour.Properties.of(Material.METAL).sound(SoundType.METAL).strength(5.0F, 10.0F).requiresCorrectToolForDrops(), + Blocks.AIR::defaultBlockState, + ieCompatPredicate + ); + registerWall( + new ResourceLocation("immersiveengineering", "storage_lead"), + "lead_block", + BlockBehaviour.Properties.of(Material.METAL).sound(SoundType.METAL).strength(5.0F, 10.0F).requiresCorrectToolForDrops(), + ieCompatPredicate + ); + + registerStairs( + new ResourceLocation("immersiveengineering", "storage_silver"), + "silver_block", + BlockBehaviour.Properties.of(Material.METAL).sound(SoundType.METAL).strength(5.0F, 10.0F).requiresCorrectToolForDrops(), + Blocks.AIR::defaultBlockState, + ieCompatPredicate + ); + registerWall( + new ResourceLocation("immersiveengineering", "storage_silver"), + "silver_block", + BlockBehaviour.Properties.of(Material.METAL).sound(SoundType.METAL).strength(5.0F, 10.0F).requiresCorrectToolForDrops(), + ieCompatPredicate + ); + + registerStairs( + new ResourceLocation("immersiveengineering", "storage_nickel"), + "nickel_block", + BlockBehaviour.Properties.of(Material.METAL).sound(SoundType.METAL).strength(5.0F, 10.0F).requiresCorrectToolForDrops(), + Blocks.AIR::defaultBlockState, + ieCompatPredicate + ); + registerWall( + new ResourceLocation("immersiveengineering", "storage_nickel"), + "nickel_block", + BlockBehaviour.Properties.of(Material.METAL).sound(SoundType.METAL).strength(5.0F, 10.0F).requiresCorrectToolForDrops(), + ieCompatPredicate + ); + + registerStairs( + new ResourceLocation("immersiveengineering", "storage_uranium"), + "uranium_block", + BlockBehaviour.Properties.of(Material.METAL).sound(SoundType.METAL).strength(5.0F, 10.0F).requiresCorrectToolForDrops(), + Blocks.AIR::defaultBlockState, + ieCompatPredicate + ); + registerWall( + new ResourceLocation("immersiveengineering", "storage_uranium"), + "uranium_block", + BlockBehaviour.Properties.of(Material.METAL).sound(SoundType.METAL).strength(5.0F, 10.0F).requiresCorrectToolForDrops(), + ieCompatPredicate + ); + + registerStairs( + new ResourceLocation("immersiveengineering", "storage_constantan"), + "constantan_block", + BlockBehaviour.Properties.of(Material.METAL).sound(SoundType.METAL).strength(5.0F, 10.0F).requiresCorrectToolForDrops(), + Blocks.AIR::defaultBlockState, + ieCompatPredicate + ); + registerWall( + new ResourceLocation("immersiveengineering", "storage_constantan"), + "constantan_block", + BlockBehaviour.Properties.of(Material.METAL).sound(SoundType.METAL).strength(5.0F, 10.0F).requiresCorrectToolForDrops(), + ieCompatPredicate + ); + + registerStairs( + new ResourceLocation("immersiveengineering", "storage_electrum"), + "electrum_block", + BlockBehaviour.Properties.of(Material.METAL).sound(SoundType.METAL).strength(5.0F, 10.0F).requiresCorrectToolForDrops(), + Blocks.AIR::defaultBlockState, + ieCompatPredicate + ); + registerWall( + new ResourceLocation("immersiveengineering", "storage_electrum"), + "electrum_block", + BlockBehaviour.Properties.of(Material.METAL).sound(SoundType.METAL).strength(5.0F, 10.0F).requiresCorrectToolForDrops(), + ieCompatPredicate + ); + + registerStairs( + new ResourceLocation("immersiveengineering", "storage_steel"), + "steel_block", + BlockBehaviour.Properties.of(Material.METAL).sound(SoundType.NETHERITE_BLOCK).strength(5.0F, 10.0F).requiresCorrectToolForDrops(), + Blocks.AIR::defaultBlockState, + ieCompatPredicate + ); + registerWall( + new ResourceLocation("immersiveengineering", "storage_steel"), + "steel_block", + BlockBehaviour.Properties.of(Material.METAL).sound(SoundType.NETHERITE_BLOCK).strength(5.0F, 10.0F).requiresCorrectToolForDrops(), + ieCompatPredicate + ); + } + } + + 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)) { + @Override + public void appendHoverText(@NotNull ItemStack itemStack, @Nullable Level level, @NotNull List components, @NotNull TooltipFlag flag) { + components.add(Component.translatable("desc.emeraldcraft.carpentry_table").withStyle(ChatFormatting.GRAY)); + } + } + ); + ECItems.REGISTER.register( + GLASS_KILN.getId().getPath(), + () -> new BlockItem(GLASS_KILN.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) { + @Override + public void appendHoverText(@NotNull ItemStack itemStack, @Nullable Level level, @NotNull List components, @NotNull TooltipFlag flag) { + components.add(Component.translatable("desc.emeraldcraft.glass_kiln").withStyle(ChatFormatting.GRAY)); + } + } + ); + ECItems.REGISTER.register( + MINERAL_TABLE.getId().getPath(), + () -> new BlockItem(MINERAL_TABLE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) { + @Override + public void appendHoverText(@NotNull ItemStack itemStack, @Nullable Level level, @NotNull List components, @NotNull TooltipFlag flag) { + components.add(Component.translatable("desc.emeraldcraft.mineral_table").withStyle(ChatFormatting.GRAY)); + } + } + ); + ECItems.REGISTER.register( + CRYSTALBALL_TABLE.getId().getPath(), + () -> new BlockItem(CRYSTALBALL_TABLE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) { + @Override + public void appendHoverText(@NotNull ItemStack itemStack, @Nullable Level level, @NotNull List components, @NotNull TooltipFlag flag) { + components.add(Component.translatable("desc.emeraldcraft.crystalball_table").withStyle(ChatFormatting.GRAY)); + } + } + ); + ECItems.REGISTER.register( + SQUEEZER.getId().getPath(), + () -> new BlockItem(SQUEEZER.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) { + @Override + public void appendHoverText(@NotNull ItemStack itemStack, @Nullable Level level, @NotNull List components, @NotNull TooltipFlag flag) { + components.add(Component.translatable("desc.emeraldcraft.squeezer").withStyle(ChatFormatting.GRAY)); + } + } + ); + ECItems.REGISTER.register( + CONTINUOUS_MINER.getId().getPath(), + () -> new BlockItem(CONTINUOUS_MINER.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) { + @Override + public void appendHoverText(@NotNull ItemStack itemStack, @Nullable Level level, @NotNull List components, @NotNull TooltipFlag flag) { + components.add(Component.translatable("desc.emeraldcraft.continuous_miner").withStyle(ChatFormatting.GRAY)); + } + } + ); + ECItems.REGISTER.register( + ICE_MAKER.getId().getPath(), + () -> new BlockItem(ICE_MAKER.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) { + @Override + public void appendHoverText(@NotNull ItemStack itemStack, @Nullable Level level, @NotNull List components, @NotNull TooltipFlag flag) { + components.add(Component.translatable("desc.emeraldcraft.ice_maker").withStyle(ChatFormatting.GRAY)); + } + } + ); + ECItems.REGISTER.register( + MELTER.getId().getPath(), + () -> new BlockItem(MELTER.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) { + @Override + public void appendHoverText(@NotNull ItemStack itemStack, @Nullable Level level, @NotNull List components, @NotNull TooltipFlag flag) { + components.add(Component.translatable("desc.emeraldcraft.melter").withStyle(ChatFormatting.GRAY)); + } + } + ); + } + } + + /* + 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 DARK_SAND_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.SAND, MaterialColor.COLOR_BROWN) + .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.COLOR_CYAN) + .requiresCorrectToolForDrops().strength(2.0F, 6.0F).sound(SoundType.NETHER_BRICKS); + public static final Supplier PURPLE_NETHER_BRICKS_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.STONE, MaterialColor.COLOR_PURPLE) + .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 VITRIFIED_SAND = new BlockEntry<>( + "vitrified_sand", SANDSTONE_PROPERTIES, Block::new + ); + + 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 DARK_SAND = new BlockEntry<>( + "dark_sand", DARK_SAND_PROPERTIES, (p) -> new SandBlock(10391046, 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 DARK_SANDSTONE = new BlockEntry<>( + "dark_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 SMOOTH_DARK_SANDSTONE = new BlockEntry<>( + "smooth_dark_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 CUT_DARK_SANDSTONE = new BlockEntry<>( + "cut_dark_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 PURPLE_NETHER_BRICKS = new BlockEntry<>( + "purple_nether_bricks", PURPLE_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(VITRIFIED_SAND.getId().getPath(), () -> new BlockItem(VITRIFIED_SAND.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + + 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(DARK_SAND.getId().getPath(), () -> new BlockItem(DARK_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(DARK_SANDSTONE.getId().getPath(), () -> new BlockItem(DARK_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(SMOOTH_DARK_SANDSTONE.getId().getPath(), () -> new BlockItem(SMOOTH_DARK_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(CUT_DARK_SANDSTONE.getId().getPath(), () -> new BlockItem(CUT_DARK_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(PURPLE_NETHER_BRICKS.getId().getPath(), () -> new BlockItem(PURPLE_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.DARK_SANDSTONE); + registerStairs(Decoration.SMOOTH_AZURE_SANDSTONE); + registerStairs(Decoration.SMOOTH_QUARTZ_SANDSTONE); + registerStairs(Decoration.SMOOTH_JADEITE_SANDSTONE); + registerStairs(Decoration.SMOOTH_EMERY_SANDSTONE); + registerStairs(Decoration.SMOOTH_DARK_SANDSTONE); + registerStairs(Decoration.BLUE_NETHER_BRICKS); + registerStairs(Decoration.PURPLE_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.DARK_SANDSTONE); + registerSlab(Decoration.SMOOTH_AZURE_SANDSTONE); + registerSlab(Decoration.SMOOTH_QUARTZ_SANDSTONE); + registerSlab(Decoration.SMOOTH_JADEITE_SANDSTONE); + registerSlab(Decoration.SMOOTH_EMERY_SANDSTONE); + registerSlab(Decoration.SMOOTH_DARK_SANDSTONE); + registerSlab(Decoration.CUT_AZURE_SANDSTONE); + registerSlab(Decoration.CUT_QUARTZ_SANDSTONE); + registerSlab(Decoration.CUT_JADEITE_SANDSTONE); + registerSlab(Decoration.CUT_EMERY_SANDSTONE); + registerSlab(Decoration.CUT_DARK_SANDSTONE); + registerSlab(Decoration.BLUE_NETHER_BRICKS); + registerSlab(Decoration.PURPLE_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.DARK_SANDSTONE); + registerWall(Decoration.BLUE_NETHER_BRICKS); + registerWall(Decoration.PURPLE_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 Supplier FLOWER_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.PLANT).noCollission().instabreak().sound(SoundType.GRASS); + public static final Supplier HIGAN_BANA_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.PLANT).noCollission().instabreak().randomTicks().sound(SoundType.GRASS); + public static final Supplier SAPLING_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.PLANT).noCollission().randomTicks().instabreak().sound(SoundType.GRASS); + public static final Supplier POTTED_FLOWER_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.DECORATION).instabreak().noOcclusion(); + public static final Supplier GINKGO_LOG_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, (blockState) -> + blockState.getValue(RotatedPillarBlock.AXIS) == Direction.Axis.Y ? + MaterialColor.TERRACOTTA_ORANGE : MaterialColor.TERRACOTTA_BROWN) + .strength(2.0F).sound(SoundType.WOOD); + public static final Supplier STRIPPED_GINKGO_LOG_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_ORANGE) + .strength(2.0F).sound(SoundType.WOOD); + public static final Supplier GINKGO_WOOD_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_BROWN) + .strength(2.0F).sound(SoundType.WOOD); + public static final Supplier PALM_LOG_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, (blockState) -> + blockState.getValue(RotatedPillarBlock.AXIS) == Direction.Axis.Y ? + MaterialColor.TERRACOTTA_BROWN : MaterialColor.COLOR_BLACK) + .strength(2.0F).sound(SoundType.WOOD); + public static final Supplier STRIPPED_PALM_LOG_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_BROWN) + .strength(2.0F).sound(SoundType.WOOD); + public static final Supplier PALM_WOOD_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.COLOR_BLACK) + .strength(2.0F).sound(SoundType.WOOD); + + public static final Supplier PEACH_LOG_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, (blockState) -> + blockState.getValue(RotatedPillarBlock.AXIS) == Direction.Axis.Y ? + MaterialColor.COLOR_MAGENTA : MaterialColor.TERRACOTTA_YELLOW) + .strength(2.0F).sound(SoundType.WOOD); + public static final Supplier STRIPPED_PEACH_LOG_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.COLOR_MAGENTA) + .strength(2.0F).sound(SoundType.WOOD); + public static final Supplier PEACH_WOOD_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_YELLOW) + .strength(2.0F).sound(SoundType.WOOD); + + public static final Supplier PURPURACEUS_STEM_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, (blockState) -> + blockState.getValue(RotatedPillarBlock.AXIS) == Direction.Axis.Y ? + MaterialColor.COLOR_PURPLE : MaterialColor.TERRACOTTA_PURPLE) + .strength(2.0F).sound(SoundType.WOOD); + public static final Supplier STRIPPED_PURPURACEUS_STEM_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.COLOR_PURPLE) + .strength(2.0F).sound(SoundType.WOOD); + public static final Supplier PURPURACEUS_HYPHAE_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_PURPLE) + .strength(2.0F).sound(SoundType.WOOD); + + public static final Supplier LEAVES_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.LEAVES).strength(0.2F).randomTicks().sound(SoundType.GRASS).noOcclusion() + .isValidSpawn((blockState, level, pos, entityType) -> entityType == EntityType.OCELOT || entityType == EntityType.PARROT) + .isSuffocating((blockState, level, pos) -> false) + .isViewBlocking((blockState, level, pos) -> false); + + public static final Supplier WART_BLOCKS_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.GRASS, MaterialColor.COLOR_PURPLE).strength(1.0F).sound(SoundType.WART_BLOCK); + + public static final Supplier GINKGO_PLANKS_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.TERRACOTTA_ORANGE) + .strength(2.0F, 3.0F).sound(SoundType.WOOD); + public static final Supplier PALM_PLANKS_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.COLOR_BROWN) + .strength(2.0F, 3.0F).sound(SoundType.WOOD); + public static final Supplier PEACH_PLANKS_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.COLOR_MAGENTA) + .strength(2.0F, 3.0F).sound(SoundType.WOOD); + public static final Supplier PURPURACEUS_PLANKS_PROPERTIES = () -> + BlockBehaviour.Properties.of(Material.WOOD, MaterialColor.COLOR_PURPLE) + .strength(2.0F, 3.0F).sound(SoundType.WOOD); + + + public static final BlockEntry WARPED_WART = new BlockEntry<>( + "warped_wart", WarpedWartBlock.PROPERTIES, WarpedWartBlock::new + ); + + public static final BlockEntry CHILI = new BlockEntry<>( + "chili", ChiliBlock.PROPERTIES, ChiliBlock::new + ); + + public static final BlockEntry CYAN_PETUNIA = new BlockEntry<>( + "cyan_petunia", FLOWER_PROPERTIES, (props) -> new FlowerBlock(MobEffects.WATER_BREATHING, 8, props) + ); + public static final BlockEntry MAGENTA_PETUNIA = new BlockEntry<>( + "magenta_petunia", FLOWER_PROPERTIES, (props) -> new FlowerBlock(MobEffects.WATER_BREATHING, 8, props) + ); + public static final BlockEntry HIGAN_BANA = new BlockEntry<>( + "higan_bana", HIGAN_BANA_PROPERTIES, (props) -> new HiganBanaFlowerBlock(MobEffects.LEVITATION, 12, props) + ); + public static final BlockEntry POTTED_CYAN_PETUNIA = new BlockEntry<>( + "potted_cyan_petunia", POTTED_FLOWER_PROPERTIES, (props) -> new FlowerPotBlock( + null, CYAN_PETUNIA, props + ) + ); + public static final BlockEntry POTTED_MAGENTA_PETUNIA = new BlockEntry<>( + "potted_magenta_petunia", POTTED_FLOWER_PROPERTIES, (props) -> new FlowerPotBlock( + null, MAGENTA_PETUNIA, props + ) + ); + public static final BlockEntry POTTED_HIGAN_BANA = new BlockEntry<>( + "potted_higan_bana", POTTED_FLOWER_PROPERTIES, (props) -> new FlowerPotBlock( + null, HIGAN_BANA, props + ) + ); + + //GINKGO + public static final BlockEntry GINKGO_SAPLING = new BlockEntry<>( + "ginkgo_sapling", SAPLING_PROPERTIES, (props) -> new SaplingBlock(new GinkgoTreeGrower(), props) + ); + public static final BlockEntry POTTED_GINKGO_SAPLING = new BlockEntry<>( + "potted_ginkgo_sapling", POTTED_FLOWER_PROPERTIES, (props) -> new FlowerPotBlock( + null, GINKGO_SAPLING, props + ) + ); + public static final BlockEntry GINKGO_LOG = new BlockEntry<>( + "ginkgo_log", GINKGO_LOG_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry STRIPPED_GINKGO_LOG = new BlockEntry<>( + "stripped_ginkgo_log", STRIPPED_GINKGO_LOG_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry GINKGO_WOOD = new BlockEntry<>( + "ginkgo_wood", GINKGO_WOOD_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry STRIPPED_GINKGO_WOOD = new BlockEntry<>( + "stripped_ginkgo_wood", STRIPPED_GINKGO_LOG_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry GINKGO_LEAVES = new BlockEntry<>( + "ginkgo_leaves", LEAVES_PROPERTIES, LeavesBlock::new + ); + + public static final BlockEntry GINKGO_PLANKS = new BlockEntry<>( + "ginkgo_planks", GINKGO_PLANKS_PROPERTIES, Block::new + ); + + //PALM + public static final BlockEntry PALM_SAPLING = new BlockEntry<>( + "palm_sapling", SAPLING_PROPERTIES, (props) -> new SaplingBlock(new PalmTreeGrower(), props) + ); + public static final BlockEntry POTTED_PALM_SAPLING = new BlockEntry<>( + "potted_palm_sapling", POTTED_FLOWER_PROPERTIES, (props) -> new FlowerPotBlock( + null, PALM_SAPLING, props + ) + ); + public static final BlockEntry PALM_LOG = new BlockEntry<>( + "palm_log", PALM_LOG_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry STRIPPED_PALM_LOG = new BlockEntry<>( + "stripped_palm_log", STRIPPED_PALM_LOG_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry PALM_WOOD = new BlockEntry<>( + "palm_wood", PALM_WOOD_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry STRIPPED_PALM_WOOD = new BlockEntry<>( + "stripped_palm_wood", STRIPPED_PALM_LOG_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry PALM_LEAVES = new BlockEntry<>( + "palm_leaves", LEAVES_PROPERTIES, LeavesBlock::new + ); + + public static final BlockEntry PALM_PLANKS = new BlockEntry<>( + "palm_planks", PALM_PLANKS_PROPERTIES, Block::new + ); + + //PEACH + public static final BlockEntry PEACH_SAPLING = new BlockEntry<>( + "peach_sapling", SAPLING_PROPERTIES, (props) -> new SaplingBlock(new PeachTreeGrower(), props) + ); + public static final BlockEntry POTTED_PEACH_SAPLING = new BlockEntry<>( + "potted_peach_sapling", POTTED_FLOWER_PROPERTIES, (props) -> new FlowerPotBlock( + null, PEACH_SAPLING, props + ) + ); + public static final BlockEntry PEACH_LOG = new BlockEntry<>( + "peach_log", PEACH_LOG_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry STRIPPED_PEACH_LOG = new BlockEntry<>( + "stripped_peach_log", STRIPPED_PEACH_LOG_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry PEACH_WOOD = new BlockEntry<>( + "peach_wood", PEACH_WOOD_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry STRIPPED_PEACH_WOOD = new BlockEntry<>( + "stripped_peach_wood", STRIPPED_PEACH_LOG_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry PEACH_LEAVES = new BlockEntry<>( + "peach_leaves", LEAVES_PROPERTIES, LeavesBlock::new + ); + + public static final BlockEntry PEACH_PLANKS = new BlockEntry<>( + "peach_planks", PEACH_PLANKS_PROPERTIES, Block::new + ); + + //PURPURACEUS + public static final BlockEntry PURPURACEUS_FUNGUS = new BlockEntry<>( + "purpuraceus_fungus", + () -> BlockBehaviour.Properties.of(Material.PLANT, MaterialColor.COLOR_PURPLE).instabreak().noCollission().sound(SoundType.FUNGUS), + (props) -> new FungusBlock(props, () -> ECConfiguredFeatures.TreeConfiguredFeatures.PURPURACEUS_FUNGUS_PLANTED) + ); + public static final BlockEntry POTTED_PURPURACEUS_FUNGUS = new BlockEntry<>( + "potted_purpuraceus_fungus", POTTED_FLOWER_PROPERTIES, (props) -> new FlowerPotBlock( + null, PURPURACEUS_FUNGUS, props + ) + ); + public static final BlockEntry PURPURACEUS_STEM = new BlockEntry<>( + "purpuraceus_stem", PURPURACEUS_STEM_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry STRIPPED_PURPURACEUS_STEM = new BlockEntry<>( + "stripped_purpuraceus_stem", STRIPPED_PURPURACEUS_STEM_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry PURPURACEUS_HYPHAE = new BlockEntry<>( + "purpuraceus_hyphae", PURPURACEUS_HYPHAE_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry STRIPPED_PURPURACEUS_HYPHAE = new BlockEntry<>( + "stripped_purpuraceus_hyphae", STRIPPED_PURPURACEUS_STEM_PROPERTIES, RotatedPillarBlock::new + ); + public static final BlockEntry PURPURACEUS_WART_BLOCK = new BlockEntry<>( + "purpuraceus_wart_block", WART_BLOCKS_PROPERTIES, Block::new + ); + + public static final BlockEntry PURPURACEUS_PLANKS = new BlockEntry<>( + "purpuraceus_planks", PURPURACEUS_PLANKS_PROPERTIES, Block::new + ); + + public static final BlockEntry PURPURACEUS_NYLIUM = new BlockEntry<>( + "purpuraceus_nylium", + () -> BlockBehaviour.Properties.of(Material.STONE, MaterialColor.COLOR_PURPLE) + .requiresCorrectToolForDrops().strength(0.4F).sound(SoundType.NYLIUM).randomTicks(), + PurpuraceusNyliumBlock::new + ); + + public static final BlockEntry PURPURACEUS_ROOTS = new BlockEntry<>( + "purpuraceus_roots", + () -> BlockBehaviour.Properties.of(Material.REPLACEABLE_FIREPROOF_PLANT, MaterialColor.COLOR_PURPLE) + .noCollission().instabreak().sound(SoundType.ROOTS), + RootsBlock::new + ); + public static final BlockEntry POTTED_PURPURACEUS_ROOTS = new BlockEntry<>( + "potted_purpuraceus_roots", POTTED_FLOWER_PROPERTIES, (props) -> new FlowerPotBlock( + null, PURPURACEUS_ROOTS, props + ) + ); + + + private static void init() { + ECItems.REGISTER.register(CYAN_PETUNIA.getId().getPath(), () -> new BlockItem(CYAN_PETUNIA.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(MAGENTA_PETUNIA.getId().getPath(), () -> new BlockItem(MAGENTA_PETUNIA.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(HIGAN_BANA.getId().getPath(), () -> new BlockItem(HIGAN_BANA.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(GINKGO_SAPLING.getId().getPath(), () -> new BlockItem(GINKGO_SAPLING.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(GINKGO_LOG.getId().getPath(), () -> new BlockItem(GINKGO_LOG.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(STRIPPED_GINKGO_LOG.getId().getPath(), () -> new BlockItem(STRIPPED_GINKGO_LOG.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(GINKGO_WOOD.getId().getPath(), () -> new BlockItem(GINKGO_WOOD.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(STRIPPED_GINKGO_WOOD.getId().getPath(), () -> new BlockItem(STRIPPED_GINKGO_WOOD.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(GINKGO_LEAVES.getId().getPath(), () -> new BlockItem(GINKGO_LEAVES.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(GINKGO_PLANKS.getId().getPath(), () -> new BlockItem(GINKGO_PLANKS.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PALM_SAPLING.getId().getPath(), () -> new BlockItem(PALM_SAPLING.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PALM_LOG.getId().getPath(), () -> new BlockItem(PALM_LOG.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(STRIPPED_PALM_LOG.getId().getPath(), () -> new BlockItem(STRIPPED_PALM_LOG.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PALM_WOOD.getId().getPath(), () -> new BlockItem(PALM_WOOD.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(STRIPPED_PALM_WOOD.getId().getPath(), () -> new BlockItem(STRIPPED_PALM_WOOD.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PALM_LEAVES.getId().getPath(), () -> new BlockItem(PALM_LEAVES.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PALM_PLANKS.getId().getPath(), () -> new BlockItem(PALM_PLANKS.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PEACH_SAPLING.getId().getPath(), () -> new BlockItem(PEACH_SAPLING.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PEACH_LOG.getId().getPath(), () -> new BlockItem(PEACH_LOG.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(STRIPPED_PEACH_LOG.getId().getPath(), () -> new BlockItem(STRIPPED_PEACH_LOG.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PEACH_WOOD.getId().getPath(), () -> new BlockItem(PEACH_WOOD.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(STRIPPED_PEACH_WOOD.getId().getPath(), () -> new BlockItem(STRIPPED_PEACH_WOOD.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PEACH_LEAVES.getId().getPath(), () -> new BlockItem(PEACH_LEAVES.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PEACH_PLANKS.getId().getPath(), () -> new BlockItem(PEACH_PLANKS.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PURPURACEUS_FUNGUS.getId().getPath(), () -> new BlockItem(PURPURACEUS_FUNGUS.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PURPURACEUS_STEM.getId().getPath(), () -> new BlockItem(PURPURACEUS_STEM.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(STRIPPED_PURPURACEUS_STEM.getId().getPath(), () -> new BlockItem(STRIPPED_PURPURACEUS_STEM.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PURPURACEUS_HYPHAE.getId().getPath(), () -> new BlockItem(PURPURACEUS_HYPHAE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(STRIPPED_PURPURACEUS_HYPHAE.getId().getPath(), () -> new BlockItem(STRIPPED_PURPURACEUS_HYPHAE.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PURPURACEUS_WART_BLOCK.getId().getPath(), () -> new BlockItem(PURPURACEUS_WART_BLOCK.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PURPURACEUS_PLANKS.getId().getPath(), () -> new BlockItem(PURPURACEUS_PLANKS.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PURPURACEUS_NYLIUM.getId().getPath(), () -> new BlockItem(PURPURACEUS_NYLIUM.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + ECItems.REGISTER.register(PURPURACEUS_ROOTS.getId().getPath(), () -> new BlockItem(PURPURACEUS_ROOTS.get(), new Item.Properties().tab(EmeraldCraft.ITEM_GROUP))); + + + registerStairs(Plant.GINKGO_PLANKS); + registerSlab(Plant.GINKGO_PLANKS); + registerFence(Plant.GINKGO_PLANKS); + registerFenceGate(Plant.GINKGO_PLANKS); + registerDoor(Plant.GINKGO_PLANKS); + registerTrapDoor(Plant.GINKGO_PLANKS); + registerWoodPressurePlate(Plant.GINKGO_PLANKS); + registerWoodButton(Plant.GINKGO_PLANKS); + registerSign(Plant.GINKGO_PLANKS, ECWoodType.GINKGO); + registerStairs(Plant.PALM_PLANKS); + registerSlab(Plant.PALM_PLANKS); + registerFence(Plant.PALM_PLANKS); + registerFenceGate(Plant.PALM_PLANKS); + registerDoor(Plant.PALM_PLANKS); + registerTrapDoor(Plant.PALM_PLANKS); + registerWoodPressurePlate(Plant.PALM_PLANKS); + registerWoodButton(Plant.PALM_PLANKS); + registerSign(Plant.PALM_PLANKS, ECWoodType.PALM); + registerStairs(Plant.PEACH_PLANKS); + registerSlab(Plant.PEACH_PLANKS); + registerFence(Plant.PEACH_PLANKS); + registerFenceGate(Plant.PEACH_PLANKS); + registerDoor(Plant.PEACH_PLANKS); + registerTrapDoor(Plant.PEACH_PLANKS); + registerWoodPressurePlate(Plant.PEACH_PLANKS); + registerWoodButton(Plant.PEACH_PLANKS); + registerSign(Plant.PEACH_PLANKS, ECWoodType.PEACH); + registerStairs(Plant.PURPURACEUS_PLANKS); + registerSlab(Plant.PURPURACEUS_PLANKS); + registerFence(Plant.PURPURACEUS_PLANKS); + registerFenceGate(Plant.PURPURACEUS_PLANKS); + registerDoor(Plant.PURPURACEUS_PLANKS); + registerTrapDoor(Plant.PURPURACEUS_PLANKS); + registerWoodPressurePlate(Plant.PURPURACEUS_PLANKS); + registerWoodButton(Plant.PURPURACEUS_PLANKS); + registerSign(Plant.PURPURACEUS_PLANKS, ECWoodType.PURPURACEUS); + } + } + + 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 Map> TO_FENCE = new HashMap<>(); + public static final Map> TO_FENCE_GATE = new HashMap<>(); + public static final Map> TO_DOOR = new HashMap<>(); + public static final Map> TO_TRAPDOOR = new HashMap<>(); + public static final Map> TO_PRESSURE_PLATE = new HashMap<>(); + public static final Map> TO_BUTTON = new HashMap<>(); + public static final Map, BlockEntry>> TO_SIGN = 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(); + } + + @Override @NotNull + public Item asItem() + { + return get().asItem(); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBrewingRecipes.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBrewingRecipes.java new file mode 100644 index 00000000..e5c74a89 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECBrewingRecipes.java @@ -0,0 +1,97 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.alchemy.Potion; +import net.minecraft.world.item.alchemy.PotionUtils; +import net.minecraft.world.item.alchemy.Potions; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.brewing.BrewingRecipe; +import net.minecraftforge.common.brewing.BrewingRecipeRegistry; +import org.jetbrains.annotations.NotNull; + +public class ECBrewingRecipes { + public static void init() { + addFullRecipe(Potions.WEAKNESS, Potions.LONG_WEAKNESS, null, ECItems.WARPED_WART, ECPotions.HUNGER, ECPotions.LONG_HUNGER, ECPotions.STRONG_HUNGER); + addFullRecipe(Potions.POISON, Potions.LONG_POISON, Potions.STRONG_POISON, ECItems.WARPED_WART, ECPotions.WITHER, ECPotions.LONG_WITHER, ECPotions.STRONG_WITHER); + addFullRecipe(Potions.REGENERATION, Potions.LONG_REGENERATION, Potions.STRONG_REGENERATION, ECItems.WARPED_WART, ECPotions.ABSORPTION, ECPotions.LONG_ABSORPTION, ECPotions.STRONG_ABSORPTION); + addFullRecipeWithoutStronger(Potions.NIGHT_VISION, Potions.LONG_NIGHT_VISION, ECItems.WARPED_WART, ECPotions.BLINDNESS, ECPotions.LONG_BLINDNESS); + addFullRecipeWithoutLonger(Potions.HEALING, Potions.STRONG_HEALING, ECItems.WARPED_WART, ECPotions.SATURATION, ECPotions.STRONG_SATURATION); + addFullRecipeWithoutStronger(Potions.AWKWARD, null, Items.GLOW_BERRIES, ECPotions.GLOWING, ECPotions.LONG_GLOWING); + } + + @SuppressWarnings("SameParameterValue") + private static void addFullRecipe(Potion input, Potion input_longer, Potion input_stronger, ItemLike add, Potion origin, Potion longer, Potion stronger) { + addRecipe(input, add, origin); + if(input_longer != null) { + addRecipe(input_longer, add, longer); + } + if(input_stronger != null) { + addRecipe(input_stronger, add, stronger); + } + addProlongRecipe(origin, longer); + addStrengthenRecipe(origin, stronger); + } + + @SuppressWarnings("SameParameterValue") + private static void addFullRecipeWithoutStronger(Potion input, Potion input_longer, ItemLike add, Potion origin, Potion longer) { + addRecipe(input, add, origin); + if(input_longer != null) { + addRecipe(input_longer, add, longer); + } + addProlongRecipe(origin, longer); + } + + @SuppressWarnings("SameParameterValue") + private static void addFullRecipeWithoutLonger(Potion input, Potion input_stronger, ItemLike add, Potion origin, Potion stronger) { + addRecipe(input, add, origin); + if(input_stronger != null) { + addRecipe(input_stronger, add, stronger); + } + addStrengthenRecipe(origin, stronger); + } + + private static void addProlongRecipe(Potion origin, Potion longer) { + addRecipe(origin, Items.REDSTONE, longer); + } + + private static void addStrengthenRecipe(Potion origin, Potion stronger) { + addRecipe(origin, Items.GLOWSTONE_DUST, stronger); + } + + private static void addRecipe(Potion input, ItemLike add, Potion output) { + BrewingRecipeRegistry.addRecipe(new ECBrewingRecipe( + PotionUtils.setPotion(new ItemStack(Items.POTION), input), + add, + PotionUtils.setPotion(new ItemStack(Items.POTION), output) + )); + BrewingRecipeRegistry.addRecipe(new ECBrewingRecipe( + PotionUtils.setPotion(new ItemStack(Items.SPLASH_POTION), input), + add, + PotionUtils.setPotion(new ItemStack(Items.SPLASH_POTION), output) + )); + BrewingRecipeRegistry.addRecipe(new ECBrewingRecipe( + PotionUtils.setPotion(new ItemStack(Items.LINGERING_POTION), input), + add, + PotionUtils.setPotion(new ItemStack(Items.LINGERING_POTION), output) + )); + } + + private static final class ECBrewingRecipe extends BrewingRecipe { + public ECBrewingRecipe(ItemStack input, ItemLike add, ItemStack output) { + super(Ingredient.of(input), Ingredient.of(add), output); + } + + @Override + public boolean isInput(@NotNull ItemStack input) { + ItemStack[] itemStacks = this.getInput().getItems(); + for(ItemStack itemstack : itemStacks) { + if (itemstack.sameItem(input) && PotionUtils.getPotion(input).equals(PotionUtils.getPotion(itemstack))) { + return true; + } + } + return false; + } + } +} 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..57394f7f --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECConfiguredFeatures.java @@ -0,0 +1,308 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.google.common.collect.ImmutableList; +import net.minecraft.core.Holder; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.data.worldgen.features.OreFeatures; +import net.minecraft.data.worldgen.placement.PlacementUtils; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.random.SimpleWeightedRandomList; +import net.minecraft.util.valueproviders.ConstantInt; +import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.HugeFungusConfiguration; +import net.minecraft.world.level.levelgen.feature.WeightedPlacedFeature; +import net.minecraft.world.level.levelgen.feature.configurations.*; +import net.minecraft.world.level.levelgen.feature.featuresize.ThreeLayersFeatureSize; +import net.minecraft.world.level.levelgen.feature.featuresize.TwoLayersFeatureSize; +import net.minecraft.world.level.levelgen.feature.foliageplacers.AcaciaFoliagePlacer; +import net.minecraft.world.level.levelgen.feature.foliageplacers.BlobFoliagePlacer; +import net.minecraft.world.level.levelgen.feature.foliageplacers.DarkOakFoliagePlacer; +import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; +import net.minecraft.world.level.levelgen.feature.stateproviders.NoiseThresholdProvider; +import net.minecraft.world.level.levelgen.feature.stateproviders.WeightedStateProvider; +import net.minecraft.world.level.levelgen.feature.trunkplacers.StraightTrunkPlacer; +import net.minecraft.world.level.levelgen.synth.NormalNoise; + +import java.util.List; +import java.util.OptionalInt; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public final class ECConfiguredFeatures { + + + public static final class OreConfiguredFeatures { + public static final Holder> ORE_DEBRIS_EXTRA = register( + "ore_debris_extra", Feature.SCATTERED_ORE, new OreConfiguration( + OreFeatures.NETHER_ORE_REPLACEABLES, + Blocks.ANCIENT_DEBRIS.defaultBlockState(), + 4, 0.8F + ) + ); + public static final Holder> ORE_QUARTZ_EXTRA = register( + "ore_quartz_extra", Feature.ORE, new OreConfiguration( + OreFeatures.NETHERRACK, + Blocks.NETHER_QUARTZ_ORE.defaultBlockState(), + 16 + ) + ); + + private OreConfiguredFeatures() {} + } + + public static final class StructureConfiguredFeatures { + public static final Holder> ZOMBIE_VILLAGER_ROOM = register( + "zombie_villager_room", ECFeatures.ZOMBIE_VILLAGER_ROOM, FeatureConfiguration.NONE + ); + + private StructureConfiguredFeatures() {} + } + + public static final class TreeConfiguredFeatures { + public static final Block GINKGO_LOG = ECBlocks.Plant.GINKGO_LOG.get(); + public static final Block GINKGO_LEAVES = ECBlocks.Plant.GINKGO_LEAVES.get(); + public static final Block PALM_LOG = ECBlocks.Plant.PALM_LOG.get(); + public static final Block PALM_LEAVES = ECBlocks.Plant.PALM_LEAVES.get(); + public static final Block PEACH_LOG = ECBlocks.Plant.PEACH_LOG.get(); + public static final Block PEACH_LEAVES = ECBlocks.Plant.PEACH_LEAVES.get(); + + public static final Holder> GINKGO_1 = register( + "ginkgo_1", Feature.TREE, createStraightBlobGinkgoTree( + GINKGO_LOG, GINKGO_LEAVES, 3, 2, 1, 2 + ).build() + ); + public static final Holder> GINKGO_2 = register( + "ginkgo_2", Feature.TREE, createStraightBlobGinkgoTree( + GINKGO_LOG, GINKGO_LEAVES, 3, 2, 2, 3 + ).build() + ); + public static final Holder> GINKGO_3 = register( + "ginkgo_3", Feature.TREE, createStraightBlobGinkgoTree( + GINKGO_LOG, GINKGO_LEAVES, 4, 2, 6, 3 + ).build() + ); + + public static final Holder> PALM_1 = register( + "palm_1", Feature.TREE, createStraightBlobPalmTree( + PALM_LOG, PALM_LEAVES, 4, 2, 1, 2 + ).ignoreVines().build() + ); + public static final Holder> PALM_2 = register( + "palm_2", Feature.TREE, createStraightBlobPalmTree( + PALM_LOG, PALM_LEAVES, 5, 2, 2, 3 + ).ignoreVines().build() + ); + public static final Holder> PALM_3 = register( + "palm_3", Feature.TREE, createStraightBlobPalmTree( + PALM_LOG, PALM_LEAVES, 6, 2, 6, 3 + ).ignoreVines().build() + ); + + public static final Holder> PEACH_1 = register( + "peach_1", Feature.TREE, createStraightBlobPeachTree( + PEACH_LOG, PEACH_LEAVES, 4, 2, 1, 2 + ).ignoreVines().build() + ); + public static final Holder> PEACH_2 = register( + "peach_2", Feature.TREE, createStraightBlobPeachTree( + PEACH_LOG, PEACH_LEAVES, 5, 2, 2, 3 + ).ignoreVines().build() + ); + public static final Holder> PEACH_3 = register( + "peach_3", Feature.TREE, createStraightBlobPeachTree( + PEACH_LOG, PEACH_LEAVES, 6, 2, 1, 3 + ).ignoreVines().build() + ); + + public static final Holder> PURPURACEUS_FUNGUS = register( + "purpuraceus_fungus", Feature.HUGE_FUNGUS, new HugeFungusConfiguration( + ECBlocks.Plant.PURPURACEUS_NYLIUM.defaultBlockState(), + ECBlocks.Plant.PURPURACEUS_STEM.defaultBlockState(), + ECBlocks.Plant.PURPURACEUS_WART_BLOCK.defaultBlockState(), + Blocks.SHROOMLIGHT.defaultBlockState(), false + ) + ); + public static final Holder> PURPURACEUS_FUNGUS_PLANTED = register( + "purpuraceus_fungus_planted", Feature.HUGE_FUNGUS, new HugeFungusConfiguration( + ECBlocks.Plant.PURPURACEUS_NYLIUM.defaultBlockState(), + ECBlocks.Plant.PURPURACEUS_STEM.defaultBlockState(), + ECBlocks.Plant.PURPURACEUS_WART_BLOCK.defaultBlockState(), + Blocks.SHROOMLIGHT.defaultBlockState(), true + ) + ); + + + public static final Holder> TREES_GINKGO = register( + "trees_ginkgo", Feature.RANDOM_SELECTOR, new RandomFeatureConfiguration( + List.of( + new WeightedPlacedFeature(PlacementUtils.inlinePlaced(TreeConfiguredFeatures.GINKGO_2), 0.3F), + new WeightedPlacedFeature(PlacementUtils.inlinePlaced(TreeConfiguredFeatures.GINKGO_3), 0.2F) + ), + PlacementUtils.inlinePlaced(TreeConfiguredFeatures.GINKGO_1) + ) + ); + public static final Holder> TREES_PALM = register( + "trees_palm", Feature.RANDOM_SELECTOR, new RandomFeatureConfiguration( + List.of( + new WeightedPlacedFeature(PlacementUtils.inlinePlaced(TreeConfiguredFeatures.PALM_2), 0.3F), + new WeightedPlacedFeature(PlacementUtils.inlinePlaced(TreeConfiguredFeatures.PALM_3), 0.2F) + ), + PlacementUtils.inlinePlaced(TreeConfiguredFeatures.PALM_1) + ) + ); + public static final Holder> TREES_PEACH = register( + "trees_peach", Feature.RANDOM_SELECTOR, new RandomFeatureConfiguration( + ImmutableList.of( + new WeightedPlacedFeature(PlacementUtils.inlinePlaced(TreeConfiguredFeatures.PEACH_2), 0.3F), + new WeightedPlacedFeature(PlacementUtils.inlinePlaced(TreeConfiguredFeatures.PEACH_3), 0.2F) + ), + PlacementUtils.inlinePlaced(TreeConfiguredFeatures.PEACH_1) + ) + ); + + @SuppressWarnings("SameParameterValue") + private static TreeConfiguration.TreeConfigurationBuilder createStraightBlobGinkgoTree(Block logBlock, Block leavesBlock, + int baseHeight, int heightRandA, int heightRandB, + int radius) { + return new TreeConfiguration.TreeConfigurationBuilder( + BlockStateProvider.simple(logBlock), + new StraightTrunkPlacer(baseHeight, heightRandA, heightRandB), + BlockStateProvider.simple(leavesBlock), + new BlobFoliagePlacer(ConstantInt.of(radius), ConstantInt.of(0), 4), + new TwoLayersFeatureSize(1, 0, 1) + ); + } + + @SuppressWarnings("SameParameterValue") + private static TreeConfiguration.TreeConfigurationBuilder createStraightBlobPalmTree(Block logBlock, Block leavesBlock, + int baseHeight, int heightRandA, int heightRandB, + int radius) { + return new TreeConfiguration.TreeConfigurationBuilder( + BlockStateProvider.simple(logBlock), + new StraightTrunkPlacer(baseHeight, heightRandA, heightRandB), + BlockStateProvider.simple(leavesBlock), + new AcaciaFoliagePlacer(ConstantInt.of(radius), ConstantInt.of(0)), + new TwoLayersFeatureSize(1, 0, 2) + ); + } + + @SuppressWarnings("SameParameterValue") + private static TreeConfiguration.TreeConfigurationBuilder createStraightBlobPeachTree(Block logBlock, Block leavesBlock, + int baseHeight, int heightRandA, int heightRandB, + int radius) { + return new TreeConfiguration.TreeConfigurationBuilder( + BlockStateProvider.simple(logBlock), + new StraightTrunkPlacer(baseHeight, heightRandA, heightRandB), + BlockStateProvider.simple(leavesBlock), + new DarkOakFoliagePlacer(ConstantInt.of(radius), ConstantInt.of(0)), + new ThreeLayersFeatureSize(1, 1, 0, 1, 2, OptionalInt.empty()) + ); + } + + private TreeConfiguredFeatures() {} + } + + public static final class VegetationFeatures { + public static final Block CYAN_PETUNIA = ECBlocks.Plant.CYAN_PETUNIA.get(); + public static final Block MAGENTA_PETUNIA = ECBlocks.Plant.MAGENTA_PETUNIA.get(); + + public static final Holder> FLOWER_PETUNIA_PLAINS = register( + "flower_petunia_plains", Feature.FLOWER, new RandomPatchConfiguration( + 64, 6, 2, PlacementUtils.onlyWhenEmpty( + Feature.SIMPLE_BLOCK, new SimpleBlockConfiguration(new NoiseThresholdProvider( + 2345L, new NormalNoise.NoiseParameters(0, 1.0D), 0.005F, 0.5F, 0.75F, + Blocks.ALLIUM.defaultBlockState(), + List.of( + CYAN_PETUNIA.defaultBlockState(), + MAGENTA_PETUNIA.defaultBlockState() + ), List.of( + Blocks.POPPY.defaultBlockState(), + Blocks.DANDELION.defaultBlockState() + ) + )) + ) + ) + ); + + public static final Holder> FLOWER_HIGAN_BANA = register( + "flower_higan_bana", Feature.FLOWER, new RandomPatchConfiguration( + 96, 7, 2, PlacementUtils.onlyWhenEmpty( + Feature.SIMPLE_BLOCK, new SimpleBlockConfiguration( + BlockStateProvider.simple(ECBlocks.Plant.HIGAN_BANA.defaultBlockState()) + ) + ) + ) + ); + + public static final WeightedStateProvider PURPURACEUS_VEGETATION_PROVIDER = new WeightedStateProvider( + SimpleWeightedRandomList.builder() + .add(Blocks.CRIMSON_ROOTS.defaultBlockState(), 2) + .add(Blocks.WARPED_ROOTS.defaultBlockState(), 2) + .add(ECBlocks.Plant.PURPURACEUS_FUNGUS.defaultBlockState(), 16) + .add(ECBlocks.Plant.PURPURACEUS_ROOTS.defaultBlockState(), 80) + ); + public static final Holder> PURPURACEUS_SWAMP_VEGETATION = register( + "purpuraceus_forest_vegetation", Feature.NETHER_FOREST_VEGETATION, + new NetherForestVegetationConfig(PURPURACEUS_VEGETATION_PROVIDER, 8, 4) + ); + public static final Holder> PURPURACEUS_SWAMP_VEGETATION_BONEMEAL = register( + "purpuraceus_forest_vegetation_bonemeal", Feature.NETHER_FOREST_VEGETATION, + new NetherForestVegetationConfig(PURPURACEUS_VEGETATION_PROVIDER, 3, 1) + ); + } + + public static final class SpecialFeatures { + public static final Holder> VOLCANIC_CAVES_LAVA_POOL = register( + "volcanic_caves_lava_pool", ECFeatures.VOLCANIC_CAVES_LAVA_POOL, FeatureConfiguration.NONE + ); + + public static final Holder> XANADU_DELTA = register( + "xanadu_delta", Feature.DELTA_FEATURE, + new DeltaFeatureConfiguration( + Blocks.WATER.defaultBlockState(), + Blocks.MOSS_BLOCK.defaultBlockState(), + UniformInt.of(3, 9), + ConstantInt.of(0) + ) + ); + + public static final Holder> KARST_DELTA = register( + "karst_delta", Feature.DELTA_FEATURE, + new DeltaFeatureConfiguration( + Blocks.WATER.defaultBlockState(), + Blocks.GRAVEL.defaultBlockState(), + UniformInt.of(5, 12), + UniformInt.of(0, 2) + ) + ); + + public static final Holder> PURPURACEUS_SWAMP_DELTA = register( + "purpuraceus_swamp_delta", Feature.DELTA_FEATURE, + new DeltaFeatureConfiguration( + Blocks.MAGMA_BLOCK.defaultBlockState(), + ECBlocks.Plant.PURPURACEUS_NYLIUM.defaultBlockState(), + UniformInt.of(2, 7), + UniformInt.of(0, 2) + ) + ); + + public static final Holder> PURPURACEUS_SWAMP_LAVA_DELTA = register( + "purpuraceus_swamp_lava_delta", Feature.DELTA_FEATURE, + new DeltaFeatureConfiguration( + Blocks.LAVA.defaultBlockState(), + ECBlocks.Plant.PURPURACEUS_NYLIUM.defaultBlockState(), + UniformInt.of(4, 10), + UniformInt.of(0, 2) + ) + ); + } + + private static > Holder> register(String id, F f, FC fc) { + return BuiltinRegistries.registerExact(BuiltinRegistries.CONFIGURED_FEATURE, new ResourceLocation(MODID, id).toString(), new ConfiguredFeature<>(f, fc)); + } +} 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..0ab6c95a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECContainerTypes.java @@ -0,0 +1,40 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.crafting.menu.*; +import net.minecraft.world.inventory.MenuType; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECContainerTypes { + public static final DeferredRegister> REGISTER = DeferredRegister.create(ForgeRegistries.MENU_TYPES, 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 final RegistryObject> PIGLIN_CUTEY_MERCHANT_MENU = REGISTER.register( + "piglin_cutey_merchant", () -> new MenuType<>(PiglinCuteyMerchantMenu::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..b345bc91 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECEntities.java @@ -0,0 +1,70 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.entities.ECBoat; +import com.hexagram2021.emeraldcraft.common.entities.ECChestBoat; +import com.hexagram2021.emeraldcraft.common.entities.mobs.*; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraftforge.registries.RegisterEvent; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECEntities { + public static final EntityType 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 EntityType 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 EntityType NETHER_LAMBMAN = EntityType.Builder.of(NetherLambmanEntity::new, MobCategory.CREATURE) + .sized(0.6F, 1.95F) + .clientTrackingRange(10) + .build(new ResourceLocation(MODID, "nether_lambman").toString()); + public static final EntityType HERRING = EntityType.Builder.of(HerringEntity::new, MobCategory.WATER_AMBIENT) + .sized(0.5F, 0.4F) + .clientTrackingRange(4) + .build(new ResourceLocation(MODID, "herring").toString()); + public static final EntityType PURPLE_SPOTTED_BIGEYE = EntityType.Builder.of(PurpleSpottedBigeyeEntity::new, MobCategory.WATER_AMBIENT) + .sized(0.5F, 0.4F) + .clientTrackingRange(4) + .build(new ResourceLocation(MODID, "purple_spotted_bigeye").toString()); + public static final EntityType WRAITH = EntityType.Builder.of(WraithEntity::new, MobCategory.MONSTER) + .sized(0.75F, 2.5F) + .clientTrackingRange(8) + .build(new ResourceLocation(MODID, "wraith").toString()); + + public static final EntityType MANTA = EntityType.Builder.of(MantaEntity::new, MobCategory.CREATURE) + .sized(1.0F, 0.5F) + .clientTrackingRange(8) + .build(new ResourceLocation(MODID, "manta").toString()); + + public static final EntityType BOAT = EntityType.Builder.of(ECBoat::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .build(new ResourceLocation(MODID, "boat").toString()); + + public static final EntityType CHEST_BOAT = EntityType.Builder.of(ECChestBoat::new, MobCategory.MISC) + .sized(1.375F, 0.5625F) + .clientTrackingRange(10) + .build(new ResourceLocation(MODID, "chest_boat").toString()); + + private ECEntities() { } + + public static void init(RegisterEvent event) { + event.register(Registry.ENTITY_TYPE_REGISTRY, helper -> { + helper.register(new ResourceLocation(MODID, "piglin_cutey"), PIGLIN_CUTEY); + helper.register(new ResourceLocation(MODID, "nether_pigman"), NETHER_PIGMAN); + helper.register(new ResourceLocation(MODID, "nether_lambman"), NETHER_LAMBMAN); + helper.register(new ResourceLocation(MODID, "herring"), HERRING); + helper.register(new ResourceLocation(MODID, "purple_spotted_bigeye"), PURPLE_SPOTTED_BIGEYE); + helper.register(new ResourceLocation(MODID, "wraith"), WRAITH); + helper.register(new ResourceLocation(MODID, "manta"), MANTA); + helper.register(new ResourceLocation(MODID, "boat"), BOAT); + helper.register(new ResourceLocation(MODID, "chest_boat"), CHEST_BOAT); + }); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECEntityActionPacketActions.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECEntityActionPacketActions.java new file mode 100644 index 00000000..7c700a54 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECEntityActionPacketActions.java @@ -0,0 +1,7 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.network.protocol.game.ServerboundPlayerCommandPacket; + +public class ECEntityActionPacketActions { + public static ServerboundPlayerCommandPacket.Action RIDING_FLY; +} 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..b2cf9729 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECFeatures.java @@ -0,0 +1,23 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.world.VolcanicCavesLavaPoolFeature; +import com.hexagram2021.emeraldcraft.common.world.ZombieVillagerRoomFeature; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +import net.minecraftforge.registries.RegisterEvent; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECFeatures { + public static final Feature ZOMBIE_VILLAGER_ROOM = new ZombieVillagerRoomFeature(NoneFeatureConfiguration.CODEC); + public static final Feature VOLCANIC_CAVES_LAVA_POOL = new VolcanicCavesLavaPoolFeature(NoneFeatureConfiguration.CODEC); + + public static void init(RegisterEvent event) { + event.register(Registry.FEATURE_REGISTRY, helper -> { + helper.register(new ResourceLocation(MODID, "zombie_villager_room"), ZOMBIE_VILLAGER_ROOM); + helper.register(new ResourceLocation(MODID, "volcanic_caves_lava_pool"), VOLCANIC_CAVES_LAVA_POOL); + }); + } +} 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..98af82db --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECItems.java @@ -0,0 +1,422 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.EmeraldCraft; +import com.hexagram2021.emeraldcraft.common.crafting.compat.ModsLoadedEventSubscriber; +import com.hexagram2021.emeraldcraft.common.entities.ECBoat; +import com.hexagram2021.emeraldcraft.common.items.*; +import com.hexagram2021.emeraldcraft.common.util.ECFoods; +import net.minecraft.Util; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.*; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.material.Fluids; +import net.minecraftforge.common.ForgeSpawnEggItem; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; +import org.jetbrains.annotations.NotNull; + +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; +import static com.hexagram2021.emeraldcraft.common.util.RegistryHelper.getRegistryName; + +@SuppressWarnings("unused") +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 CHILI = ItemRegObject.register( + "chili", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.CHILI)) { + @Override @NotNull + public ItemStack finishUsingItem(@NotNull ItemStack itemStack, @NotNull Level level, @NotNull LivingEntity entity) { + if(entity instanceof Player player) { + player.getCooldowns().addCooldown(this, 120); + } + return super.finishUsingItem(itemStack, level, entity); + } + } + ); + public static final ItemRegObject CHILI_SEED = ItemRegObject.register( + "chili_seed", () -> new ItemNameBlockItem(ECBlocks.Plant.CHILI.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 BIGEYE_SPAWN_EGG = ItemRegObject.register( + "bigeye_spawn_egg", () -> new ForgeSpawnEggItem(() -> ECEntities.PURPLE_SPOTTED_BIGEYE, 0xEC1C24, 0xD8B8CC, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject HERRING_SPAWN_EGG = ItemRegObject.register( + "herring_spawn_egg", () -> new ForgeSpawnEggItem(() -> ECEntities.HERRING, 0x12C6EC, 0xB44420, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject WRAITH_SPAWN_EGG = ItemRegObject.register( + "wraith_spawn_egg", () -> new ForgeSpawnEggItem(() -> ECEntities.WRAITH, 0x400040, 0xC8C8C8, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject MANTA_SPAWN_EGG = ItemRegObject.register( + "manta_spawn_egg", () -> new ForgeSpawnEggItem(() -> ECEntities.MANTA, 0xFFFFC8, 0xF8F8E0, 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 GINKGO_NUT = ItemRegObject.register( + "ginkgo_nut", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.GINKGO_NUT)) + ); + public static final ItemRegObject PEACH = ItemRegObject.register( + "peach", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.PEACH)) + ); + public static final ItemRegObject GOLDEN_PEACH = ItemRegObject.register( + "golden_peach", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.GOLDEN_PEACH)) + ); + + public static final ItemRegObject POTION_COOKIE = ItemRegObject.register( + "potion_cookie", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.POTION_COOKIE)) + ); + public static final ItemRegObject COOKED_TROPICAL_FISH = ItemRegObject.register( + "cooked_tropical_fish", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.COOKED_TROPICAL_FISH)) + ); + public static final ItemRegObject COOKED_PURPURACEUS_FUNGUS = ItemRegObject.register( + "cooked_purpuraceus_fungus", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.COOKED_PURPURACEUS_FUNGUS)) + ); + public static final ItemRegObject BOILED_EGG = ItemRegObject.register( + "boiled_egg", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.BOILED_EGG)) + ); + public static final ItemRegObject CHORUS_FLOWER_EGGDROP_SOUP = ItemRegObject.register( + "chorus_flower_eggdrop_soup", () -> new ChorusFlowerEggdropSoupItem(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(1).food(ECFoods.CHORUS_FLOWER_EGGDROP_SOUP)) + ); + public static final ItemRegObject CARAMELIZED_POTATO = ItemRegObject.register( + "caramelized_potato", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.CARAMELIZED_POTATO)) + ); + public static final ItemRegObject ROUGAMO = ItemRegObject.register( + "rougamo", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.ROUGAMO)) + ); + public static final ItemRegObject BEEF_AND_POTATO_STEW = ItemRegObject.register( + "beef_and_potato_stew", () -> new BowlFoodItem(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(1).food(ECFoods.BEEF_AND_POTATO_STEW)) + ); + public static final ItemRegObject BRAISED_CHICKEN = ItemRegObject.register( + "braised_chicken", () -> new BowlFoodItem(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(1).food(ECFoods.BRAISED_CHICKEN)) + ); + public static final ItemRegObject SAUSAGE = ItemRegObject.register( + "sausage", () -> new StickFoodItem(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16).food(ECFoods.SAUSAGE)) + ); + public static final ItemRegObject COOKED_SAUSAGE = ItemRegObject.register( + "cooked_sausage", () -> new StickFoodItem(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16).food(ECFoods.COOKED_SAUSAGE)) + ); + public static final ItemRegObject GLUTEN = ItemRegObject.register( + "gluten", () -> new StickFoodItem(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16).food(ECFoods.GLUTEN)) + ); + public static final ItemRegObject WARDEN_HEART = ItemRegObject.register( + "warden_heart", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).rarity(Rarity.EPIC).food(ECFoods.WARDEN_HEART)) + ); + public static final ItemRegObject STIR_FRIED_WARDEN_HEART = ItemRegObject.register( + "stir_fried_warden_heart", () -> new BowlFoodItem(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(1).rarity(Rarity.EPIC).food(ECFoods.STIR_FRIED_WARDEN_HEART)) + ); + public static final ItemRegObject HERRING = ItemRegObject.register( + "herring", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.HERRING)) + ); + public static final ItemRegObject COOKED_HERRING = ItemRegObject.register( + "cooked_herring", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.COOKED_HERRING)) + ); + public static final ItemRegObject PURPLE_SPOTTED_BIGEYE = ItemRegObject.register( + "purple_spotted_bigeye", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.PURPLE_SPOTTED_BIGEYE)) + ); + public static final ItemRegObject COOKED_PURPLE_SPOTTED_BIGEYE = ItemRegObject.register( + "cooked_purple_spotted_bigeye", () -> new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.COOKED_PURPLE_SPOTTED_BIGEYE)) + ); + public static final ItemRegObject APPLE_JUICE = ItemRegObject.register( + "apple_juice", () -> new BottleFoodItem(20, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.APPLE_JUICE)) + ); + public static final ItemRegObject BEETROOT_JUICE = ItemRegObject.register( + "beetroot_juice", () -> new BottleFoodItem(20, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.BEETROOT_JUICE)) + ); + public static final ItemRegObject CARROT_JUICE = ItemRegObject.register( + "carrot_juice", () -> new BottleFoodItem(20, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.CARROT_JUICE)) { + @Override + protected void additionalEffects(Level level, LivingEntity entity) { + if(!level.isClientSide) { + entity.removeEffect(MobEffects.BLINDNESS); + entity.removeEffect(MobEffects.DARKNESS); + } + } + } + ); + public static final ItemRegObject MELON_JUICE = ItemRegObject.register( + "melon_juice", () -> new BottleFoodItem(20, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.MELON_JUICE)) { + @Override + protected void additionalEffects(Level level, LivingEntity entity) { + if(!level.isClientSide) { + if(entity.isOnFire()) { + entity.clearFire(); + } + } + } + } + ); + public static final ItemRegObject PEACH_JUICE = ItemRegObject.register( + "peach_juice", () -> new BottleFoodItem(20, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.PEACH_JUICE)) + ); + public static final ItemRegObject PUMPKIN_JUICE = ItemRegObject.register( + "pumpkin_juice", () -> new BottleFoodItem(20, new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).food(ECFoods.PUMPKIN_JUICE)) { + @Override + protected void additionalEffects(Level level, LivingEntity entity) { + if(!level.isClientSide) { + entity.removeEffect(MobEffects.WITHER); + } + } + } + ); + + 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 ItemRegObject GINKGO_BOAT = ItemRegObject.register( + "ginkgo_boat", () -> new ECBoatItem(false, ECBoat.ECBoatType.GINKGO, new Item.Properties().stacksTo(1).tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject PALM_BOAT = ItemRegObject.register( + "palm_boat", () -> new ECBoatItem(false, ECBoat.ECBoatType.PALM, new Item.Properties().stacksTo(1).tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject PEACH_BOAT = ItemRegObject.register( + "peach_boat", () -> new ECBoatItem(false, ECBoat.ECBoatType.PEACH, new Item.Properties().stacksTo(1).tab(EmeraldCraft.ITEM_GROUP)) + ); + + public static final ItemRegObject GINKGO_CHEST_BOAT = ItemRegObject.register( + "ginkgo_chest_boat", () -> new ECBoatItem(true, ECBoat.ECBoatType.GINKGO, new Item.Properties().stacksTo(1).tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject PALM_CHEST_BOAT = ItemRegObject.register( + "palm_chest_boat", () -> new ECBoatItem(true, ECBoat.ECBoatType.PALM, new Item.Properties().stacksTo(1).tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject PEACH_CHEST_BOAT = ItemRegObject.register( + "peach_chest_boat", () -> new ECBoatItem(true, ECBoat.ECBoatType.PEACH, new Item.Properties().stacksTo(1).tab(EmeraldCraft.ITEM_GROUP)) + ); + + public static final ItemRegObject HERRING_BUCKET = ItemRegObject.register( + "herring_bucket", () -> new MobBucketItem(() -> ECEntities.HERRING, () -> Fluids.WATER, () -> SoundEvents.BUCKET_EMPTY_FISH, new Item.Properties().stacksTo(1).tab(EmeraldCraft.ITEM_GROUP)) + ); + public static final ItemRegObject BIGEYE_BUCKET = ItemRegObject.register( + "bigeye_bucket", () -> new MobBucketItem(() -> ECEntities.PURPLE_SPOTTED_BIGEYE, () -> Fluids.WATER, () -> SoundEvents.BUCKET_EMPTY_FISH, new Item.Properties().stacksTo(1).tab(EmeraldCraft.ITEM_GROUP)) + ); + + public static class CreateCompatItems { + public static final ItemRegObject ZINC_CONCENTRATE = ItemRegObject.register( + "zinc_concentrate", () -> { + if(ModsLoadedEventSubscriber.CREATE) { + return new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)); + } + return new Item(new Item.Properties()); + } + ); + public static final ItemRegObject MELTED_ZINC_BUCKET = ItemRegObject.register( + "melted_zinc_bucket", () -> { + if(ModsLoadedEventSubscriber.CREATE) { + return new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16)); + } + return new Item(new Item.Properties().stacksTo(16)); + } + ); + + private static void init() {} + } + + public static class IECompatItems { + public static final ItemRegObject ALUMINUM_CONCENTRATE = ItemRegObject.register( + "aluminum_concentrate", () -> { + if(ModsLoadedEventSubscriber.IE) { + return new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)); + } + return new Item(new Item.Properties()); + } + ); + public static final ItemRegObject MELTED_ALUMINUM_BUCKET = ItemRegObject.register( + "melted_aluminum_bucket", () -> { + if(ModsLoadedEventSubscriber.IE) { + return new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16)); + } + return new Item(new Item.Properties().stacksTo(16)); + } + ); + public static final ItemRegObject LEAD_CONCENTRATE = ItemRegObject.register( + "lead_concentrate", () -> { + if(ModsLoadedEventSubscriber.IE) { + return new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)); + } + return new Item(new Item.Properties()); + } + ); + public static final ItemRegObject MELTED_LEAD_BUCKET = ItemRegObject.register( + "melted_lead_bucket", () -> { + if(ModsLoadedEventSubscriber.IE) { + return new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16)); + } + return new Item(new Item.Properties().stacksTo(16)); + } + ); + public static final ItemRegObject SILVER_CONCENTRATE = ItemRegObject.register( + "silver_concentrate", () -> { + if(ModsLoadedEventSubscriber.IE) { + return new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)); + } + return new Item(new Item.Properties()); + } + ); + public static final ItemRegObject MELTED_SILVER_BUCKET = ItemRegObject.register( + "melted_silver_bucket", () -> { + if(ModsLoadedEventSubscriber.IE) { + return new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16)); + } + return new Item(new Item.Properties().stacksTo(16)); + } + ); + public static final ItemRegObject NICKEL_CONCENTRATE = ItemRegObject.register( + "nickel_concentrate", () -> { + if(ModsLoadedEventSubscriber.IE) { + return new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)); + } + return new Item(new Item.Properties()); + } + ); + public static final ItemRegObject MELTED_NICKEL_BUCKET = ItemRegObject.register( + "melted_nickel_bucket", () -> { + if(ModsLoadedEventSubscriber.IE) { + return new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16)); + } + return new Item(new Item.Properties().stacksTo(16)); + } + ); + public static final ItemRegObject URANIUM_CONCENTRATE = ItemRegObject.register( + "uranium_concentrate", () -> { + if(ModsLoadedEventSubscriber.IE) { + return new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP)); + } + return new Item(new Item.Properties()); + } + ); + public static final ItemRegObject MELTED_URANIUM_BUCKET = ItemRegObject.register( + "melted_uranium_bucket", () -> { + if(ModsLoadedEventSubscriber.IE) { + return new Item(new Item.Properties().tab(EmeraldCraft.ITEM_GROUP).stacksTo(16)); + } + return new Item(new Item.Properties().stacksTo(16)); + } + ); + + 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) + )); + } + } + + CreateCompatItems.init(); + IECompatItems.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)); + } + + static ItemRegObject register(String name, Supplier make) { + return new ItemRegObject<>(REGISTER.register(name, make)); + } + + private static ItemRegObject of(T existing) { + return new ItemRegObject<>(RegistryObject.create(getRegistryName(existing), ForgeRegistries.ITEMS)); + } + + private ItemRegObject(RegistryObject regObject) + { + this.regObject = regObject; + } + + @Override @NotNull + public T get() { + return regObject.get(); + } + + @Override @NotNull + public Item asItem() { + return regObject.get(); + } + + public ResourceLocation getId() { + return regObject.getId(); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECLootModifiers.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECLootModifiers.java new file mode 100644 index 00000000..6dce9350 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECLootModifiers.java @@ -0,0 +1,53 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; +import net.minecraftforge.common.loot.IGlobalLootModifier; +import net.minecraftforge.common.loot.LootModifier; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; +import org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECLootModifiers { + private static final DeferredRegister> REGISTER = DeferredRegister.create( + ForgeRegistries.Keys.GLOBAL_LOOT_MODIFIER_SERIALIZERS, MODID + ); + private static final RegistryObject> WARDEN_DROP_HEART = REGISTER.register( + "warden_drop_heart", WardenDropModifier::factory + ); + + private ECLootModifiers() {} + + private static class WardenDropModifier extends LootModifier { + protected WardenDropModifier(LootItemCondition[] conditionsIn) { + super(conditionsIn); + } + + @Override + public Codec codec() { + return WARDEN_DROP_HEART.get(); + } + + @Override @NotNull + protected ObjectArrayList doApply(ObjectArrayList generatedLoot, LootContext context) { + generatedLoot.add(new ItemStack(ECItems.WARDEN_HEART)); + return generatedLoot; + } + + public static Codec factory() { + return RecordCodecBuilder.create(inst -> LootModifier.codecStart(inst).apply(inst, WardenDropModifier::new)); + } + } + + public static void init(IEventBus bus) { + REGISTER.register(bus); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECMapDecorationTypes.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECMapDecorationTypes.java new file mode 100644 index 00000000..4f38d632 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECMapDecorationTypes.java @@ -0,0 +1,8 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.world.level.saveddata.maps.MapDecoration; + +public class ECMapDecorationTypes { + public static MapDecoration.Type SHELTER; + public static MapDecoration.Type ENTRENCHMENT; +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECPlacedFeatures.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECPlacedFeatures.java new file mode 100644 index 00000000..2c01a1f8 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECPlacedFeatures.java @@ -0,0 +1,137 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.util.placement_modifiers.AboveHeightmapFilter; +import net.minecraft.core.Direction; +import net.minecraft.core.Holder; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.data.worldgen.features.OreFeatures; +import net.minecraft.data.worldgen.placement.PlacementUtils; +import net.minecraft.data.worldgen.placement.VegetationPlacements; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.valueproviders.ConstantInt; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.VerticalAnchor; +import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.placement.*; + +import java.util.List; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +@SuppressWarnings("deprecation") +public class ECPlacedFeatures { + public static final Holder ORE_LAPIS_EXTRA = register( + "ore_lapis_extra", OreFeatures.ORE_LAPIS, + commonOrePlacement(50, HeightRangePlacement.uniform(VerticalAnchor.absolute(32), VerticalAnchor.absolute(256))) + ); + public static final Holder ORE_EMERALD_EXTRA = register( + "ore_emerald_extra", OreFeatures.ORE_EMERALD, + commonOrePlacement(80, HeightRangePlacement.uniform(VerticalAnchor.absolute(32), VerticalAnchor.absolute(256))) + ); + public static final Holder ORE_DEBRIS_EXTRA = register( + "ore_debris_extra", ECConfiguredFeatures.OreConfiguredFeatures.ORE_DEBRIS_EXTRA, List.of( + InSquarePlacement.spread(), + HeightRangePlacement.triangle(VerticalAnchor.absolute(16), VerticalAnchor.absolute(79)), + BiomeFilter.biome() + ) + ); + public static final Holder ORE_QUARTZ_EXTRA = register( + "ore_quartz_extra", ECConfiguredFeatures.OreConfiguredFeatures.ORE_QUARTZ_EXTRA, + commonOrePlacement(20, PlacementUtils.RANGE_10_10) + ); + + public static final Holder ZOMBIE_VILLAGER_ROOM = register( + "zombie_villager_room", ECConfiguredFeatures.StructureConfiguredFeatures.ZOMBIE_VILLAGER_ROOM, List.of( + CountPlacement.of(8), InSquarePlacement.spread(), + HeightRangePlacement.uniform(VerticalAnchor.absolute(0), VerticalAnchor.top()), + BiomeFilter.biome() + ) + ); + + public static final Holder FLOWER_PETUNIA_PLAINS = register( + "flower_petunia_plains", ECConfiguredFeatures.VegetationFeatures.FLOWER_PETUNIA_PLAINS, List.of( + NoiseThresholdCountPlacement.of(-0.8D, 18, 6), + RarityFilter.onAverageOnceEvery(32), + InSquarePlacement.spread(), + PlacementUtils.HEIGHTMAP, + BiomeFilter.biome() + ) + ); + + public static final Holder FLOWER_HIGAN_BANA = register( + "flower_higan_bana", ECConfiguredFeatures.VegetationFeatures.FLOWER_HIGAN_BANA, List.of( + CountPlacement.of(8), + InSquarePlacement.spread(), + PlacementUtils.FULL_RANGE, + BiomeFilter.biome() + ) + ); + + public static final Holder TREES_GINKGO = register( + "trees_ginkgo", ECConfiguredFeatures.TreeConfiguredFeatures.TREES_GINKGO, + VegetationPlacements.treePlacement(PlacementUtils.countExtra(10, 0.1F, 1), ECBlocks.Plant.GINKGO_SAPLING.get()) + ); + public static final Holder TREES_PALM = register( + "trees_palm", ECConfiguredFeatures.TreeConfiguredFeatures.TREES_PALM, + VegetationPlacements.treePlacement(PlacementUtils.countExtra(1, 0.1F, 1), ECBlocks.Plant.PALM_SAPLING.get()) + ); + public static final Holder TREES_PEACH = register( + "trees_peach", ECConfiguredFeatures.TreeConfiguredFeatures.TREES_PEACH, + VegetationPlacements.treePlacement(PlacementUtils.countExtra(1, 0.2F, 2), ECBlocks.Plant.PEACH_SAPLING.get()) + ); + + public static final Holder PURPURACEUS_FUNGI = register( + "purpuraceus_fungi", ECConfiguredFeatures.TreeConfiguredFeatures.PURPURACEUS_FUNGUS, + List.of(CountOnEveryLayerPlacement.of(3), BiomeFilter.biome()) + ); + + public static final Holder PURPURACEUS_SWAMP_VEGETATION = register( + "purpuraceus_swamp_vegetation", ECConfiguredFeatures.VegetationFeatures.PURPURACEUS_SWAMP_VEGETATION, + List.of(CountOnEveryLayerPlacement.of(4), BiomeFilter.biome()) + ); + + public static final Holder VOLCANIC_CAVES_LAVA_POOL = register( + "volcanic_caves_lava_pool", ECConfiguredFeatures.SpecialFeatures.VOLCANIC_CAVES_LAVA_POOL, List.of( + CountPlacement.of(126), InSquarePlacement.spread(), + PlacementUtils.RANGE_BOTTOM_TO_MAX_TERRAIN_HEIGHT, + EnvironmentScanPlacement.scanningFor(Direction.DOWN, BlockPredicate.solid(), BlockPredicate.ONLY_IN_AIR_PREDICATE, 12), + RandomOffsetPlacement.vertical(ConstantInt.of(1)), + BiomeFilter.biome() + )); + + public static final Holder XANADU_DELTA = register( + "xanadu_delta", ECConfiguredFeatures.SpecialFeatures.XANADU_DELTA, List.of( + CountOnEveryLayerPlacement.of(3), BiomeFilter.biome(), + new AboveHeightmapFilter(Heightmap.Types.OCEAN_FLOOR_WG) + ) + ); + public static final Holder KARST_DELTA = register( + "karst_delta", ECConfiguredFeatures.SpecialFeatures.KARST_DELTA, List.of( + CountOnEveryLayerPlacement.of(1), BiomeFilter.biome(), + new AboveHeightmapFilter(Heightmap.Types.OCEAN_FLOOR_WG) + ) + ); + public static final Holder PURPURACEUS_SWAMP_DELTA = register( + "purpuraceus_swamp_delta", ECConfiguredFeatures.SpecialFeatures.PURPURACEUS_SWAMP_DELTA, List.of( + CountOnEveryLayerPlacement.of(3), BiomeFilter.biome() + ) + ); + public static final Holder PURPURACEUS_SWAMP_LAVA_DELTA = register( + "purpuraceus_swamp_lava_delta", ECConfiguredFeatures.SpecialFeatures.PURPURACEUS_SWAMP_LAVA_DELTA, List.of( + CountOnEveryLayerPlacement.of(1), BiomeFilter.biome() + ) + ); + + private static Holder register(String id, Holder> cf, List modifiers) { + return BuiltinRegistries.register(BuiltinRegistries.PLACED_FEATURE, new ResourceLocation(MODID, id), new PlacedFeature(Holder.hackyErase(cf), List.copyOf(modifiers))); + } + + private static List orePlacement(PlacementModifier countModifier, PlacementModifier heightModifier) { + return List.of(countModifier, InSquarePlacement.spread(), heightModifier, BiomeFilter.biome()); + } + + private static List commonOrePlacement(int count, PlacementModifier heightModifier) { + return orePlacement(CountPlacement.of(count), heightModifier); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECPlacementModifierType.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECPlacementModifierType.java new file mode 100644 index 00000000..a8803f0d --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECPlacementModifierType.java @@ -0,0 +1,22 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.util.placement_modifiers.AboveHeightmapFilter; +import net.minecraft.core.Registry; +import net.minecraft.world.level.levelgen.placement.PlacementModifierType; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.RegistryObject; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECPlacementModifierType { + public static final DeferredRegister> REGISTER = DeferredRegister.create(Registry.PLACEMENT_MODIFIER_REGISTRY, MODID); + + public static final RegistryObject> ABOVE_HEIGHTMAP_FILTER = REGISTER.register( + "above_heightmap_filter", () -> () -> AboveHeightmapFilter.CODEC + ); + + public static void init(IEventBus bus) { + REGISTER.register(bus); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECPotions.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECPotions.java new file mode 100644 index 00000000..4bf91cc2 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECPotions.java @@ -0,0 +1,51 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.item.alchemy.Potion; +import net.minecraftforge.registries.RegisterEvent; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECPotions { + public static final Potion HUNGER = new Potion("hunger", new MobEffectInstance(MobEffects.HUNGER, 1800)); + public static final Potion LONG_HUNGER = new Potion("hunger", new MobEffectInstance(MobEffects.HUNGER, 4800)); + public static final Potion STRONG_HUNGER = new Potion("hunger", new MobEffectInstance(MobEffects.HUNGER, 400, 3)); + public static final Potion SATURATION = new Potion("saturation", new MobEffectInstance(MobEffects.SATURATION, 10, 2)); + public static final Potion STRONG_SATURATION = new Potion("saturation", new MobEffectInstance(MobEffects.SATURATION, 10, 7)); + public static final Potion WITHER = new Potion("wither", new MobEffectInstance(MobEffects.WITHER, 900)); + public static final Potion LONG_WITHER = new Potion("wither", new MobEffectInstance(MobEffects.WITHER, 1800)); + public static final Potion STRONG_WITHER = new Potion("wither", new MobEffectInstance(MobEffects.WITHER, 432, 1)); + public static final Potion BLINDNESS = new Potion("blindness", new MobEffectInstance(MobEffects.BLINDNESS, 900)); + public static final Potion LONG_BLINDNESS = new Potion("blindness", new MobEffectInstance(MobEffects.BLINDNESS, 1800)); + public static final Potion ABSORPTION = new Potion("absorption", new MobEffectInstance(MobEffects.ABSORPTION, 3600)); + public static final Potion LONG_ABSORPTION = new Potion("absorption", new MobEffectInstance(MobEffects.ABSORPTION, 9600)); + public static final Potion STRONG_ABSORPTION = new Potion("absorption", new MobEffectInstance(MobEffects.ABSORPTION, 800, 3)); + public static final Potion GLOWING = new Potion("glowing", new MobEffectInstance(MobEffects.GLOWING, 1800)); + public static final Potion LONG_GLOWING = new Potion("glowing", new MobEffectInstance(MobEffects.GLOWING, 4800)); + + + private ECPotions() {} + + public static void init(RegisterEvent event) { + event.register(Registry.POTION_REGISTRY, helper -> { + helper.register(new ResourceLocation(MODID, "hunger"), HUNGER); + helper.register(new ResourceLocation(MODID, "long_hunger"), LONG_HUNGER); + helper.register(new ResourceLocation(MODID, "strong_hunger"), STRONG_HUNGER); + helper.register(new ResourceLocation(MODID, "saturation"), SATURATION); + helper.register(new ResourceLocation(MODID, "strong_saturation"), STRONG_SATURATION); + helper.register(new ResourceLocation(MODID, "wither"), WITHER); + helper.register(new ResourceLocation(MODID, "long_wither"), LONG_WITHER); + helper.register(new ResourceLocation(MODID, "strong_wither"), STRONG_WITHER); + helper.register(new ResourceLocation(MODID, "blindness"), BLINDNESS); + helper.register(new ResourceLocation(MODID, "long_blindness"), LONG_BLINDNESS); + helper.register(new ResourceLocation(MODID, "absorption"), ABSORPTION); + helper.register(new ResourceLocation(MODID, "long_absorption"), LONG_ABSORPTION); + helper.register(new ResourceLocation(MODID, "strong_absorption"), STRONG_ABSORPTION); + helper.register(new ResourceLocation(MODID, "glowing"), GLOWING); + helper.register(new ResourceLocation(MODID, "long_glowing"), LONG_GLOWING); + }); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECProperties.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECProperties.java new file mode 100644 index 00000000..126796ea --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECProperties.java @@ -0,0 +1,10 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.block.state.properties.IntegerProperty; + +public class ECProperties { + public static final IntegerProperty EXP_COUNT = IntegerProperty.create("exp_count", 0, 15); + public static final IntegerProperty HONEY_COUNT = IntegerProperty.create("honey_count", 0, 7); + public static final BooleanProperty LEAF = BooleanProperty.create("leaf"); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipeBookTypes.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipeBookTypes.java new file mode 100644 index 00000000..2f416fb4 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipeBookTypes.java @@ -0,0 +1,31 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.client.RecipeBookCategories; +import net.minecraft.world.inventory.RecipeBookType; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraftforge.client.event.RegisterRecipeBookCategoriesEvent; + +import java.util.Arrays; +import java.util.List; + +public class ECRecipeBookTypes { + public static final RecipeBookCategories GLASS_KILN_SEARCH = RecipeBookCategories.create("GLASS_KILN_SEARCH", new ItemStack(Items.COMPASS)); + public static final RecipeBookCategories GLASS_KILN_SAND = RecipeBookCategories.create("GLASS_KILN_SAND", new ItemStack(Items.SAND)); + public static final RecipeBookCategories GLASS_KILN_CLAY = RecipeBookCategories.create("GLASS_KILN_CLAY", new ItemStack(Items.CLAY)); + public static final RecipeBookCategories GLASS_KILN_TERRACOTTA = RecipeBookCategories.create("GLASS_KILN_TERRACOTTA", new ItemStack(Items.CYAN_GLAZED_TERRACOTTA), new ItemStack(Items.MAGENTA_GLAZED_TERRACOTTA)); + + public static void init(RegisterRecipeBookCategoriesEvent event) { + event.registerBookCategories(ECRecipes.GLASS_KILN, List.of(GLASS_KILN_SEARCH, GLASS_KILN_SAND, GLASS_KILN_CLAY, GLASS_KILN_TERRACOTTA)); + event.registerAggregateCategory(GLASS_KILN_SEARCH, List.of(GLASS_KILN_SAND, GLASS_KILN_CLAY, GLASS_KILN_TERRACOTTA)); + event.registerRecipeCategoryFinder(ECRecipes.GLASS_KILN_TYPE.get(), recipe -> { + if(recipe.getResultItem().getDescriptionId().contains("glass")) { + return GLASS_KILN_SAND; + } + if(Arrays.stream(recipe.getIngredients().get(0).getItems()).anyMatch(itemStack -> itemStack.getDescriptionId().contains("terracotta"))) { + return GLASS_KILN_TERRACOTTA; + } + return GLASS_KILN_CLAY; + }); + } +} 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..b1b8beb1 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipeSerializer.java @@ -0,0 +1,38 @@ +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.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +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 final RegistryObject> TRADE_SHADOW_SERIALIZER = REGISTER.register( + "trade_shadow", () -> new TradeShadowRecipeSerializer<>(TradeShadowRecipe::new) + ); + + 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..bdc9ff6e --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECRecipes.java @@ -0,0 +1,39 @@ +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.inventory.RecipeBookType; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeType; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.RegistryObject; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECRecipes { + public static final RecipeBookType GLASS_KILN = RecipeBookType.create("GLASS_KILN"); + + private static final DeferredRegister> REGISTER = DeferredRegister.create(Registry.RECIPE_TYPE_REGISTRY, MODID); + + public static final RegistryObject> CARPENTRY_TABLE_TYPE = register("carpentry"); + public static final RegistryObject> GLASS_KILN_TYPE = register("glass_kiln"); + public static final RegistryObject> MINERAL_TABLE_TYPE = register("mineral_table"); + public static final RegistryObject> ICE_MAKER_TYPE = register("ice_maker"); + public static final RegistryObject> MELTER_TYPE = register("melter"); + public static final RegistryObject> TRADE_SHADOW_TYPE = register("trade_shadow"); + + public static void init(IEventBus bus) { + REGISTER.register(bus); + } + + private static > RegistryObject> register(String name) { + return REGISTER.register(name, () -> new RecipeType<>() { + @Override + public String toString() { + return new ResourceLocation(MODID, name).toString(); + } + }); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureKeys.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureKeys.java new file mode 100644 index 00000000..04bb50fc --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureKeys.java @@ -0,0 +1,29 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.structure.Structure; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECStructureKeys { + public static final ResourceKey SHELTER = createKey("shelter"); + public static final ResourceKey NETHER_WARFIELD = createKey("nether_warfield"); + public static final ResourceKey ENTRENCHMENT = createKey("entrenchment"); + public static final ResourceKey VILLAGE_SWAMP = createKey("village_swamp"); + public static final ResourceKey BADLANDS_CAMP = createKey("badlands_camp"); + public static final ResourceKey BIRCH_CAMP = createKey("birch_camp"); + public static final ResourceKey DESERT_CAMP = createKey("desert_camp"); + public static final ResourceKey JUNGLE_CAMP = createKey("jungle_camp"); + public static final ResourceKey PLAINS_CAMP = createKey("plains_camp"); + public static final ResourceKey SAVANNA_CAMP = createKey("savanna_camp"); + public static final ResourceKey SNOW_CAMP = createKey("snow_camp"); + public static final ResourceKey STONY_CAMP = createKey("stony_camp"); + public static final ResourceKey SWAMP_CAMP = createKey("swamp_camp"); + public static final ResourceKey TAIGA_CAMP = createKey("taiga_camp"); + + private static ResourceKey createKey(String name) { + return ResourceKey.create(Registry.STRUCTURE_REGISTRY, new ResourceLocation(MODID, name)); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructurePieceTypes.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructurePieceTypes.java new file mode 100644 index 00000000..eb954d42 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructurePieceTypes.java @@ -0,0 +1,42 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.world.structures.camp.CampPieces; +import com.hexagram2021.emeraldcraft.common.world.structures.shelter.ShelterPieces; +import com.hexagram2021.emeraldcraft.common.world.structures.entrenchment.EntrenchmentPieces; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECStructurePieceTypes { + public static final StructurePieceType SHELTER_TYPE = Registry.register(Registry.STRUCTURE_PIECE, new ResourceLocation(MODID, "shelter"), ShelterPieces.ShelterPiece::new); + public static final StructurePieceType CAMP_TYPE = Registry.register(Registry.STRUCTURE_PIECE, new ResourceLocation(MODID, "camp"), CampPieces.CampPiece::new); + + public static final class EntrenchmentPieceTypes { + public static final StructurePieceType HALL_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "entrenchment_hall", EntrenchmentPieces.HallPiece::new); + public static final StructurePieceType START_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "entrenchment_start", EntrenchmentPieces.StartPiece::new); + public static final StructurePieceType CROSSING_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "entrenchment_crossing", EntrenchmentPieces.CrossingPiece::new); + public static final StructurePieceType T_BRIDGE_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "entrenchment_t_bridge", EntrenchmentPieces.TBridgePiece::new); + public static final StructurePieceType LONG_HALLWAY_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "entrenchment_long_hallway", EntrenchmentPieces.LongHallwayPiece::new); + public static final StructurePieceType SHORT_HALLWAY_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "entrenchment_short_hallway", EntrenchmentPieces.ShortHallwayPiece::new); + public static final StructurePieceType CHEST_HALLWAY_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "entrenchment_chest_hallway", EntrenchmentPieces.ChestHallwayPiece::new); + public static final StructurePieceType BRIDGE_HALLWAY_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "entrenchment_bridge_hallway", EntrenchmentPieces.ShortBridgeHallwayPiece::new); + public static final StructurePieceType LEFT_TURN_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "entrenchment_left_turn", EntrenchmentPieces.LeftTurnPiece::new); + public static final StructurePieceType RIGHT_TURN_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "entrenchment_right_turn", EntrenchmentPieces.RightTurnPiece::new); + public static final StructurePieceType MONSTER_ROOM_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "entrenchment_monster_room", EntrenchmentPieces.MonsterRoomPiece::new); + public static final StructurePieceType LABORATORY_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "entrenchment_laboratory", EntrenchmentPieces.LaboratoryPiece::new); + public static final StructurePieceType BALCONY_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "entrenchment_balcony", EntrenchmentPieces.BalconyPiece::new); + public static final StructurePieceType PORTAL_ROOM_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "entrenchment_portal_room", EntrenchmentPieces.PortalRoomPiece::new); + public static final StructurePieceType WALL_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "entrenchment_wall", EntrenchmentPieces.WallPiece::new); + public static final StructurePieceType KITCHEN_TYPE = Registry.register(Registry.STRUCTURE_PIECE, "entrenchment_kitchen", EntrenchmentPieces.KitchenPiece::new); + + private EntrenchmentPieceTypes() {} + + public static void init() {} + } + + public static void init() { + EntrenchmentPieceTypes.init(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureSetKeys.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureSetKeys.java new file mode 100644 index 00000000..aa933cd4 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureSetKeys.java @@ -0,0 +1,19 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.structure.StructureSet; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECStructureSetKeys { + public static final ResourceKey SHELTER = createKey("shelter"); + public static final ResourceKey NETHER_WARFIELD = createKey("nether_warfield"); + public static final ResourceKey ENTRENCHMENT = createKey("entrenchment"); + public static final ResourceKey CAMP = createKey("camp"); + + private static ResourceKey createKey(String name) { + return ResourceKey.create(Registry.STRUCTURE_SET_REGISTRY, new ResourceLocation(MODID, name)); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureSets.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureSets.java new file mode 100644 index 00000000..0349b07c --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureSets.java @@ -0,0 +1,58 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.util.ListAppendable; +import net.minecraft.core.Holder; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.data.worldgen.StructureSets; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.levelgen.structure.Structure; +import net.minecraft.world.level.levelgen.structure.StructureSet; +import net.minecraft.world.level.levelgen.structure.placement.RandomSpreadStructurePlacement; +import net.minecraft.world.level.levelgen.structure.placement.RandomSpreadType; +import net.minecraft.world.level.levelgen.structure.placement.StructurePlacement; + +import java.util.List; + +@SuppressWarnings("unused") +public class ECStructureSets { + public static final Holder SET_SHELTER_HOUSE = register( + ECStructureSetKeys.SHELTER, + ECStructures.SHELTER, + new RandomSpreadStructurePlacement(64, 16, RandomSpreadType.LINEAR, 1926081709) + ); + public static final Holder SET_NETHER_WARFIELD = register( + ECStructureSetKeys.NETHER_WARFIELD, + ECStructures.NETHER_WARFIELD, + new RandomSpreadStructurePlacement(32, 8, RandomSpreadType.LINEAR, 20387312) + ); + + public static final Holder SET_ENTRENCHMENT = register( + ECStructureSetKeys.ENTRENCHMENT, + ECStructures.ENTRENCHMENT, + new RandomSpreadStructurePlacement(40, 24, RandomSpreadType.TRIANGULAR, 23456) + ); + + public static final Holder SET_CAMP = register( + ECStructureSetKeys.CAMP, + ECStructures.ALL_CAMPS, + new RandomSpreadStructurePlacement(50, 20, RandomSpreadType.LINEAR, 200013907) + ); + + @SuppressWarnings("unchecked") + public static void init() { + ((ListAppendable)(Object)(StructureSets.VILLAGES.get())).appendAll(ECStructures.ALL_VILLAGES); + } + + static Holder register(ResourceKey key, StructureSet set) { + return BuiltinRegistries.register(BuiltinRegistries.STRUCTURE_SETS, key, set); + } + + static Holder register(ResourceKey key, Holder structure, StructurePlacement placement) { + return register(key, new StructureSet(structure, placement)); + } + + @SuppressWarnings("SameParameterValue") + static Holder register(ResourceKey key, List structures, StructurePlacement placement) { + return register(key, new StructureSet(structures, placement)); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureTags.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureTags.java new file mode 100644 index 00000000..36532ff3 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureTags.java @@ -0,0 +1,17 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.levelgen.structure.Structure; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECStructureTags { + public static final TagKey ON_SAR_EXPLORER_MAPS = create("on_sar_explorer_maps"); + public static final TagKey ON_GEOCENTER_EXPLORER_MAPS = create("on_geocenter_explorer_maps"); + + private static TagKey create(String name) { + return TagKey.create(Registry.STRUCTURE_REGISTRY, new ResourceLocation(MODID, name)); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureTypes.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureTypes.java new file mode 100644 index 00000000..ec61ad50 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructureTypes.java @@ -0,0 +1,16 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.world.structures.camp.CampFeature; +import com.hexagram2021.emeraldcraft.common.world.structures.entrenchment.EntrenchmentFeature; +import com.hexagram2021.emeraldcraft.common.world.structures.shelter.ShelterFeature; +import net.minecraft.core.Registry; +import net.minecraft.world.level.levelgen.structure.StructureType; + +public class ECStructureTypes { + public static final StructureType SHELTER = Registry.register(Registry.STRUCTURE_TYPES, "shelter", () -> ShelterFeature.CODEC); + public static final StructureType ENTRENCHMENT = Registry.register(Registry.STRUCTURE_TYPES, "entrenchment", () -> EntrenchmentFeature.CODEC); + public static final StructureType CAMP = Registry.register(Registry.STRUCTURE_TYPES, "camp", () -> CampFeature.CODEC); + + public static void init() { + } +} 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..f8c3bd6a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECStructures.java @@ -0,0 +1,128 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.google.common.collect.Lists; +import com.hexagram2021.emeraldcraft.api.camp.CampTypes; +import com.hexagram2021.emeraldcraft.common.world.structures.camp.CampFeature; +import com.hexagram2021.emeraldcraft.common.world.structures.shelter.ShelterFeature; +import com.hexagram2021.emeraldcraft.common.world.pools.NetherWarfieldPools; +import com.hexagram2021.emeraldcraft.common.world.pools.SwampVillagePools; +import com.hexagram2021.emeraldcraft.common.world.structures.entrenchment.EntrenchmentFeature; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.tags.TagKey; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.VerticalAnchor; +import net.minecraft.world.level.levelgen.heightproviders.ConstantHeight; +import net.minecraft.world.level.levelgen.structure.Structure; +import net.minecraft.world.level.levelgen.structure.StructureSet; +import net.minecraft.world.level.levelgen.structure.StructureSpawnOverride; +import net.minecraft.world.level.levelgen.structure.TerrainAdjustment; +import net.minecraft.world.level.levelgen.structure.structures.JigsawStructure; + +import java.util.List; +import java.util.Map; + +public class ECStructures { + public static final Holder SHELTER = register( + ECStructureKeys.SHELTER, + new ShelterFeature(structure(ECBiomeTags.HAS_SHELTER, TerrainAdjustment.BEARD_THIN)) + ); + public static final Holder NETHER_WARFIELD = register( + ECStructureKeys.NETHER_WARFIELD, + new JigsawStructure( + structure(ECBiomeTags.HAS_NETHER_WARFIELD, TerrainAdjustment.BEARD_THIN), NetherWarfieldPools.START, 6, + ConstantHeight.of(VerticalAnchor.absolute(60)), true + ) + ); + public static final Holder ENTRENCHMENT = register( + ECStructureKeys.ENTRENCHMENT, + new EntrenchmentFeature(structure(ECBiomeTags.HAS_ENTRENCHMENT, TerrainAdjustment.BURY)) + ); + public static final Holder VILLAGE_SWAMP = register( + ECStructureKeys.VILLAGE_SWAMP, + new JigsawStructure( + structure(ECBiomeTags.HAS_VILLAGE_SWAMP, TerrainAdjustment.BEARD_THIN), SwampVillagePools.START, 6, + ConstantHeight.of(VerticalAnchor.absolute(0)), true, Heightmap.Types.WORLD_SURFACE_WG + ) + ); + + public static final Holder BADLANDS_CAMP = register( + ECStructureKeys.BADLANDS_CAMP, + new CampFeature(structure(ECBiomeTags.HAS_CAMP_BADLANDS, TerrainAdjustment.BEARD_THIN), CampTypes.BADLANDS) + ); + public static final Holder BIRCH_CAMP = register( + ECStructureKeys.BIRCH_CAMP, + new CampFeature(structure(ECBiomeTags.HAS_CAMP_BIRCH, TerrainAdjustment.BEARD_THIN), CampTypes.BIRCH) + ); + public static final Holder DESERT_CAMP = register( + ECStructureKeys.DESERT_CAMP, + new CampFeature(structure(ECBiomeTags.HAS_CAMP_DESERT, TerrainAdjustment.BEARD_THIN), CampTypes.DESERT) + ); + public static final Holder JUNGLE_CAMP = register( + ECStructureKeys.JUNGLE_CAMP, + new CampFeature(structure(ECBiomeTags.HAS_CAMP_JUNGLE, TerrainAdjustment.BEARD_THIN), CampTypes.JUNGLE) + ); + public static final Holder PLAINS_CAMP = register( + ECStructureKeys.PLAINS_CAMP, + new CampFeature(structure(ECBiomeTags.HAS_CAMP_PLAINS, TerrainAdjustment.BEARD_THIN), CampTypes.PLAINS) + ); + public static final Holder SAVANNA_CAMP = register( + ECStructureKeys.SAVANNA_CAMP, + new CampFeature(structure(ECBiomeTags.HAS_CAMP_SAVANNA, TerrainAdjustment.BEARD_THIN), CampTypes.SAVANNA) + ); + public static final Holder SNOW_CAMP = register( + ECStructureKeys.SNOW_CAMP, + new CampFeature(structure(ECBiomeTags.HAS_CAMP_SNOW, TerrainAdjustment.BEARD_THIN), CampTypes.SNOW) + ); + public static final Holder STONY_CAMP = register( + ECStructureKeys.STONY_CAMP, + new CampFeature(structure(ECBiomeTags.HAS_CAMP_STONY, TerrainAdjustment.BEARD_THIN), CampTypes.STONY) + ); + public static final Holder SWAMP_CAMP = register( + ECStructureKeys.SWAMP_CAMP, + new CampFeature(structure(ECBiomeTags.HAS_CAMP_SWAMP, TerrainAdjustment.BEARD_THIN), CampTypes.SWAMP) + ); + public static final Holder TAIGA_CAMP = register( + ECStructureKeys.TAIGA_CAMP, + new CampFeature(structure(ECBiomeTags.HAS_CAMP_TAIGA, TerrainAdjustment.BEARD_THIN), CampTypes.TAIGA) + ); + + public static final List ALL_CAMPS = Lists.newArrayList( + StructureSet.entry(BADLANDS_CAMP), StructureSet.entry(BIRCH_CAMP), + StructureSet.entry(DESERT_CAMP), StructureSet.entry(JUNGLE_CAMP), + StructureSet.entry(PLAINS_CAMP), StructureSet.entry(SAVANNA_CAMP), + StructureSet.entry(SNOW_CAMP), StructureSet.entry(STONY_CAMP), + StructureSet.entry(SWAMP_CAMP), StructureSet.entry(TAIGA_CAMP) + ); + + public static final List ALL_VILLAGES = Lists.newArrayList( + StructureSet.entry(ECStructures.VILLAGE_SWAMP) + ); + + private static Holder register(ResourceKey id, Structure structure) { + return BuiltinRegistries.register(BuiltinRegistries.STRUCTURES, id, structure); + } + + @SuppressWarnings("SameParameterValue") + private static Structure.StructureSettings structure(TagKey biome, Map mobs, + GenerationStep.Decoration step, TerrainAdjustment adjustment) { + return new Structure.StructureSettings(biomes(biome), mobs, step, adjustment); + } + + @SuppressWarnings("SameParameterValue") + private static Structure.StructureSettings structure(TagKey biome, TerrainAdjustment adjustment) { + return structure(biome, Map.of(), GenerationStep.Decoration.SURFACE_STRUCTURES, adjustment); + } + + @SuppressWarnings("deprecation") + private static HolderSet biomes(TagKey biome) { + return BuiltinRegistries.BIOME.getOrCreateTag(biome); + } + + public static void init() {} +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECTriggers.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECTriggers.java new file mode 100644 index 00000000..ae19e86c --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECTriggers.java @@ -0,0 +1,12 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import com.hexagram2021.emeraldcraft.common.util.triggers.*; +import net.minecraft.advancements.CriteriaTriggers; + +public class ECTriggers { + public static final PiglinCuteyTrigger PIGLIN_CUTEY = CriteriaTriggers.register(new PiglinCuteyTrigger()); + public static final CuredZombifiedPiglinTrigger CURED_ZOMBIFIED_PIGLIN = CriteriaTriggers.register(new CuredZombifiedPiglinTrigger()); + public static final CuredPhantomTrigger CURED_PHANTOM = CriteriaTriggers.register(new CuredPhantomTrigger()); + + public static void init() { } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECVillagePlacedFeatures.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECVillagePlacedFeatures.java new file mode 100644 index 00000000..6f23e757 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECVillagePlacedFeatures.java @@ -0,0 +1,35 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Holder; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.data.worldgen.features.TreeFeatures; +import net.minecraft.data.worldgen.features.VegetationFeatures; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.placement.BlockPredicateFilter; +import net.minecraft.world.level.levelgen.placement.PlacedFeature; +import net.minecraft.world.level.levelgen.placement.PlacementModifier; + +import java.util.List; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECVillagePlacedFeatures { + + public static final Holder DARK_OAK_VILLAGE = register( + "dark_oak", TreeFeatures.DARK_OAK, List.of( + BlockPredicateFilter.forPredicate(BlockPredicate.wouldSurvive(Blocks.DARK_OAK_SAPLING.defaultBlockState(), BlockPos.ZERO)) + ) + ); + + public static final Holder FLOWER_SWAMP_VILLAGE = register( + "flower_swamp", VegetationFeatures.FLOWER_SWAMP, List.of() + ); + + private static Holder register(String id, Holder> cf, List modifiers) { + return BuiltinRegistries.register(BuiltinRegistries.PLACED_FEATURE, new ResourceLocation(MODID, id), new PlacedFeature(Holder.hackyErase(cf), List.copyOf(modifiers))); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECWoodType.java b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECWoodType.java new file mode 100644 index 00000000..91e4f55e --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/register/ECWoodType.java @@ -0,0 +1,12 @@ +package com.hexagram2021.emeraldcraft.common.register; + +import net.minecraft.world.level.block.state.properties.WoodType; + +public class ECWoodType { + public static final WoodType GINKGO = WoodType.register(WoodType.create("ec_ginkgo")); + public static final WoodType PALM = WoodType.register(WoodType.create("ec_palm")); + public static final WoodType PEACH = WoodType.register(WoodType.create("ec_peach")); + public static final WoodType PURPURACEUS = WoodType.register(WoodType.create("ec_purpuraceus")); + + public static void init() {} +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/BiomeUtil.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/BiomeUtil.java new file mode 100644 index 00000000..8761aa62 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/BiomeUtil.java @@ -0,0 +1,174 @@ +package com.hexagram2021.emeraldcraft.common.util; + +import com.google.common.collect.Lists; +import com.hexagram2021.emeraldcraft.common.register.ECBiomeKeys; +import net.minecraft.client.Minecraft; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.biome.Biome; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.event.level.LevelEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.loading.FMLEnvironment; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.ForgeRegistry; + +import java.util.Iterator; +import java.util.List; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; +import static com.hexagram2021.emeraldcraft.common.util.RegistryHelper.getRegistryName; + +@SuppressWarnings("unused") +@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE, modid = MODID) +public class BiomeUtil { + private static final List worldList = Lists.newArrayList(); + + @SafeVarargs + public static ResourceKey biomeOrFallback(Registry biomeRegistry, ECBiomeKeys.BiomeKey key, ResourceKey... biomes) { + if (isKeyRegistered(biomeRegistry, key)) { + return key.key(); + } + for(ResourceKey biome: biomes) { + if(biome != null) { + return biome; + } + } + throw new RuntimeException("Failed to find fallback for biome!"); + } + + public static boolean isKeyRegistered(Registry registry, ECBiomeKeys.BiomeKey key) { + return key != null && key.generate() && registry.get(key.key()) != null; + } + + public static ResourceKey getBiomeKey(Biome biome) { + ResourceLocation name = getRegistryName(biome); + if (biome == null) { + throw new RuntimeException("Cannot get registry key for null biome"); + } else if (name == null) { + if (FMLEnvironment.dist == Dist.CLIENT) { + return getClientKey(biome); + } else { + throw new RuntimeException("Failed to get registry key for biome!"); + } + } else { + return ResourceKey.create(Registry.BIOME_REGISTRY, name); + } + } + + public static Biome getBiome(ResourceKey key) { + Biome biome = ForgeRegistries.BIOMES.getValue(key.location()); + if (biome == null) { + if (FMLEnvironment.dist == Dist.CLIENT) { + try { + biome = getClientBiome(key); + } catch (Exception var3) { + ECLogger.error(var3.getMessage()); + } + + if (biome == null) { + biome = getBiomeFromWorlds(key); + } + + return biome; + } + + if (FMLEnvironment.dist == Dist.DEDICATED_SERVER) { + return getBiomeFromWorlds(key); + } + } + + return biome; + } + + public static Biome getBiome(int id) { + if (id == -1) { + throw new RuntimeException("Attempted to get biome with id -1"); + } else { + return getBiome(((ForgeRegistry)ForgeRegistries.BIOMES).getKey(id)); + } + } + + public static int getBiomeId(Biome biome) { + if (biome == null) { + throw new RuntimeException("Attempted to get id of null biome"); + } else { + int id = ((ForgeRegistry)ForgeRegistries.BIOMES).getID(biome); + if (id == -1) { + throw new RuntimeException("Biome id is -1 for biome " + getRegistryName(biome)); + } else { + return id; + } + } + } + + public static int getBiomeId(ResourceKey key) { + return getBiomeId(getBiome(key)); + } + + public static boolean exists(ResourceKey key) { + return ForgeRegistries.BIOMES.containsKey(key.location()); + } + + public static boolean exists(int id) { + return getBiome(id) != null; + } + + @OnlyIn(Dist.CLIENT) + private static Registry getClientBiomeRegistry() { + Minecraft minecraft = Minecraft.getInstance(); + Level world = minecraft.level; + if (world == null) { + throw new RuntimeException("Cannot acquire biome registry when the world is null."); + } else { + return world.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY); + } + } + + @OnlyIn(Dist.CLIENT) + private static ResourceKey getClientKey(Biome biome) { + return getClientBiomeRegistry().getResourceKey(biome).orElseThrow( + () -> new RuntimeException("Failed to get client registry key for biome!") + ); + } + + @OnlyIn(Dist.CLIENT) + private static Biome getClientBiome(ResourceKey key) { + Biome biome = getClientBiomeRegistry().get(key); + if (biome == null) { + throw new RuntimeException("Failed to get client biome for registry key " + key.location() + "!"); + } + + return biome; + } + + private static Biome getBiomeFromWorlds(ResourceKey key) { + Iterator var1 = worldList.iterator(); + + Biome biome; + do { + if (!var1.hasNext()) { + throw new RuntimeException("Failed to get biome for registry key " + key.location() + " !"); + } + + Level world = var1.next(); + biome = world.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY).get(key); + } while(biome == null); + + return biome; + } + + @SubscribeEvent + public static void onWorldLoad(LevelEvent.Load event) { + worldList.add((Level)event.getLevel()); + } + + @SubscribeEvent + public static void onWorldUnload(LevelEvent.Unload event) { + worldList.remove((Level)event.getLevel()); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/Convertible.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/Convertible.java new file mode 100644 index 00000000..5bbca76e --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/Convertible.java @@ -0,0 +1,24 @@ +package com.hexagram2021.emeraldcraft.common.util; + +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.monster.Phantom; +import net.minecraft.world.entity.monster.ZombifiedPiglin; + +import javax.annotation.Nullable; +import java.util.UUID; + +public interface Convertible { + int getConversionProgress(); + int getConversionRemainTime(); + void setConversionRemainTime(int time); + void decreaseConversionRemainTime(int dec); + void startConverting(@Nullable UUID player, int time); + void finishConversion(ServerLevel level); + boolean isConverting(); + + EntityDataAccessor DATA_PIGLIN_CONVERTING_ID = SynchedEntityData.defineId(ZombifiedPiglin.class, EntityDataSerializers.BOOLEAN); + EntityDataAccessor DATA_PHANTOM_CONVERTING_ID = SynchedEntityData.defineId(Phantom.class, EntityDataSerializers.BOOLEAN); +} 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..8c5d1c29 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECFoods.java @@ -0,0 +1,99 @@ +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 CHILI = + new FoodProperties.Builder().nutrition(1).saturationMod(0.3F).build(); + 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(); + + public static final FoodProperties GINKGO_NUT = + new FoodProperties.Builder().nutrition(2).saturationMod(1.2F) + .effect(() -> new MobEffectInstance(MobEffects.POISON, 40, 0), 0.05F) + .build(); + + public static final FoodProperties PEACH = + new FoodProperties.Builder().nutrition(2).saturationMod(0.3F).build(); + + public static final FoodProperties GOLDEN_PEACH = + new FoodProperties.Builder().nutrition(6).saturationMod(0.6F) + .effect(() -> new MobEffectInstance(MobEffects.HEALTH_BOOST, 800, 1), 1.0F) + .effect(() -> new MobEffectInstance(MobEffects.SATURATION, 12, 0), 1.0F) + .alwaysEat().build(); + + public static final FoodProperties COOKED_TROPICAL_FISH = + new FoodProperties.Builder().nutrition(5).saturationMod(0.6F).build(); + + public static final FoodProperties POTION_COOKIE = + new FoodProperties.Builder().nutrition(2).saturationMod(0.1F) + .effect(() -> new MobEffectInstance(MobEffects.WITHER, 400, 1), 0.8F) + .effect(() -> new MobEffectInstance(MobEffects.HUNGER, 800, 0), 1.0F) + .effect(() -> new MobEffectInstance(MobEffects.CONFUSION, 400, 1), 0.8F) + .build(); + + public static final FoodProperties COOKED_PURPURACEUS_FUNGUS = + new FoodProperties.Builder().nutrition(4).saturationMod(1.2F) + .effect(() -> new MobEffectInstance(MobEffects.SATURATION, 7, 0), 0.05F) + .build(); + + public static final FoodProperties BOILED_EGG = + new FoodProperties.Builder().nutrition(2).saturationMod(0.6F).build(); + + public static final FoodProperties CHORUS_FLOWER_EGGDROP_SOUP = + new FoodProperties.Builder().nutrition(3).saturationMod(1.2F).build(); + public static final FoodProperties CARAMELIZED_POTATO = + new FoodProperties.Builder().nutrition(5).saturationMod(0.6F).build(); + public static final FoodProperties ROUGAMO = + new FoodProperties.Builder().nutrition(12).saturationMod(1.2F).build(); + public static final FoodProperties BEEF_AND_POTATO_STEW = + new FoodProperties.Builder().nutrition(10).saturationMod(0.8F).build(); + public static final FoodProperties BRAISED_CHICKEN = + new FoodProperties.Builder().nutrition(10).saturationMod(0.8F).build(); + + public static final FoodProperties HERRING = + new FoodProperties.Builder().nutrition(1).saturationMod(0.1F).build(); + public static final FoodProperties PURPLE_SPOTTED_BIGEYE = + new FoodProperties.Builder().nutrition(2).saturationMod(0.1F).build(); + + public static final FoodProperties COOKED_HERRING = + new FoodProperties.Builder().nutrition(5).saturationMod(0.6F).build(); + public static final FoodProperties COOKED_PURPLE_SPOTTED_BIGEYE = + new FoodProperties.Builder().nutrition(6).saturationMod(0.6F).build(); + public static final FoodProperties SAUSAGE = + new FoodProperties.Builder().nutrition(4).saturationMod(0.6F).build(); + public static final FoodProperties COOKED_SAUSAGE = + new FoodProperties.Builder().nutrition(8).saturationMod(1.2F).build(); + public static final FoodProperties GLUTEN = + new FoodProperties.Builder().nutrition(4).saturationMod(0.8F).build(); + public static final FoodProperties WARDEN_HEART = + new FoodProperties.Builder().nutrition(8).saturationMod(0.8F) + .effect(() -> new MobEffectInstance(MobEffects.DARKNESS, 800, 0), 1.0F) + .build(); + public static final FoodProperties STIR_FRIED_WARDEN_HEART = + new FoodProperties.Builder().nutrition(12).saturationMod(1.2F) + .effect(() -> new MobEffectInstance(MobEffects.ABSORPTION, 6000, 3), 1.0F) + .effect(() -> new MobEffectInstance(MobEffects.DAMAGE_RESISTANCE, 6000, 1), 1.0F) + .build(); + public static final FoodProperties APPLE_JUICE = + new FoodProperties.Builder().nutrition(3).saturationMod(0.6F).build(); + public static final FoodProperties BEETROOT_JUICE = + new FoodProperties.Builder().nutrition(5).saturationMod(0.6F).build(); + public static final FoodProperties CARROT_JUICE = + new FoodProperties.Builder().nutrition(3).saturationMod(0.6F).build(); + public static final FoodProperties MELON_JUICE = + new FoodProperties.Builder().nutrition(2).saturationMod(0.6F).build(); + public static final FoodProperties PEACH_JUICE = + new FoodProperties.Builder().nutrition(2).saturationMod(0.6F).build(); + public static final FoodProperties PUMPKIN_JUICE = + new FoodProperties.Builder().nutrition(2).saturationMod(0.6F).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..77a03653 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECLogger.java @@ -0,0 +1,48 @@ +package com.hexagram2021.emeraldcraft.common.util; + +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.Logger; + +@SuppressWarnings("unused") +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); + } + + public static void debug(String format, Object... params) { + if(debugMode) + info("[DEBUG:] "+format, params); + } +} 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..4422527c --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ECSounds.java @@ -0,0 +1,87 @@ +package com.hexagram2021.emeraldcraft.common.util; + +import net.minecraft.core.Registry; +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.registries.RegisterEvent; + +import java.util.HashMap; +import java.util.Map; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECSounds { + static final Map registeredEvents = new HashMap<>(); + //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"); + + public static final SoundEvent HIGAN_BANA_DROP_LEAVES = registerSound("flower.drop_leaves"); + + public static final SoundEvent HERRING_AMBIENT = registerSound("herring.ambient"); + public static final SoundEvent HERRING_FLOP = registerSound("herring.flop"); + public static final SoundEvent HERRING_HURT = registerSound("herring.hurt"); + public static final SoundEvent HERRING_DEATH = registerSound("herring.death"); + public static final SoundEvent BIGEYE_AMBIENT = registerSound("purple_spotted_bigeye.ambient"); + public static final SoundEvent BIGEYE_FLOP = registerSound("purple_spotted_bigeye.flop"); + public static final SoundEvent BIGEYE_HURT = registerSound("purple_spotted_bigeye.hurt"); + public static final SoundEvent BIGEYE_DEATH = registerSound("purple_spotted_bigeye.death"); + + public static final SoundEvent WRAITH_AMBIENT = registerSound("wraith.ambient"); + public static final SoundEvent WRAITH_HURT = registerSound("wraith.hurt"); + public static final SoundEvent WRAITH_DEATH = registerSound("wraith.death"); + + public static final SoundEvent MANTA_AMBIENT = registerSound("manta.ambient"); + public static final SoundEvent MANTA_HURT = registerSound("manta.hurt"); + public static final SoundEvent MANTA_DEATH = registerSound("manta.death"); + + private static SoundEvent registerSound(String name) { + ResourceLocation location = new ResourceLocation(MODID, name); + SoundEvent event = new SoundEvent(location); + registeredEvents.put(location, event); + return event; + } + + public static void init(RegisterEvent event) { + event.register(Registry.SOUND_EVENT_REGISTRY, helper -> registeredEvents.forEach(helper::register)); + } + + @SuppressWarnings("unused") + public static void PlaySoundForPlayer(Entity player, SoundEvent sound, float volume, float pitch) { + if(player instanceof ServerPlayer serverPlayer) + serverPlayer.connection.send(new ClientboundSoundPacket(sound, player.getSoundSource(), + player.getX(), player.getY(), player.getZ(), volume, pitch, serverPlayer.getRandom().nextLong())); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/ListAppendable.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ListAppendable.java new file mode 100644 index 00000000..7cfad202 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/ListAppendable.java @@ -0,0 +1,11 @@ +package com.hexagram2021.emeraldcraft.common.util; + +import java.util.Iterator; +import java.util.List; + +@SuppressWarnings({"unused", "UnusedReturnValue"}) +public interface ListAppendable { + List append(E entry); + List appendAll(Iterator entries); + List appendAll(Iterable entries); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/PlayerHealable.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/PlayerHealable.java new file mode 100644 index 00000000..71f229c9 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/PlayerHealable.java @@ -0,0 +1,15 @@ +package com.hexagram2021.emeraldcraft.common.util; + +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.UUID; + +public interface PlayerHealable { + boolean isPlayerHealed(); + void setPlayerHealed(boolean healed); + + @NotNull + UUID getHealedPlayer(); + void setHealedPlayer(@Nullable UUID player); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/RegistryHelper.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/RegistryHelper.java new file mode 100644 index 00000000..49733940 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/RegistryHelper.java @@ -0,0 +1,28 @@ +package com.hexagram2021.emeraldcraft.common.util; + +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.npc.VillagerProfession; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.registries.ForgeRegistries; + +public interface RegistryHelper { + static ResourceLocation getRegistryName(Item item) { + return ForgeRegistries.ITEMS.getKey(item); + } + static ResourceLocation getRegistryName(Block block) { + return ForgeRegistries.BLOCKS.getKey(block); + } + static ResourceLocation getRegistryName(VillagerProfession profession) { + return ForgeRegistries.VILLAGER_PROFESSIONS.getKey(profession); + } + static ResourceLocation getRegistryName(Biome biome) { + return ForgeRegistries.BIOMES.getKey(biome); + } + static ResourceLocation getRegistryName(EntityType entityType) { + return ForgeRegistries.ENTITY_TYPES.getKey(entityType); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/TradeUtil.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/TradeUtil.java new file mode 100644 index 00000000..48f8464a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/TradeUtil.java @@ -0,0 +1,74 @@ +package com.hexagram2021.emeraldcraft.common.util; + +import com.hexagram2021.emeraldcraft.common.crafting.TradeShadowRecipe; +import com.hexagram2021.emeraldcraft.common.world.village.ECTrades; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.npc.VillagerProfession; +import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.trading.MerchantOffer; + +import javax.annotation.Nullable; +import java.util.Map; +import java.util.Set; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; +import static com.hexagram2021.emeraldcraft.common.util.RegistryHelper.getRegistryName; + +public class TradeUtil { + private static void addTradeShadowRecipe(VillagerTrades.ItemListing list, LivingEntity trader, @Nullable VillagerProfession profession, int level, + Set names, Map> shadows) { + MerchantOffer offer; + if(list instanceof VillagerTrades.TreasureMapForEmeralds || list instanceof ECTrades.NetherStructureMapForEmeralds) { + offer = new MerchantOffer(new ItemStack(Items.EMERALD, 13), new ItemStack(Items.COMPASS), new ItemStack(Items.FILLED_MAP), 12, 5, 0.2F); + } else { + offer = list.getOffer(trader, trader.getRandom()); + } + if(offer != null) { + ItemStack costAItem = offer.getBaseCostA(); + ItemStack costBItem = offer.getCostB(); + ItemStack resultItem = offer.getResult(); + costAItem.setTag(null); + costBItem.setTag(null); + resultItem.setTag(null); + String costA = getRegistryName(costAItem.getItem()).toString().replace(':', '_') + "_" + costAItem.getCount(); + String costB = getRegistryName(costBItem.getItem()).toString().replace(':', '_') + "_" + costBItem.getCount(); + String result = getRegistryName(resultItem.getItem()).toString().replace(':', '_') + "_" + resultItem.getCount(); + + String name; + if(profession == null) { + name = getRegistryName(trader.getType()).toString().replace(':', '_') + + "_" + costA + "_" + costB + "_" + result; + } else { + name = getRegistryName(profession).toString().replace(':', '_') + + "_" + costA + "_" + costB + "_" + result; + } + if(names.contains(name)) { + ECLogger.error("Duplicated trade entry: " + name); + } else { + names.add(name); + ResourceLocation id = new ResourceLocation(MODID, "trade_shadow/" + name); + shadows.put(id, new TradeShadowRecipe(id, costAItem, costBItem, resultItem, trader.getType(), profession, level, offer.getXp())); + } + } + } + + public static void addTradeShadowRecipesFromListingMap(Int2ObjectMap listingMap, EntityType entityType, @Nullable VillagerProfession profession, + ServerLevel world, Set names, Map> shadows) { + listingMap.forEach((level, lists) -> { + T entity = entityType.create(world); + if(entity != null) { + for(VillagerTrades.ItemListing list: lists) { + addTradeShadowRecipe(list, entity, profession, level, names, shadows); + } + entity.discard(); + } + }); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/Vec3Util.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/Vec3Util.java new file mode 100644 index 00000000..e3556166 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/Vec3Util.java @@ -0,0 +1,12 @@ +package com.hexagram2021.emeraldcraft.common.util; + +import net.minecraft.world.phys.Vec3; + +public class Vec3Util { + public static final Vec3 UP = new Vec3(0.0D, 1.0D, 0.0D); + public static final Vec3 DOWN = new Vec3(0.0D, -1.0D, 0.0D); + public static final Vec3 LEFT = new Vec3(-1.0D, 0.0D, 0.0D); + public static final Vec3 RIGHT = new Vec3(1.0D, 0.0D, 0.0D); + public static final Vec3 FORWARD = new Vec3(0.0D, 0.0D, 1.0D); + public static final Vec3 BACKWARD = new Vec3(0.0D, 0.0D, -1.0D); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/placement_modifiers/AboveHeightmapFilter.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/placement_modifiers/AboveHeightmapFilter.java new file mode 100644 index 00000000..6dca19c7 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/placement_modifiers/AboveHeightmapFilter.java @@ -0,0 +1,37 @@ +package com.hexagram2021.emeraldcraft.common.util.placement_modifiers; + +import com.hexagram2021.emeraldcraft.common.register.ECPlacementModifierType; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.core.BlockPos; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.placement.PlacementContext; +import net.minecraft.world.level.levelgen.placement.PlacementModifier; +import net.minecraft.world.level.levelgen.placement.PlacementModifierType; +import org.jetbrains.annotations.NotNull; + +import java.util.stream.Stream; + +public class AboveHeightmapFilter extends PlacementModifier { + public static final Codec CODEC = RecordCodecBuilder.create(builder -> builder.group( + Heightmap.Types.CODEC.fieldOf("above_type").forGetter(nearWaterPlacementFilter -> nearWaterPlacementFilter.heightmap) + ).apply(builder, AboveHeightmapFilter::new)); + + private final Heightmap.Types heightmap; + + public AboveHeightmapFilter(Heightmap.Types heightmap) { + this.heightmap = heightmap; + } + + + @Override @NotNull + public Stream getPositions(PlacementContext placementContext, @NotNull RandomSource random, BlockPos blockPos) { + return blockPos.getY() >= placementContext.getHeight(heightmap, blockPos.getX(), blockPos.getZ()) ? Stream.of(blockPos) : Stream.empty(); + } + + @Override @NotNull + public PlacementModifierType type() { + return ECPlacementModifierType.ABOVE_HEIGHTMAP_FILTER.get(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/triggers/CuredPhantomTrigger.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/triggers/CuredPhantomTrigger.java new file mode 100644 index 00000000..8a3bad18 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/triggers/CuredPhantomTrigger.java @@ -0,0 +1,60 @@ +package com.hexagram2021.emeraldcraft.common.util.triggers; + +import com.google.gson.JsonObject; +import com.hexagram2021.emeraldcraft.common.entities.mobs.MantaEntity; +import net.minecraft.advancements.critereon.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.monster.Phantom; +import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class CuredPhantomTrigger extends SimpleCriterionTrigger { + static final ResourceLocation ID = new ResourceLocation(MODID, "cured_phantom"); + + @Override @NotNull + public ResourceLocation getId() { + return ID; + } + + @Override @NotNull + public CuredPhantomTrigger.TriggerInstance createInstance(@NotNull JsonObject json, @NotNull EntityPredicate.Composite entity, @NotNull DeserializationContext context) { + EntityPredicate.Composite phantom = EntityPredicate.Composite.fromJson(json, "phantom", context); + EntityPredicate.Composite manta = EntityPredicate.Composite.fromJson(json, "manta", context); + return new CuredPhantomTrigger.TriggerInstance(entity, phantom, manta); + } + + public void trigger(ServerPlayer player, Phantom phantom, MantaEntity manta) { + LootContext phantomContext = EntityPredicate.createContext(player, phantom); + LootContext mantaContext = EntityPredicate.createContext(player, manta); + this.trigger(player, instance -> instance.matches(phantomContext, mantaContext)); + } + + public static class TriggerInstance extends AbstractCriterionTriggerInstance { + private final EntityPredicate.Composite phantom; + private final EntityPredicate.Composite manta; + + public TriggerInstance(EntityPredicate.Composite entity, EntityPredicate.Composite phantom, EntityPredicate.Composite manta) { + super(CuredPhantomTrigger.ID, entity); + this.phantom = phantom; + this.manta = manta; + } + + public boolean matches(LootContext phantomContext, LootContext mantaContext) { + if (!this.phantom.matches(phantomContext)) { + return false; + } + return this.manta.matches(mantaContext); + } + + @Override @NotNull + public JsonObject serializeToJson(@NotNull SerializationContext context) { + JsonObject jsonobject = super.serializeToJson(context); + jsonobject.add("phantom", this.phantom.toJson(context)); + jsonobject.add("manta", this.manta.toJson(context)); + return jsonobject; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/triggers/CuredZombifiedPiglinTrigger.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/triggers/CuredZombifiedPiglinTrigger.java new file mode 100644 index 00000000..29345e46 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/triggers/CuredZombifiedPiglinTrigger.java @@ -0,0 +1,60 @@ +package com.hexagram2021.emeraldcraft.common.util.triggers; + +import com.google.gson.JsonObject; +import net.minecraft.advancements.critereon.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.monster.ZombifiedPiglin; +import net.minecraft.world.entity.monster.piglin.AbstractPiglin; +import net.minecraft.world.level.storage.loot.LootContext; +import org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class CuredZombifiedPiglinTrigger extends SimpleCriterionTrigger { + static final ResourceLocation ID = new ResourceLocation(MODID, "cured_zombified_piglin"); + + @Override @NotNull + public ResourceLocation getId() { + return ID; + } + + @Override @NotNull + public CuredZombifiedPiglinTrigger.TriggerInstance createInstance(@NotNull JsonObject json, @NotNull EntityPredicate.Composite entity, @NotNull DeserializationContext context) { + EntityPredicate.Composite zombifiedPiglin = EntityPredicate.Composite.fromJson(json, "zombified_piglin", context); + EntityPredicate.Composite piglin = EntityPredicate.Composite.fromJson(json, "piglin", context); + return new CuredZombifiedPiglinTrigger.TriggerInstance(entity, zombifiedPiglin, piglin); + } + + public void trigger(ServerPlayer player, ZombifiedPiglin zombifiedPiglin, AbstractPiglin piglin) { + LootContext zombifiedPiglinContext = EntityPredicate.createContext(player, zombifiedPiglin); + LootContext piglinContext = EntityPredicate.createContext(player, piglin); + this.trigger(player, instance -> instance.matches(zombifiedPiglinContext, piglinContext)); + } + + public static class TriggerInstance extends AbstractCriterionTriggerInstance { + private final EntityPredicate.Composite zombifiedPiglin; + private final EntityPredicate.Composite piglin; + + public TriggerInstance(EntityPredicate.Composite entity, EntityPredicate.Composite zombifiedPiglin, EntityPredicate.Composite piglin) { + super(CuredZombifiedPiglinTrigger.ID, entity); + this.zombifiedPiglin = zombifiedPiglin; + this.piglin = piglin; + } + + public boolean matches(LootContext zombifiedPiglinContext, LootContext piglinContext) { + if (!this.zombifiedPiglin.matches(zombifiedPiglinContext)) { + return false; + } + return this.piglin.matches(piglinContext); + } + + @Override @NotNull + public JsonObject serializeToJson(@NotNull SerializationContext context) { + JsonObject jsonobject = super.serializeToJson(context); + jsonobject.add("zombified_piglin", this.zombifiedPiglin.toJson(context)); + jsonobject.add("piglin", this.piglin.toJson(context)); + return jsonobject; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/util/triggers/PiglinCuteyTrigger.java b/src/main/java/com/hexagram2021/emeraldcraft/common/util/triggers/PiglinCuteyTrigger.java new file mode 100644 index 00000000..71103930 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/util/triggers/PiglinCuteyTrigger.java @@ -0,0 +1,36 @@ +package com.hexagram2021.emeraldcraft.common.util.triggers; + +import com.google.gson.JsonObject; +import net.minecraft.advancements.critereon.AbstractCriterionTriggerInstance; +import net.minecraft.advancements.critereon.DeserializationContext; +import net.minecraft.advancements.critereon.EntityPredicate; +import net.minecraft.advancements.critereon.SimpleCriterionTrigger; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class PiglinCuteyTrigger extends SimpleCriterionTrigger { + static final ResourceLocation ID = new ResourceLocation(MODID, "saved_piglin_cutey"); + + @Override @NotNull + public ResourceLocation getId() { + return ID; + } + + @Override @NotNull + public PiglinCuteyTrigger.TriggerInstance createInstance(@NotNull JsonObject json, @NotNull EntityPredicate.Composite entity, @NotNull DeserializationContext context) { + return new PiglinCuteyTrigger.TriggerInstance(entity); + } + + public void trigger(ServerPlayer player) { + this.trigger(player, instance -> true); + } + + public static class TriggerInstance extends AbstractCriterionTriggerInstance { + public TriggerInstance(EntityPredicate.Composite entity) { + super(PiglinCuteyTrigger.ID, entity); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECBiomeModifiers.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECBiomeModifiers.java new file mode 100644 index 00000000..bb5a3f6e --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECBiomeModifiers.java @@ -0,0 +1,50 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.hexagram2021.emeraldcraft.common.register.ECPlacedFeatures; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraftforge.common.world.BiomeModifier; +import net.minecraftforge.common.world.ModifiableBiomeInfo; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECBiomeModifiers { + private static final DeferredRegister> REGISTER = DeferredRegister.create( + ForgeRegistries.Keys.BIOME_MODIFIER_SERIALIZERS, MODID + ); + + public static final RegistryObject> EC_HIGAN_BANA_MODIFIER = REGISTER.register( + "ec_higan_bana", () -> RecordCodecBuilder.create(builder -> builder.group( + Biome.LIST_CODEC.fieldOf("biomes").forGetter(ECHiganBanaBiomeModifier::biomes) + ).apply(builder, ECHiganBanaBiomeModifier::new)) + ); + + public record ECHiganBanaBiomeModifier(HolderSet biomes) implements BiomeModifier { + + @Override + public void modify(Holder biome, Phase phase, ModifiableBiomeInfo.BiomeInfo.Builder builder) { + if(phase == Phase.ADD && this.biomes.contains(biome)) { + builder.getGenerationSettings().addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, ECPlacedFeatures.FLOWER_HIGAN_BANA); + } + } + + @Override + public Codec codec() { + return EC_HIGAN_BANA_MODIFIER.get(); + } + } + + public static void init(IEventBus bus) { + REGISTER.register(bus); + } +} + + diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECOverworldBiomeBuilder.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECOverworldBiomeBuilder.java new file mode 100644 index 00000000..48248b02 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECOverworldBiomeBuilder.java @@ -0,0 +1,816 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.hexagram2021.emeraldcraft.common.register.ECBiomeKeys; +import com.hexagram2021.emeraldcraft.common.util.BiomeUtil; +import com.mojang.datafixers.util.Pair; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.Biomes; +import net.minecraft.world.level.biome.Climate; + +import terrablender.api.ParameterUtils; + +import java.util.function.Consumer; + +@SuppressWarnings("unchecked") +public class ECOverworldBiomeBuilder { + + public ECOverworldBiomeBuilder() { + } + + private final ParameterUtils.Temperature[] TEMPERATURES = new ParameterUtils.Temperature[]{ + ParameterUtils.Temperature.ICY, + ParameterUtils.Temperature.COOL, + ParameterUtils.Temperature.NEUTRAL, + ParameterUtils.Temperature.WARM, + ParameterUtils.Temperature.HOT + }; + private final ParameterUtils.Humidity[] HUMIDITIES = new ParameterUtils.Humidity[]{ + ParameterUtils.Humidity.ARID, + ParameterUtils.Humidity.DRY, + ParameterUtils.Humidity.NEUTRAL, + ParameterUtils.Humidity.WET, + ParameterUtils.Humidity.HUMID + }; + + + private final ResourceKey[][] OCEANS = new ResourceKey[][] { + {Biomes.DEEP_FROZEN_OCEAN, Biomes.DEEP_COLD_OCEAN, Biomes.DEEP_OCEAN, Biomes.DEEP_LUKEWARM_OCEAN, Biomes.WARM_OCEAN}, + {Biomes.FROZEN_OCEAN, Biomes.COLD_OCEAN, Biomes.OCEAN, Biomes.LUKEWARM_OCEAN, Biomes.WARM_OCEAN} + }; + private final ECBiomeKeys.BiomeKey[][] ISLAND_BIOMES_EC = new ECBiomeKeys.BiomeKey[][] { + {null, null, null, null, ECBiomeKeys.XANADU}, + {null, null, null, null, ECBiomeKeys.XANADU}, + {null, null, null, null, ECBiomeKeys.XANADU}, + {null, null, null, ECBiomeKeys.XANADU, ECBiomeKeys.XANADU}, + {null, null, null, null, ECBiomeKeys.XANADU} + }; + private final ResourceKey[][] MIDDLE_BIOMES = new ResourceKey[][] { + {Biomes.SNOWY_PLAINS, Biomes.SNOWY_PLAINS, Biomes.SNOWY_PLAINS, Biomes.SNOWY_TAIGA, Biomes.TAIGA}, + {Biomes.PLAINS, Biomes.PLAINS, Biomes.FOREST, Biomes.TAIGA, Biomes.OLD_GROWTH_SPRUCE_TAIGA}, + {Biomes.FLOWER_FOREST, Biomes.PLAINS, Biomes.FOREST, Biomes.BIRCH_FOREST, Biomes.DARK_FOREST}, + {Biomes.SAVANNA, Biomes.SAVANNA, Biomes.FOREST, Biomes.JUNGLE, Biomes.JUNGLE}, + {Biomes.DESERT, Biomes.DESERT, Biomes.DESERT, Biomes.DESERT, Biomes.DESERT} + }; + private final ResourceKey[][] MIDDLE_BIOMES_VARIANT = new ResourceKey[][] { + {Biomes.ICE_SPIKES, null, Biomes.SNOWY_TAIGA, null, null}, + {null, null, null, null, Biomes.OLD_GROWTH_PINE_TAIGA}, + {Biomes.SUNFLOWER_PLAINS, null, null, Biomes.OLD_GROWTH_BIRCH_FOREST, null}, + {null, null, Biomes.PLAINS, Biomes.SPARSE_JUNGLE, Biomes.BAMBOO_JUNGLE}, + {null, null, null, null, null} + }; + private final ECBiomeKeys.BiomeKey[][] MIDDLE_BIOMES_EC = new ECBiomeKeys.BiomeKey[][] { + {null, null, null, null, null}, + {null, null, null, null, null}, + {null, null, null, ECBiomeKeys.GINKGO_FOREST, ECBiomeKeys.GINKGO_FOREST}, + {ECBiomeKeys.JADEITE_DESERT, null, null, null, null}, + {ECBiomeKeys.JADEITE_DESERT, ECBiomeKeys.JADEITE_DESERT, ECBiomeKeys.AZURE_DESERT, ECBiomeKeys.AZURE_DESERT, ECBiomeKeys.AZURE_DESERT} + }; + private final ECBiomeKeys.BiomeKey[][] MIDDLE_BIOMES_VARIANT_EC = new ECBiomeKeys.BiomeKey[][] { + {null, null, null, null, null}, + {null, ECBiomeKeys.PETUNIA_PLAINS, null, null, null}, + {null, ECBiomeKeys.PETUNIA_PLAINS, null, null, null}, + {null, null, null, null, null}, + {null, null, null, null, null} + }; + private final ResourceKey[][] PLATEAU_BIOMES = new ResourceKey[][] { + {Biomes.SNOWY_PLAINS, Biomes.SNOWY_PLAINS, Biomes.SNOWY_PLAINS, Biomes.SNOWY_TAIGA, Biomes.SNOWY_TAIGA}, + {Biomes.MEADOW, Biomes.MEADOW, Biomes.FOREST, Biomes.TAIGA, Biomes.OLD_GROWTH_SPRUCE_TAIGA}, + {Biomes.MEADOW, Biomes.MEADOW, Biomes.MEADOW, Biomes.MEADOW, Biomes.DARK_FOREST}, + {Biomes.SAVANNA_PLATEAU, Biomes.SAVANNA_PLATEAU, Biomes.FOREST, Biomes.FOREST, Biomes.JUNGLE}, + {Biomes.BADLANDS, Biomes.BADLANDS, Biomes.BADLANDS, Biomes.WOODED_BADLANDS, Biomes.WOODED_BADLANDS} + }; + private final ResourceKey[][] PLATEAU_BIOMES_VARIANT = new ResourceKey[][] { + {Biomes.ICE_SPIKES, null, null, null, null}, + {null, null, Biomes.MEADOW, Biomes.MEADOW, Biomes.OLD_GROWTH_PINE_TAIGA}, + {null, null, Biomes.FOREST, Biomes.BIRCH_FOREST, null}, + {null, null, null, null, null}, + {Biomes.ERODED_BADLANDS, Biomes.ERODED_BADLANDS, null, null, null} + }; + private final ResourceKey[][] EXTREME_HILLS = new ResourceKey[][] { + {Biomes.WINDSWEPT_GRAVELLY_HILLS, Biomes.WINDSWEPT_GRAVELLY_HILLS, Biomes.WINDSWEPT_HILLS, Biomes.WINDSWEPT_FOREST, Biomes.WINDSWEPT_FOREST}, + {Biomes.WINDSWEPT_GRAVELLY_HILLS, Biomes.WINDSWEPT_GRAVELLY_HILLS, Biomes.WINDSWEPT_HILLS, Biomes.WINDSWEPT_FOREST, Biomes.WINDSWEPT_FOREST}, + {Biomes.WINDSWEPT_HILLS, Biomes.WINDSWEPT_HILLS, Biomes.WINDSWEPT_HILLS, Biomes.WINDSWEPT_FOREST, Biomes.WINDSWEPT_FOREST}, + {null, null, null, null, null}, + {null, null, null, null, null} + }; + + + public void addBiomes(Registry biomeRegistry, Consumer>> mapper) { + this.addOffCoastBiomes(biomeRegistry, mapper); + this.addInlandBiomes(biomeRegistry, mapper); + this.addUndergroundBiomes(biomeRegistry, mapper); + } + + private void addOffCoastBiomes(Registry biomeRegistry, Consumer>> mapper) { + if(BiomeUtil.isKeyRegistered(biomeRegistry, ECBiomeKeys.DEEP_DEAD_CRIMSON_OCEAN)) { + this.addSurfaceBiome(mapper, + Climate.Parameter.span(ParameterUtils.Temperature.WARM.parameter(), ParameterUtils.Temperature.HOT.parameter()), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.DEEP_OCEAN.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Weirdness.PEAK_VARIANT.parameter(), ParameterUtils.Weirdness.MID_SLICE_VARIANT_DESCENDING.parameter()), + 0.0F, + ECBiomeKeys.DEEP_DEAD_CRIMSON_OCEAN.key()); + } + + if(BiomeUtil.isKeyRegistered(biomeRegistry, ECBiomeKeys.DEEP_DEAD_WARPED_OCEAN)) { + this.addSurfaceBiome(mapper, + Climate.Parameter.span(ParameterUtils.Temperature.COOL.parameter(), ParameterUtils.Temperature.NEUTRAL.parameter()), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.DEEP_OCEAN.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Weirdness.PEAK_VARIANT.parameter(), ParameterUtils.Weirdness.MID_SLICE_VARIANT_DESCENDING.parameter()), + 0.0F, + ECBiomeKeys.DEEP_DEAD_WARPED_OCEAN.key()); + } + if(BiomeUtil.isKeyRegistered(biomeRegistry, ECBiomeKeys.DEAD_CRIMSON_OCEAN)) { + this.addSurfaceBiome(mapper, + Climate.Parameter.span(ParameterUtils.Temperature.WARM.parameter(), ParameterUtils.Temperature.HOT.parameter()), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.OCEAN.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Weirdness.PEAK_VARIANT.parameter(), ParameterUtils.Weirdness.MID_SLICE_VARIANT_DESCENDING.parameter()), + 0.0F, + ECBiomeKeys.DEAD_CRIMSON_OCEAN.key()); + } + if(BiomeUtil.isKeyRegistered(biomeRegistry, ECBiomeKeys.DEAD_WARPED_OCEAN)) { + this.addSurfaceBiome(mapper, + Climate.Parameter.span(ParameterUtils.Temperature.COOL.parameter(), ParameterUtils.Temperature.NEUTRAL.parameter()), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.OCEAN.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Weirdness.PEAK_VARIANT.parameter(), ParameterUtils.Weirdness.MID_SLICE_VARIANT_DESCENDING.parameter()), + 0.0F, + ECBiomeKeys.DEAD_WARPED_OCEAN.key()); + } + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.ICY.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.DEEP_OCEAN.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Weirdness.PEAK_VARIANT.parameter(), ParameterUtils.Weirdness.MID_SLICE_VARIANT_DESCENDING.parameter()), + 0.0F, + Biomes.DEEP_FROZEN_OCEAN); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.ICY.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.OCEAN.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Weirdness.PEAK_VARIANT.parameter(), ParameterUtils.Weirdness.MID_SLICE_VARIANT_DESCENDING.parameter()), + 0.0F, + Biomes.FROZEN_OCEAN); + + for(int i = 0; i < TEMPERATURES.length; ++i) { + Climate.Parameter temperature = TEMPERATURES[i].parameter(); + + for(int j = 0; j < HUMIDITIES.length; ++j) { + Climate.Parameter humidity = HUMIDITIES[j].parameter(); + ResourceKey islandBiome = this.pickECIslandBiome(biomeRegistry, i, j); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.MUSHROOM_FIELDS.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + ParameterUtils.Weirdness.FULL_RANGE.parameter(), + 0.0F, + islandBiome); + } + + this.addSurfaceBiome(mapper, + temperature, + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.DEEP_OCEAN.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Weirdness.MID_SLICE_NORMAL_ASCENDING.parameter(), ParameterUtils.Weirdness.HIGH_SLICE_VARIANT_ASCENDING.parameter()), + 0.0F, + this.OCEANS[0][i]); + this.addSurfaceBiome(mapper, + temperature, + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.OCEAN.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Weirdness.MID_SLICE_NORMAL_ASCENDING.parameter(), ParameterUtils.Weirdness.HIGH_SLICE_VARIANT_ASCENDING.parameter()), + 0.0F, + this.OCEANS[1][i]); + } + } + + private void addInlandBiomes(Registry biomeRegistry, Consumer>> mapper) { + this.addMidSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.MID_SLICE_NORMAL_ASCENDING.parameter()); + this.addHighSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.HIGH_SLICE_NORMAL_ASCENDING.parameter()); + this.addPeaks(biomeRegistry, mapper, ParameterUtils.Weirdness.PEAK_NORMAL.parameter()); + this.addHighSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.HIGH_SLICE_NORMAL_DESCENDING.parameter()); + this.addMidSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.MID_SLICE_NORMAL_DESCENDING.parameter()); + this.addLowSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.LOW_SLICE_NORMAL_DESCENDING.parameter()); + this.addValleys(biomeRegistry, mapper, ParameterUtils.Weirdness.VALLEY.parameter()); + this.addLowSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.LOW_SLICE_VARIANT_ASCENDING.parameter()); + this.addMidSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.MID_SLICE_VARIANT_ASCENDING.parameter()); + this.addHighSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.HIGH_SLICE_VARIANT_ASCENDING.parameter()); + this.addPeaks(biomeRegistry, mapper, ParameterUtils.Weirdness.PEAK_VARIANT.parameter()); + this.addHighSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.HIGH_SLICE_VARIANT_DESCENDING.parameter()); + this.addMidSlice(biomeRegistry, mapper, ParameterUtils.Weirdness.MID_SLICE_VARIANT_DESCENDING.parameter()); + } + + protected void addPeaks(Registry biomeRegistry, Consumer>> mapper, Climate.Parameter weirdness) { + for(int i = 0; i < TEMPERATURES.length; ++i) { + Climate.Parameter temperature = TEMPERATURES[i].parameter(); + + for(int j = 0; j < HUMIDITIES.length; ++j) { + Climate.Parameter humidity = HUMIDITIES[j].parameter(); + ResourceKey middleECBiome = this.pickECMiddleBiome(biomeRegistry, i, j, weirdness); + ResourceKey middleBadlandsOrSlopeECBiome = this.pickECMiddleBiomeOrBadlandsIfHotOrSlopeIfCold(biomeRegistry, i, j, weirdness); + ResourceKey plateauBiome = this.pickPlateauBiome(i, j, weirdness); + ResourceKey extremeHillsBiome = this.pickVanillaExtremeHillsBiome(i, j, weirdness); + ResourceKey shatteredBiome = this.maybePickShatteredBiome(i, j, weirdness, extremeHillsBiome); + ResourceKey peakBiome = this.pickPeakBiome(i, j, weirdness); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_0.parameter(), + weirdness, 0.0F, peakBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.NEAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_1.parameter(), + weirdness, 0.0F, middleBadlandsOrSlopeECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_1.parameter(), + weirdness, 0.0F, peakBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.NEAR_INLAND.parameter()), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_2.parameter(), ParameterUtils.Erosion.EROSION_3.parameter()), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_2.parameter(), + weirdness, 0.0F, plateauBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.MID_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_3.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.FAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_3.parameter(), + weirdness, 0.0F, plateauBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_4.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.NEAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, shatteredBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, extremeHillsBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, middleECBiome); + } + } + + } + + protected void addHighSlice(Registry biomeRegistry, Consumer>> mapper, Climate.Parameter weirdness) { + for(int i = 0; i < TEMPERATURES.length; ++i) { + Climate.Parameter temperature = TEMPERATURES[i].parameter(); + + for(int j = 0; j < HUMIDITIES.length; ++j) { + Climate.Parameter humidity = HUMIDITIES[j].parameter(); + ResourceKey middleBiomeVanilla = this.pickVanillaMiddleBiome(i, j, weirdness); + ResourceKey middleECBiome = this.pickECMiddleBiome(biomeRegistry, i, j, weirdness); + ResourceKey middleBadlandsOrSlopeECBiome = this.pickECMiddleBiomeOrBadlandsIfHotOrSlopeIfCold(biomeRegistry, i, j, weirdness); + ResourceKey plateauBiome = this.pickPlateauBiome(i, j, weirdness); + ResourceKey extremeHillsBiome = this.pickVanillaExtremeHillsBiome(i, j, weirdness); + ResourceKey shatteredBiome = this.maybePickShatteredBiome(i, j, weirdness, middleBiomeVanilla); + ResourceKey slopeECBiome = this.pickECSlopeBiome(biomeRegistry, i, j, weirdness); + ResourceKey peakBiome = this.pickPeakBiome(i, j, weirdness); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.COAST.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_0.parameter(), + weirdness, 0.0F, slopeECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_0.parameter(), + weirdness, 0.0F, peakBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_1.parameter(), + weirdness, 0.0F, middleBadlandsOrSlopeECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_1.parameter(), + weirdness, 0.0F, slopeECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.NEAR_INLAND.parameter()), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_2.parameter(), ParameterUtils.Erosion.EROSION_3.parameter()), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_2.parameter(), + weirdness, 0.0F, plateauBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.MID_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_3.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.FAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_3.parameter(), + weirdness, 0.0F, plateauBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(),ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_4.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.NEAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, shatteredBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, extremeHillsBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, middleECBiome); + } + } + + } + + protected void addMidSlice(Registry biomeRegistry, Consumer>> mapper, Climate.Parameter weirdness) { + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.FULL_RANGE.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.COAST.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_2.parameter()), + weirdness, 0.0F, Biomes.STONY_SHORE); + this.addSurfaceBiome(mapper, + Climate.Parameter.span(ParameterUtils.Temperature.COOL.parameter(), ParameterUtils.Temperature.NEUTRAL.parameter()), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, Biomes.SWAMP); + this.addSurfaceBiome(mapper, + Climate.Parameter.span(ParameterUtils.Temperature.WARM.parameter(), ParameterUtils.Temperature.HOT.parameter()), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, Biomes.MANGROVE_SWAMP); + + for(int i = 0; i < TEMPERATURES.length; ++i) { + Climate.Parameter temperature = TEMPERATURES[i].parameter(); + + for(int j = 0; j < HUMIDITIES.length; ++j) { + Climate.Parameter humidity = HUMIDITIES[j].parameter(); + ResourceKey middleBiomeVanilla = this.pickVanillaMiddleBiome(i, j, weirdness); + ResourceKey middleECBiome = this.pickECMiddleBiome(biomeRegistry, i, j, weirdness); + ResourceKey middleBadlandsOrSlopeECBiome = this.pickECMiddleBiomeOrBadlandsIfHotOrSlopeIfCold(biomeRegistry, i, j, weirdness); + ResourceKey extremeHillsBiome = this.pickVanillaExtremeHillsBiome(i, j, weirdness); + ResourceKey plateauBiome = this.pickPlateauBiome(i, j, weirdness); + ResourceKey beachBiome = this.pickBeachBiome(biomeRegistry, i, j); + ResourceKey shatteredBiome = this.maybePickShatteredBiome(i, j, weirdness, middleBiomeVanilla); + ResourceKey shatteredCoastBiome = this.pickShatteredCoastBiome(biomeRegistry, i, j, weirdness); + ResourceKey slopeECBiome = this.pickECSlopeBiome(biomeRegistry, i, j, weirdness); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_0.parameter(), weirdness, 0.0F, slopeECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.MID_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_1.parameter(), weirdness, 0.0F, middleBadlandsOrSlopeECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.FAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_1.parameter(), + weirdness, 0.0F, i == 0 ? slopeECBiome : plateauBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_2.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.MID_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_2.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.FAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_2.parameter(), + weirdness, 0.0F, plateauBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.NEAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_3.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_3.parameter(), + weirdness, 0.0F, middleECBiome); + if (weirdness.max() < 0L) { + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.COAST.parameter(), + ParameterUtils.Erosion.EROSION_4.parameter(), + weirdness, 0.0F, beachBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_4.parameter(), + weirdness, 0.0F, middleECBiome); + } else { + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_4.parameter(), + weirdness, 0.0F, middleECBiome); + } + + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.COAST.parameter(), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, shatteredCoastBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, shatteredBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, extremeHillsBiome); + if (weirdness.max() < 0L) { + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.COAST.parameter(), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, beachBiome); + } else { + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.COAST.parameter(), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, middleECBiome); + } + + if (i == 0) { + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, middleECBiome); + } + } + } + + } + + protected void addLowSlice(Registry biomeRegistry, Consumer>> mapper, Climate.Parameter weirdness) { + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.FULL_RANGE.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.COAST.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_2.parameter()), + weirdness, 0.0F, Biomes.STONY_SHORE); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.UNFROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, Biomes.SWAMP); + + for(int i = 0; i < TEMPERATURES.length; ++i) { + Climate.Parameter temperature = TEMPERATURES[i].parameter(); + + for(int j = 0; j < HUMIDITIES.length; ++j) { + Climate.Parameter humidity = HUMIDITIES[j].parameter(); + ResourceKey middleBiomeVanilla = this.pickVanillaMiddleBiome(i, j, weirdness); + ResourceKey middleECBiome = this.pickECMiddleBiome(biomeRegistry, i, j, weirdness); + ResourceKey middleBadlandsOrSlopeECBiome = this.pickECMiddleBiomeOrBadlandsIfHotOrSlopeIfCold(biomeRegistry, i, j, weirdness); + ResourceKey beachBiome = this.pickBeachBiome(biomeRegistry, i, j); + ResourceKey shatteredBiome = this.maybePickShatteredBiome(i, j, weirdness, middleBiomeVanilla); + ResourceKey shatteredCoastBiome = this.pickShatteredCoastBiome(biomeRegistry, i, j, weirdness); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + weirdness, 0.0F, middleBadlandsOrSlopeECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_2.parameter(), ParameterUtils.Erosion.EROSION_3.parameter()), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_2.parameter(), ParameterUtils.Erosion.EROSION_3.parameter()), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.COAST.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_3.parameter(), ParameterUtils.Erosion.EROSION_4.parameter()), + weirdness, 0.0F, beachBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_4.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.COAST.parameter(), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, shatteredCoastBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, shatteredBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_5.parameter(), + weirdness, 0.0F, middleECBiome); + this.addSurfaceBiome(mapper, + temperature, humidity, + ParameterUtils.Continentalness.COAST.parameter(), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, beachBiome); + if (i == 0) { + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, middleECBiome); + } + } + } + + } + + protected void addValleys(Registry biomeRegistry, Consumer>> mapper, Climate.Parameter weirdness) { + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.FROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.COAST.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + weirdness, 0.0F, weirdness.max() < 0L ? Biomes.STONY_SHORE : Biomes.FROZEN_RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.UNFROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.COAST.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + weirdness, 0.0F, weirdness.max() < 0L ? Biomes.STONY_SHORE : Biomes.RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.FROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + weirdness, 0.0F, Biomes.FROZEN_RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.UNFROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.NEAR_INLAND.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + weirdness, 0.0F, Biomes.RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.FROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_2.parameter(), ParameterUtils.Erosion.EROSION_5.parameter()), + weirdness, 0.0F, Biomes.FROZEN_RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.UNFROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Continentalness.COAST.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), Climate.Parameter.span(ParameterUtils.Erosion.EROSION_2.parameter(), ParameterUtils.Erosion.EROSION_5.parameter()), weirdness, 0.0F, Biomes.RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.FROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.COAST.parameter(), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, Biomes.FROZEN_RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.UNFROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.COAST.parameter(), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, Biomes.RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.FROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Continentalness.INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, Biomes.FROZEN_RIVER); + this.addSurfaceBiome(mapper, + ParameterUtils.Temperature.UNFROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Continentalness.NEAR_INLAND.parameter(), ParameterUtils.Continentalness.FAR_INLAND.parameter()), + ParameterUtils.Erosion.EROSION_6.parameter(), + weirdness, 0.0F, Biomes.SWAMP); + + for(int i = 0; i < TEMPERATURES.length; ++i) { + Climate.Parameter temperature = TEMPERATURES[i].parameter(); + + for(int j = 0; j < HUMIDITIES.length; ++j) { + Climate.Parameter humidity = HUMIDITIES[j].parameter(); + ResourceKey middleECBiome = this.pickECMiddleBiome(biomeRegistry, i, j, weirdness); + this.addSurfaceBiome(mapper, + temperature, humidity, + Climate.Parameter.span(ParameterUtils.Continentalness.MID_INLAND.parameter(),ParameterUtils.Continentalness.FAR_INLAND.parameter()), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + weirdness, 0.0F, middleECBiome); + } + } + + } + + protected void addUndergroundBiomes(Registry biomeRegistry, Consumer>> mapper) { + if(BiomeUtil.isKeyRegistered(biomeRegistry, ECBiomeKeys.VOLCANIC_CAVES)) { + this.addUndergroundBiome(mapper, + ParameterUtils.Temperature.UNFROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_4.parameter(), ParameterUtils.Erosion.EROSION_6.parameter()), + Climate.Parameter.span(ParameterUtils.Weirdness.HIGH_SLICE_VARIANT_ASCENDING.parameter(), ParameterUtils.Weirdness.HIGH_SLICE_VARIANT_DESCENDING.parameter()), + Climate.Parameter.span(0.2F, 0.4F), + 0.75F, ECBiomeKeys.VOLCANIC_CAVES.key()); + this.addUndergroundBiome(mapper, + ParameterUtils.Temperature.FROZEN.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_4.parameter(), ParameterUtils.Erosion.EROSION_6.parameter()), + Climate.Parameter.span(ParameterUtils.Weirdness.HIGH_SLICE_VARIANT_ASCENDING.parameter(), ParameterUtils.Weirdness.HIGH_SLICE_VARIANT_DESCENDING.parameter()), + Climate.Parameter.span(0.2F, 0.4F), + 0.25F, ECBiomeKeys.VOLCANIC_CAVES.key()); + } + + this.addUndergroundBiome(mapper, + ParameterUtils.Temperature.FULL_RANGE.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + Climate.Parameter.span(0.8F, 1.0F), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + ParameterUtils.Weirdness.FULL_RANGE.parameter(), + ParameterUtils.Depth.UNDERGROUND.parameter(), + 0.0F, + Biomes.DRIPSTONE_CAVES + ); + this.addUndergroundBiome(mapper, + ParameterUtils.Temperature.FULL_RANGE.parameter(), + Climate.Parameter.span(0.7F, 1.0F), + ParameterUtils.Continentalness.FULL_RANGE.parameter(), + ParameterUtils.Erosion.FULL_RANGE.parameter(), + ParameterUtils.Weirdness.FULL_RANGE.parameter(), + ParameterUtils.Depth.UNDERGROUND.parameter(), + 0.0F, + Biomes.LUSH_CAVES + ); + this.addBottomBiome(mapper, + ParameterUtils.Temperature.FULL_RANGE.parameter(), + ParameterUtils.Humidity.FULL_RANGE.parameter(), + ParameterUtils.Continentalness.FULL_RANGE.parameter(), + Climate.Parameter.span(ParameterUtils.Erosion.EROSION_0.parameter(), ParameterUtils.Erosion.EROSION_1.parameter()), + ParameterUtils.Weirdness.FULL_RANGE.parameter(), + 0.0F, + Biomes.DEEP_DARK + ); + } + + protected ResourceKey pickECIslandBiome(Registry biomeRegistry, int temperatureIndex, int humidityIndex) { + return BiomeUtil.biomeOrFallback(biomeRegistry, this.ISLAND_BIOMES_EC[temperatureIndex][humidityIndex], Biomes.MUSHROOM_FIELDS); + } + + protected ResourceKey pickVanillaMiddleBiome(int temperatureIndex, int humidityIndex, Climate.Parameter weirdness) { + if (weirdness.max() < 0L) { + return this.MIDDLE_BIOMES[temperatureIndex][humidityIndex]; + } + ResourceKey variantBiome = this.MIDDLE_BIOMES_VARIANT[temperatureIndex][humidityIndex]; + return variantBiome == null ? this.MIDDLE_BIOMES[temperatureIndex][humidityIndex] : variantBiome; + } + + protected ResourceKey pickECMiddleBiome(Registry biomeRegistry, int temperatureIndex, int humidityIndex, Climate.Parameter weirdness) { + ResourceKey middleBiome = BiomeUtil.biomeOrFallback(biomeRegistry, this.MIDDLE_BIOMES_EC[temperatureIndex][humidityIndex], this.MIDDLE_BIOMES[temperatureIndex][humidityIndex]); + return weirdness.max() < 0L ? middleBiome : BiomeUtil.biomeOrFallback(biomeRegistry, + this.MIDDLE_BIOMES_VARIANT_EC[temperatureIndex][humidityIndex], + this.MIDDLE_BIOMES_VARIANT[temperatureIndex][humidityIndex], middleBiome); + } + + protected ResourceKey pickECMiddleBiomeOrBadlandsIfHotOrSlopeIfCold(Registry biomeRegistry, int temperatureIndex, int humidityIndex, Climate.Parameter weirdness) { + return temperatureIndex == 0 ? this.pickECSlopeBiome(biomeRegistry, temperatureIndex, humidityIndex, weirdness) : this.pickECMiddleBiome(biomeRegistry, temperatureIndex, humidityIndex, weirdness); + } + + protected ResourceKey maybePickShatteredBiome(int temperatureIndex, int humidityIndex, Climate.Parameter weirdness, ResourceKey extremeHillsBiome) { + return temperatureIndex > 1 && humidityIndex < 4 && weirdness.max() >= 0L ? Biomes.WINDSWEPT_SAVANNA : extremeHillsBiome; + } + + protected ResourceKey pickShatteredCoastBiome(Registry biomeRegistry, int temperatureIndex, int humidityIndex, Climate.Parameter weirdness) { + ResourceKey biome = weirdness.max() >= 0L ? this.pickVanillaMiddleBiome(temperatureIndex, humidityIndex, weirdness) : this.pickBeachBiome(biomeRegistry, temperatureIndex, humidityIndex); + return this.maybePickShatteredBiome(temperatureIndex, humidityIndex, weirdness, biome); + } + + protected ResourceKey pickBeachBiome(Registry biomeRegistry, int temperatureIndex, int humidityIndex) { + if (temperatureIndex == 0) { + return Biomes.SNOWY_BEACH; + } + if (temperatureIndex >= 4) { + if(humidityIndex >= 3) { + return BiomeUtil.biomeOrFallback(biomeRegistry, ECBiomeKeys.GOLDEN_BEACH, Biomes.DESERT); + } + if(humidityIndex >= 1) { + return BiomeUtil.biomeOrFallback(biomeRegistry, ECBiomeKeys.PALM_BEACH, Biomes.DESERT); + } + return Biomes.DESERT; + } + return Biomes.BEACH; + } + + protected ResourceKey pickBadlandsBiome(int humidityIndex, Climate.Parameter weirdness) { + if (humidityIndex < 2) { + return weirdness.max() < 0L ? Biomes.ERODED_BADLANDS : Biomes.BADLANDS; + } else { + return humidityIndex < 3 ? Biomes.BADLANDS : Biomes.WOODED_BADLANDS; + } + } + + protected ResourceKey pickPlateauBiome(int temperatureIndex, int humidityIndex, Climate.Parameter weirdness) { + if (weirdness.max() < 0L) { + return this.PLATEAU_BIOMES[temperatureIndex][humidityIndex]; + } + ResourceKey biome = this.PLATEAU_BIOMES_VARIANT[temperatureIndex][humidityIndex]; + return biome == null ? this.PLATEAU_BIOMES[temperatureIndex][humidityIndex] : biome; + } + + protected ResourceKey pickPeakBiome(int temperatureIndex, int humidityIndex, Climate.Parameter weirdness) { + if (temperatureIndex <= 2) { + return weirdness.max() < 0L ? Biomes.JAGGED_PEAKS : Biomes.FROZEN_PEAKS; + } else { + return temperatureIndex <= 3 ? Biomes.STONY_PEAKS : this.pickBadlandsBiome(humidityIndex, weirdness); + } + } + + protected ResourceKey pickECSlopeBiome(Registry biomeRegistry, int temperatureIndex, int humidityIndex, Climate.Parameter weirdness) { + ResourceKey plateauBiome = this.pickPlateauBiome(temperatureIndex, humidityIndex, weirdness); + if (temperatureIndex >= 1 && weirdness.min() > Climate.quantizeCoord(0.5F)) { + return BiomeUtil.biomeOrFallback(biomeRegistry, ECBiomeKeys.KARST_HILLS, plateauBiome); + } + return plateauBiome; + } + + protected ResourceKey pickVanillaExtremeHillsBiome(int temperatureIndex, int humidityIndex, Climate.Parameter weirdness) { + ResourceKey biome = this.EXTREME_HILLS[temperatureIndex][humidityIndex]; + return biome == null ? this.pickVanillaMiddleBiome(temperatureIndex, humidityIndex, weirdness) : biome; + } + + @SuppressWarnings("SameParameterValue") + protected void addSurfaceBiome(Consumer>> mapper, Climate.Parameter temperature, Climate.Parameter humidity, Climate.Parameter continentalness, Climate.Parameter erosion, Climate.Parameter weirdness, float offset, ResourceKey biome) { + mapper.accept(Pair.of(Climate.parameters(temperature, humidity, continentalness, erosion, ParameterUtils.Depth.SURFACE.parameter(), weirdness, offset), biome)); + mapper.accept(Pair.of(Climate.parameters(temperature, humidity, continentalness, erosion, ParameterUtils.Depth.FLOOR.parameter(), weirdness, offset), biome)); + } + + protected void addUndergroundBiome(Consumer>> mapper, Climate.Parameter temperature, Climate.Parameter humidity, Climate.Parameter continentalness, Climate.Parameter erosion, Climate.Parameter weirdness, Climate.Parameter depth, float offset, ResourceKey biome) { + mapper.accept(Pair.of(Climate.parameters(temperature, humidity, continentalness, erosion, depth, weirdness, offset), biome)); + } + + @SuppressWarnings("SameParameterValue") + protected void addBottomBiome(Consumer>> mapper, Climate.Parameter temperature, Climate.Parameter humidity, Climate.Parameter continentalness, Climate.Parameter erosion, Climate.Parameter weirdness, float offset, ResourceKey biome) { + mapper.accept(Pair.of(Climate.parameters(temperature, humidity, continentalness, erosion, Climate.Parameter.point(1.1F), weirdness, offset), biome)); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECProcessorLists.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECProcessorLists.java new file mode 100644 index 00000000..f865051b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ECProcessorLists.java @@ -0,0 +1,36 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.google.common.collect.ImmutableList; +import net.minecraft.core.Holder; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.levelgen.structure.templatesystem.*; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECProcessorLists { + public static final Holder STREET_SWAMP = register( + "street_swamp", ImmutableList.of(new RuleProcessor(ImmutableList.of( + new ProcessorRule(new BlockMatchTest(Blocks.DIRT_PATH), new BlockMatchTest(Blocks.WATER), Blocks.DARK_OAK_PLANKS.defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(Blocks.DIRT_PATH, 0.1F), AlwaysTrueTest.INSTANCE, Blocks.GRASS_BLOCK.defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(Blocks.DIRT_PATH, 0.05F), AlwaysTrueTest.INSTANCE, Blocks.WATER.defaultBlockState()), + new ProcessorRule(new BlockMatchTest(Blocks.GRASS_BLOCK), new BlockMatchTest(Blocks.WATER), Blocks.WATER.defaultBlockState()), + new ProcessorRule(new BlockMatchTest(Blocks.DIRT), new BlockMatchTest(Blocks.WATER), Blocks.WATER.defaultBlockState()) + ))) + ); + + public static final Holder FARM_SWAMP = register( + "farm_swamp", ImmutableList.of(new RuleProcessor(ImmutableList.of( + new ProcessorRule(new RandomBlockMatchTest(Blocks.WHEAT, 0.1F), AlwaysTrueTest.INSTANCE, Blocks.CARROTS.defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(Blocks.WHEAT, 0.3F), AlwaysTrueTest.INSTANCE, Blocks.POTATOES.defaultBlockState()), + new ProcessorRule(new RandomBlockMatchTest(Blocks.WHEAT, 0.2F), AlwaysTrueTest.INSTANCE, Blocks.BEETROOTS.defaultBlockState()) + ))) + ); + + private static Holder register(String name, ImmutableList list) { + ResourceLocation resourcelocation = new ResourceLocation(MODID, name); + StructureProcessorList structureprocessorlist = new StructureProcessorList(list); + return BuiltinRegistries.register(BuiltinRegistries.PROCESSOR_LIST, resourcelocation, structureprocessorlist); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/VolcanicCavesLavaPoolFeature.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/VolcanicCavesLavaPoolFeature.java new file mode 100644 index 00000000..4a2c66e5 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/VolcanicCavesLavaPoolFeature.java @@ -0,0 +1,98 @@ +package com.hexagram2021.emeraldcraft.common.world; + +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.tags.BlockTags; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.Blocks; +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 java.util.HashSet; +import java.util.Set; +import java.util.function.Predicate; + +public class VolcanicCavesLavaPoolFeature extends Feature { + private static final BlockState BLACKSTONE = Blocks.BLACKSTONE.defaultBlockState(); + private static final BlockState CRYING_OBSIDIAN = Blocks.CRYING_OBSIDIAN.defaultBlockState(); + private static final BlockState MAGMA_BLOCK = Blocks.MAGMA_BLOCK.defaultBlockState(); + private static final BlockState SMOOTH_BASALT = Blocks.SMOOTH_BASALT.defaultBlockState(); + private static final BlockState OBSIDIAN = Blocks.OBSIDIAN.defaultBlockState(); + + private static final BlockState LAVA = Blocks.LAVA.defaultBlockState(); + + public VolcanicCavesLavaPoolFeature(Codec codec) { + super(codec); + } + + private static final int MAX_DEPTH = 6; + + private void doPlace(WorldGenLevel level, Set visited, BlockPos curPosition, RandomSource random, Predicate predicate, int depth) { + for(int b = 1; b <= 6; ++b) { + int s = ((b & 4) >> 2); + int b1 = (b & 3) + s; + int y = (b1 & 1) ^ ((b1 & 2) >> 1) ^ 1; + int x = (b1 & 1) ^ y; + int z = ((b1 & 2) >> 1) ^ y; + + x *= 2 * s - 1; + y *= 2 * s - 1; + z *= 2 * s - 1; + + BlockPos blockpos1 = curPosition.offset(x, y, z); + BlockState blockstate = level.getBlockState(blockpos1); + + if(visited.contains(blockpos1)) { + continue; + } + visited.add(blockpos1); + if(random.nextInt(6) == 0) { + continue; + } + if(blockstate.is(Blocks.DEEPSLATE) || blockstate.is(Blocks.TUFF) ||blockstate.is(Blocks.STONE) || + blockstate.is(Blocks.ANDESITE) || blockstate.is(Blocks.DIORITE) || blockstate.is(Blocks.GRANITE)) { + if(depth <= MAX_DEPTH) { + doPlace(level, visited, blockpos1, random, predicate, depth + 1); + } + this.safeSetBlock(level, blockpos1, LAVA, predicate); + + for(int m = 1; m <= 5; ++m) { + int ms = ((m & 4) >> 2); + int m1 = (m & 3) + ms; + int my = (m1 & 1) ^ ((m1 & 2) >> 1) ^ 1; + int mx = (m1 & 1) ^ my; + int mz = ((m1 & 2) >> 1) ^ my; + + mx *= 2 * ms - 1; + my *= 2 * ms - 1; + mz *= 2 * ms - 1; + + BlockPos blockpos2 = blockpos1.offset(mx, my, mz); + if(level.isEmptyBlock(blockpos2) || (blockstate.is(Blocks.DEEPSLATE) && random.nextInt(3) != 0)) { + switch (random.nextInt(15)) { + case 0, 1, 2, 3, 4 -> this.safeSetBlock(level, blockpos1, OBSIDIAN, predicate); + case 5, 6, 7, 8 -> this.safeSetBlock(level, blockpos1, MAGMA_BLOCK, predicate); + case 9, 10, 11 -> this.safeSetBlock(level, blockpos1, SMOOTH_BASALT, predicate); + case 12, 13 -> this.safeSetBlock(level, blockpos1, CRYING_OBSIDIAN, predicate); + case 14 -> this.safeSetBlock(level, blockpos1, BLACKSTONE, predicate); + } + } + } + } + } + } + + public boolean place(FeaturePlaceContext context) { + Predicate predicate = Feature.isReplaceable(BlockTags.FEATURES_CANNOT_REPLACE); + BlockPos blockpos = context.origin(); + RandomSource random = context.random(); + WorldGenLevel worldgenlevel = context.level(); + + final Set visited = new HashSet<>(); + doPlace(worldgenlevel, visited, blockpos, random, predicate, 0); + return true; + } +} \ No newline at end of file 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..e50713b1 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/ZombieVillagerRoomFeature.java @@ -0,0 +1,133 @@ +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.util.RandomSource; +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 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); + BlockPos blockpos = context.origin(); + RandomSource 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/compat/ECNetherBiomeRegion.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/compat/ECNetherBiomeRegion.java new file mode 100644 index 00000000..dc013b78 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/compat/ECNetherBiomeRegion.java @@ -0,0 +1,43 @@ +package com.hexagram2021.emeraldcraft.common.world.compat; + +import com.hexagram2021.emeraldcraft.common.register.ECBiomeKeys; +import com.hexagram2021.emeraldcraft.common.util.BiomeUtil; +import com.mojang.datafixers.util.Pair; +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.biome.Biomes; +import net.minecraft.world.level.biome.Climate; +import terrablender.api.Region; +import terrablender.api.RegionType; + +import java.util.function.Consumer; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECNetherBiomeRegion extends Region { + public static final ResourceLocation LOCATION = new ResourceLocation(MODID, "nether_biome_provider"); + + public ECNetherBiomeRegion(int weight) { + super(LOCATION, RegionType.NETHER, weight); + } + + @Override + public void addBiomes(Registry registry, Consumer>> mapper) { + this.addBiome(mapper, Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), 0.0F, Biomes.NETHER_WASTES); + this.addBiome(mapper, Climate.Parameter.point(0.0F), Climate.Parameter.point(-0.5F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), 0.0F, Biomes.SOUL_SAND_VALLEY); + this.addBiome(mapper, Climate.Parameter.point(0.4F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), 0.0F, Biomes.CRIMSON_FOREST); + this.addBiome(mapper, Climate.Parameter.point(0.0F), Climate.Parameter.point(0.5F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), 0.375F, Biomes.WARPED_FOREST); + this.addBiome(mapper, Climate.Parameter.point(-0.5F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), 0.175F, Biomes.BASALT_DELTAS); + if (BiomeUtil.isKeyRegistered(registry, ECBiomeKeys.EMERY_DESERT)) { + this.addBiome(mapper, Climate.Parameter.point(-0.8F), Climate.Parameter.point(-0.8F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), 0.0F, ECBiomeKeys.EMERY_DESERT.key()); + } + if (BiomeUtil.isKeyRegistered(registry, ECBiomeKeys.PURPURACEUS_SWAMP)) { + this.addBiome(mapper, Climate.Parameter.point(0.7F), Climate.Parameter.point(0.7F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), 0.125F, ECBiomeKeys.PURPURACEUS_SWAMP.key()); + } + if (BiomeUtil.isKeyRegistered(registry, ECBiomeKeys.QUARTZ_DESERT)) { + this.addBiome(mapper, Climate.Parameter.point(0.75F), Climate.Parameter.point(-0.7F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), Climate.Parameter.point(0.0F), 0.0F, ECBiomeKeys.QUARTZ_DESERT.key()); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/compat/ECOverworldBiomeRegion.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/compat/ECOverworldBiomeRegion.java new file mode 100644 index 00000000..d0f70c55 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/compat/ECOverworldBiomeRegion.java @@ -0,0 +1,28 @@ +package com.hexagram2021.emeraldcraft.common.world.compat; + +import com.hexagram2021.emeraldcraft.common.world.ECOverworldBiomeBuilder; +import com.mojang.datafixers.util.Pair; +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.biome.Climate; +import terrablender.api.Region; +import terrablender.api.RegionType; + +import java.util.function.Consumer; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class ECOverworldBiomeRegion extends Region { + public static final ResourceLocation LOCATION = new ResourceLocation(MODID, "overworld_biome_provider"); + + public ECOverworldBiomeRegion(int weight) { + super(LOCATION, RegionType.OVERWORLD, weight); + } + + @Override + public void addBiomes(Registry registry, Consumer>> mapper) { + (new ECOverworldBiomeBuilder()).addBiomes(registry, mapper); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/grower/GinkgoTreeGrower.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/grower/GinkgoTreeGrower.java new file mode 100644 index 00000000..04654285 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/grower/GinkgoTreeGrower.java @@ -0,0 +1,19 @@ +package com.hexagram2021.emeraldcraft.common.world.grower; + +import com.hexagram2021.emeraldcraft.common.register.ECConfiguredFeatures; +import net.minecraft.core.Holder; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.grower.AbstractTreeGrower; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; + +public class GinkgoTreeGrower extends AbstractTreeGrower { + @Override + protected Holder> getConfiguredFeature(RandomSource random, boolean bee) { + return switch (random.nextInt(3)) { + case 0 -> ECConfiguredFeatures.TreeConfiguredFeatures.GINKGO_1; + case 1 -> ECConfiguredFeatures.TreeConfiguredFeatures.GINKGO_2; + case 2 -> ECConfiguredFeatures.TreeConfiguredFeatures.GINKGO_3; + default -> throw new AssertionError(); + }; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/grower/PalmTreeGrower.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/grower/PalmTreeGrower.java new file mode 100644 index 00000000..f22f244f --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/grower/PalmTreeGrower.java @@ -0,0 +1,19 @@ +package com.hexagram2021.emeraldcraft.common.world.grower; + +import com.hexagram2021.emeraldcraft.common.register.ECConfiguredFeatures; +import net.minecraft.core.Holder; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.grower.AbstractTreeGrower; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; + +public class PalmTreeGrower extends AbstractTreeGrower { + @Override + protected Holder> getConfiguredFeature(RandomSource random, boolean bee) { + return switch (random.nextInt(3)) { + case 0 -> ECConfiguredFeatures.TreeConfiguredFeatures.PALM_1; + case 1 -> ECConfiguredFeatures.TreeConfiguredFeatures.PALM_2; + case 2 -> ECConfiguredFeatures.TreeConfiguredFeatures.PALM_3; + default -> throw new AssertionError(); + }; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/grower/PeachTreeGrower.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/grower/PeachTreeGrower.java new file mode 100644 index 00000000..5c9c44c0 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/grower/PeachTreeGrower.java @@ -0,0 +1,19 @@ +package com.hexagram2021.emeraldcraft.common.world.grower; + +import com.hexagram2021.emeraldcraft.common.register.ECConfiguredFeatures; +import net.minecraft.core.Holder; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.block.grower.AbstractTreeGrower; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; + +public class PeachTreeGrower extends AbstractTreeGrower { + @Override + protected Holder> getConfiguredFeature(RandomSource random, boolean bee) { + return switch (random.nextInt(3)) { + case 0 -> ECConfiguredFeatures.TreeConfiguredFeatures.PEACH_1; + case 1 -> ECConfiguredFeatures.TreeConfiguredFeatures.PEACH_2; + case 2 -> ECConfiguredFeatures.TreeConfiguredFeatures.PEACH_3; + default -> throw new AssertionError(); + }; + } +} 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..f4c1bdb6 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/pools/NetherWarfieldPools.java @@ -0,0 +1,165 @@ +package com.hexagram2021.emeraldcraft.common.world.pools; + +import com.google.common.collect.ImmutableList; +import com.mojang.datafixers.util.Pair; +import net.minecraft.core.Holder; +import net.minecraft.data.worldgen.Pools; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.structure.pools.StructurePoolElement; +import net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class NetherWarfieldPools { + public static final Holder 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) + ); + + @SuppressWarnings("unused") + 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/pools/SwampVillagePools.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/pools/SwampVillagePools.java new file mode 100644 index 00000000..945a056b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/pools/SwampVillagePools.java @@ -0,0 +1,153 @@ +package com.hexagram2021.emeraldcraft.common.world.pools; + +import com.google.common.collect.ImmutableList; +import com.hexagram2021.emeraldcraft.common.register.ECVillagePlacedFeatures; +import com.hexagram2021.emeraldcraft.common.world.ECProcessorLists; +import com.mojang.datafixers.util.Pair; +import net.minecraft.core.Holder; +import net.minecraft.data.worldgen.Pools; +import net.minecraft.data.worldgen.ProcessorLists; +import net.minecraft.data.worldgen.placement.VillagePlacements; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.structure.pools.StructurePoolElement; +import net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class SwampVillagePools { + public static final Holder START = Pools.register( + new StructureTemplatePool( + new ResourceLocation(MODID, "village/swamp/town_centers"), + new ResourceLocation("empty"), + ImmutableList.of( + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/town_centers/swamp_fountain_01", ProcessorLists.MOSSIFY_20_PERCENT), 50), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/town_centers/swamp_meeting_point_1", ProcessorLists.MOSSIFY_20_PERCENT), 50), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/town_centers/swamp_meeting_point_2"), 50) + ), + StructureTemplatePool.Projection.RIGID + ) + ); + + public static void bootstrap() { + } + + static { + Pools.register( + new StructureTemplatePool( + new ResourceLocation(MODID, "village/swamp/streets"), + new ResourceLocation(MODID, "village/swamp/terminators"), + ImmutableList.of( + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/streets/corner_01", ECProcessorLists.STREET_SWAMP), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/streets/corner_02", ECProcessorLists.STREET_SWAMP), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/streets/corner_03", ECProcessorLists.STREET_SWAMP), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/streets/straight_01", ECProcessorLists.STREET_SWAMP), 4), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/streets/straight_02", ECProcessorLists.STREET_SWAMP), 4), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/streets/straight_03", ECProcessorLists.STREET_SWAMP), 7), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/streets/straight_04", ECProcessorLists.STREET_SWAMP), 7), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/streets/straight_05", ECProcessorLists.STREET_SWAMP), 3), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/streets/straight_06", ECProcessorLists.STREET_SWAMP), 4), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/streets/crossroad_01", ECProcessorLists.STREET_SWAMP), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/streets/crossroad_02", ECProcessorLists.STREET_SWAMP), 1), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/streets/crossroad_03", ECProcessorLists.STREET_SWAMP), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/streets/crossroad_04", ECProcessorLists.STREET_SWAMP), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/streets/crossroad_05", ECProcessorLists.STREET_SWAMP), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/streets/crossroad_06", ECProcessorLists.STREET_SWAMP), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/streets/turn_01", ECProcessorLists.STREET_SWAMP), 3) + ), + StructureTemplatePool.Projection.TERRAIN_MATCHING + ) + ); + Pools.register( + new StructureTemplatePool( + new ResourceLocation(MODID, "village/swamp/houses"), + new ResourceLocation(MODID, "village/swamp/terminators"), + ImmutableList.of( + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_small_house_1", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_small_house_2", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_small_house_3", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_small_house_4", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_small_house_5", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_small_house_6", ProcessorLists.MOSSIFY_10_PERCENT), 1), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_small_house_7", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_small_house_8", ProcessorLists.MOSSIFY_10_PERCENT), 3), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_medium_house_1", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_medium_house_2", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_astrologist_house_1", ProcessorLists.MOSSIFY_10_PERCENT), 1), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_big_house_1", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_armorer_house_1", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_butcher_shop_1", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_carpenter_house_1", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_cartographer_1", ProcessorLists.MOSSIFY_10_PERCENT), 1), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_fisher_cottage_1", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_fletcher_house_1", ProcessorLists.MOSSIFY_10_PERCENT), 1), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_glazier_house_1", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_icer_house_1", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_large_farm_1", ECProcessorLists.FARM_SWAMP), 4), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_library_1", ProcessorLists.MOSSIFY_10_PERCENT), 6), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_masons_house_1", ProcessorLists.MOSSIFY_10_PERCENT), 1), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_miner_house_1", ProcessorLists.MOSSIFY_10_PERCENT), 3), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_small_farm_1", ECProcessorLists.FARM_SWAMP), 4), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_tannery_1", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_temple_3", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_tool_smith_1", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_weaponsmith_1", ProcessorLists.MOSSIFY_10_PERCENT), 2), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_animal_pen_1"), 1), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_animal_pen_2"), 1), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_animal_pen_3"), 5), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_accessory_1"), 1), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_meeting_point_4", ProcessorLists.MOSSIFY_70_PERCENT), 3), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/houses/swamp_meeting_point_5"), 1), + Pair.of(StructurePoolElement.empty(), 10) + ), + StructureTemplatePool.Projection.RIGID + ) + ); + Pools.register( + new StructureTemplatePool( + new ResourceLocation(MODID, "village/swamp/terminators"), + new ResourceLocation("empty"), + ImmutableList.of( + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/terminators/terminator_01", ECProcessorLists.STREET_SWAMP), 1), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/terminators/terminator_02", ECProcessorLists.STREET_SWAMP), 1), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/terminators/terminator_03", ECProcessorLists.STREET_SWAMP), 1), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/terminators/terminator_04", ECProcessorLists.STREET_SWAMP), 1) + ), + StructureTemplatePool.Projection.TERRAIN_MATCHING + ) + ); + Pools.register( + new StructureTemplatePool( + new ResourceLocation(MODID, "village/swamp/trees"), + new ResourceLocation("empty"), + ImmutableList.of(Pair.of(StructurePoolElement.feature(ECVillagePlacedFeatures.DARK_OAK_VILLAGE), 1)), + StructureTemplatePool.Projection.RIGID + ) + ); + Pools.register( + new StructureTemplatePool( + new ResourceLocation(MODID, "village/swamp/decor"), + new ResourceLocation("empty"), + ImmutableList.of( + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/swamp_lamp_1"), 2), + Pair.of(StructurePoolElement.feature(ECVillagePlacedFeatures.DARK_OAK_VILLAGE), 1), + Pair.of(StructurePoolElement.feature(ECVillagePlacedFeatures.FLOWER_SWAMP_VILLAGE), 1), + Pair.of(StructurePoolElement.feature(VillagePlacements.PILE_HAY_VILLAGE), 1), + Pair.of(StructurePoolElement.empty(), 2) + ), + StructureTemplatePool.Projection.RIGID + ) + ); + Pools.register( + new StructureTemplatePool( + new ResourceLocation(MODID, "village/swamp/villagers"), + new ResourceLocation("empty"), + ImmutableList.of( + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/villagers/nitwit"), 1), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/villagers/baby"), 1), + Pair.of(StructurePoolElement.legacy(MODID + ":village/swamp/villagers/unemployed"), 10) + ), + StructureTemplatePool.Projection.RIGID + ) + ); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/camp/CampFeature.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/camp/CampFeature.java new file mode 100644 index 00000000..b35d84fa --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/camp/CampFeature.java @@ -0,0 +1,52 @@ +package com.hexagram2021.emeraldcraft.common.world.structures.camp; + +import com.hexagram2021.emeraldcraft.api.camp.CampType; +import com.hexagram2021.emeraldcraft.common.register.ECStructureTypes; +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.structure.Structure; +import net.minecraft.world.level.levelgen.structure.StructureType; +import net.minecraft.world.level.levelgen.structure.pieces.StructurePiecesBuilder; +import org.jetbrains.annotations.NotNull; + +import java.util.Optional; + +public class CampFeature extends Structure { + public static final Codec CODEC = RecordCodecBuilder.create( + builder -> builder.group( + settingsCodec(builder), CampType.CODEC.fieldOf("camp_type").forGetter(structure -> structure.type) + ).apply(builder, CampFeature::new)); + + private final CampType type; + + public CampFeature(Structure.StructureSettings settings, CampType type) { + super(settings); + this.type = type; + } + + @Override @NotNull + public Optional findGenerationPoint(@NotNull Structure.GenerationContext context) { + return onTopOfChunkCenter(context, Heightmap.Types.WORLD_SURFACE_WG, (builder) -> this.generatePieces(builder, context, this.type)); + } + + private void generatePieces(StructurePiecesBuilder builder, Structure.GenerationContext context, CampType type) { + BlockPos centerOfChunk = new BlockPos(context.chunkPos().getMinBlockX() + 7, 0, context.chunkPos().getMinBlockZ() + 7); + BlockPos blockpos = new BlockPos( + context.chunkPos().getMinBlockX(), + context.chunkGenerator().getBaseHeight( + centerOfChunk.getX(), centerOfChunk.getZ(), Heightmap.Types.WORLD_SURFACE_WG, context.heightAccessor(), context.randomState() + ), + context.chunkPos().getMinBlockZ() + ); + Rotation rotation = Rotation.getRandom(context.random()); + CampPieces.addPieces(context.structureTemplateManager(), blockpos, rotation, builder, type); + } + + @Override @NotNull + public StructureType type() { + return ECStructureTypes.CAMP; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/camp/CampPieces.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/camp/CampPieces.java new file mode 100644 index 00000000..e5ff0b64 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/camp/CampPieces.java @@ -0,0 +1,93 @@ +package com.hexagram2021.emeraldcraft.common.world.structures.camp; + +import com.hexagram2021.emeraldcraft.api.camp.CampType; +import com.hexagram2021.emeraldcraft.api.camp.CampTypes; +import com.hexagram2021.emeraldcraft.common.register.ECStructurePieceTypes; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +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.pieces.StructurePieceSerializationContext; +import net.minecraft.world.level.levelgen.structure.templatesystem.BlockIgnoreProcessor; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager; +import org.jetbrains.annotations.NotNull; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; + +public class CampPieces { + private static final ResourceLocation BADLANDS_CAMP = new ResourceLocation(MODID, "camp/badlands_camp"); + private static final ResourceLocation BIRCH_CAMP = new ResourceLocation(MODID, "camp/birch_camp"); + private static final ResourceLocation DESERT_CAMP = new ResourceLocation(MODID, "camp/desert_camp"); + private static final ResourceLocation JUNGLE_CAMP = new ResourceLocation(MODID, "camp/jungle_camp"); + private static final ResourceLocation PLAINS_CAMP = new ResourceLocation(MODID, "camp/plains_camp"); + private static final ResourceLocation SAVANNA_CAMP = new ResourceLocation(MODID, "camp/savanna_camp"); + private static final ResourceLocation SNOW_CAMP = new ResourceLocation(MODID, "camp/snow_camp"); + private static final ResourceLocation STONY_CAMP = new ResourceLocation(MODID, "camp/stony_camp"); + private static final ResourceLocation SWAMP_CAMP = new ResourceLocation(MODID, "camp/swamp_camp"); + private static final ResourceLocation TAIGA_CAMP = new ResourceLocation(MODID, "camp/taiga_camp"); + + public static void addPieces(StructureTemplateManager structureManager, BlockPos pos, Rotation rotation, StructurePieceAccessor pieces, CampType type) { + if (CampTypes.BADLANDS.equals(type)) { + pieces.addPiece(new CampPiece(structureManager, BADLANDS_CAMP, pos, rotation)); + } else if (CampTypes.BIRCH.equals(type)) { + pieces.addPiece(new CampPiece(structureManager, BIRCH_CAMP, pos, rotation)); + } else if (CampTypes.DESERT.equals(type)) { + pieces.addPiece(new CampPiece(structureManager, DESERT_CAMP, pos, rotation)); + } else if (CampTypes.JUNGLE.equals(type)) { + pieces.addPiece(new CampPiece(structureManager, JUNGLE_CAMP, pos, rotation)); + } else if (CampTypes.PLAINS.equals(type)) { + pieces.addPiece(new CampPiece(structureManager, PLAINS_CAMP, pos, rotation)); + } else if (CampTypes.SAVANNA.equals(type)) { + pieces.addPiece(new CampPiece(structureManager, SAVANNA_CAMP, pos, rotation)); + } else if (CampTypes.SNOW.equals(type)) { + pieces.addPiece(new CampPiece(structureManager, SNOW_CAMP, pos, rotation)); + } else if (CampTypes.STONY.equals(type)) { + pieces.addPiece(new CampPiece(structureManager, STONY_CAMP, pos, rotation)); + } else if (CampTypes.SWAMP.equals(type)) { + pieces.addPiece(new CampPiece(structureManager, SWAMP_CAMP, pos, rotation)); + } else if (CampTypes.TAIGA.equals(type)) { + pieces.addPiece(new CampPiece(structureManager, TAIGA_CAMP, pos, rotation)); + } else { + ResourceLocation camp = CampTypes.getCampWithType(type); + if (camp == null) { + throw new IllegalArgumentException("Unknown camp type: " + type); + } + pieces.addPiece(new CampPiece(structureManager, camp, pos, rotation)); + } + } + + public static class CampPiece extends TemplateStructurePiece { + public CampPiece(StructureTemplateManager structureManager, ResourceLocation location, BlockPos pos, Rotation rotation) { + super(ECStructurePieceTypes.CAMP_TYPE, 0, structureManager, location, location.toString(), makeSettings(rotation), pos); + } + + public CampPiece(StructurePieceSerializationContext context, CompoundTag tag) { + super(ECStructurePieceTypes.CAMP_TYPE, tag, context.structureTemplateManager(), (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(@NotNull StructurePieceSerializationContext context, @NotNull CompoundTag tag) { + super.addAdditionalSaveData(context, tag); + tag.putString("Rot", this.placeSettings.getRotation().name()); + } + + @Override + protected void handleDataMarker(@NotNull String function, @NotNull BlockPos pos, @NotNull ServerLevelAccessor level, @NotNull RandomSource random, @NotNull BoundingBox sbb) { } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/entrenchment/EntrenchmentFeature.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/entrenchment/EntrenchmentFeature.java new file mode 100644 index 00000000..69ee636c --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/entrenchment/EntrenchmentFeature.java @@ -0,0 +1,51 @@ +package com.hexagram2021.emeraldcraft.common.world.structures.entrenchment; + +import com.hexagram2021.emeraldcraft.common.register.ECStructureTypes; +import com.mojang.serialization.Codec; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraft.world.level.levelgen.structure.Structure; +import net.minecraft.world.level.levelgen.structure.StructurePiece; +import net.minecraft.world.level.levelgen.structure.StructureType; +import net.minecraft.world.level.levelgen.structure.pieces.StructurePiecesBuilder; +import org.jetbrains.annotations.NotNull; + +import java.util.List; +import java.util.Optional; + +public class EntrenchmentFeature extends Structure { + public static final Codec CODEC = simpleCodec(EntrenchmentFeature::new); + + public EntrenchmentFeature(Structure.StructureSettings settings) { + super(settings); + } + + @Override @NotNull + public Optional findGenerationPoint(Structure.GenerationContext context) { + return Optional.of(new Structure.GenerationStub(context.chunkPos().getWorldPosition(), (builder) -> generatePieces(builder, context))); + } + + @Override @NotNull + public GenerationStep.Decoration step() { + return GenerationStep.Decoration.STRONGHOLDS; + } + + private static void generatePieces(StructurePiecesBuilder builder, Structure.GenerationContext context) { + EntrenchmentPieces.StartPiece startPiece = new EntrenchmentPieces.StartPiece( + context.random(), context.chunkPos().getBlockX(2), context.chunkPos().getBlockZ(2) + ); + builder.addPiece(startPiece); + startPiece.addChildren(startPiece, builder, context.random()); + List list = startPiece.pendingChildren; + + while(!list.isEmpty()) { + int rank = context.random().nextInt(list.size()); + StructurePiece piece = list.remove(rank); + piece.addChildren(startPiece, builder, context.random()); + } + } + + @Override @NotNull + public StructureType type() { + return ECStructureTypes.ENTRENCHMENT; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/entrenchment/EntrenchmentPieces.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/entrenchment/EntrenchmentPieces.java new file mode 100644 index 00000000..0de75080 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/entrenchment/EntrenchmentPieces.java @@ -0,0 +1,1476 @@ +package com.hexagram2021.emeraldcraft.common.world.structures.entrenchment; + +import com.google.common.collect.Lists; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.register.ECEntities; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.animal.Pig; +import net.minecraft.world.entity.monster.ZombifiedPiglin; +import net.minecraft.world.entity.monster.piglin.PiglinBrute; +import net.minecraft.world.level.ChunkPos; +import net.minecraft.world.level.StructureManager; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.*; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.entity.SpawnerBlockEntity; +import net.minecraft.world.level.block.piston.PistonBaseBlock; +import net.minecraft.world.level.block.piston.PistonHeadBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.*; +import net.minecraft.world.level.chunk.ChunkGenerator; +import net.minecraft.world.level.levelgen.structure.BoundingBox; +import net.minecraft.world.level.levelgen.structure.StructurePiece; +import net.minecraft.world.level.levelgen.structure.StructurePieceAccessor; +import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceSerializationContext; +import net.minecraft.world.level.levelgen.structure.pieces.StructurePieceType; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.List; +import java.util.Objects; +import java.util.function.Function; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; +import static com.hexagram2021.emeraldcraft.common.register.ECStructurePieceTypes.EntrenchmentPieceTypes.*; +import static com.hexagram2021.emeraldcraft.common.util.RegistryHelper.getRegistryName; + +public class EntrenchmentPieces { + static class PieceWeight { + public final Class pieceClass; + private final Function weight; + public int placeCount; + public final int maxPlaceCount; + + public PieceWeight(Class clazz, Function weight, int maxCount) { + this.pieceClass = clazz; + this.weight = weight; + this.maxPlaceCount = maxCount; + } + + public PieceWeight(Class clazz, int weight, int maxCount) { + this.pieceClass = clazz; + this.weight = count -> weight; + this.maxPlaceCount = maxCount; + } + + public int getWeight() { + return this.weight.apply(this.placeCount); + } + + @SuppressWarnings("BooleanMethodIsAlwaysInverted") + public boolean isValid() { + return this.maxPlaceCount <= 0 || this.placeCount < this.maxPlaceCount; + } + } + + private static sealed abstract class EntrenchmentPiece extends StructurePiece permits + HallPiece, CrossingPiece, StraightHallwayPiece, TurnPiece, MonsterRoomPiece, + LaboratoryPiece, BalconyPiece, PortalRoomPiece, WallPiece, KitchenPiece { + protected DoorType entryDoor = DoorType.OPENING; + + protected EntrenchmentPiece(StructurePieceType type, int depth, BoundingBox bbox) { + super(type, depth, bbox); + } + protected EntrenchmentPiece(StructurePieceType type, CompoundTag nbt) { + super(type, nbt); + this.entryDoor = DoorType.valueOf(nbt.getString("EntryDoor")); + } + + private static EntrenchmentPiece findAndCreateEntrenchmentPieceFactory(Class clazz, StructurePieceAccessor pieces, + RandomSource random, int x, int y, int z, @Nullable Direction direction, int depth) { + EntrenchmentPiece ret = null; + if(clazz == HallPiece.class) { + ret = HallPiece.createPiece(pieces, random, x, y, z, direction, depth); + } else if(clazz == CrossingPiece.class) { + ret = CrossingPiece.createPiece(pieces, random, x, y, z, direction, depth); + } else if(clazz == TBridgePiece.class) { + ret = TBridgePiece.createPiece(pieces, random, x, y, z, direction, depth); + } else if(clazz == LongHallwayPiece.class) { + ret = LongHallwayPiece.createPiece(pieces, random, x, y, z, direction, depth); + } else if(clazz == ShortHallwayPiece.class) { + ret = ShortHallwayPiece.createPiece(pieces, random, x, y, z, direction, depth); + } else if(clazz == ChestHallwayPiece.class) { + ret = ChestHallwayPiece.createPiece(pieces, random, x, y, z, direction, depth); + } else if(clazz == ShortBridgeHallwayPiece.class) { + ret = ShortBridgeHallwayPiece.createPiece(pieces, random, x, y, z, direction, depth); + } else if(clazz == LeftTurnPiece.class) { + ret = LeftTurnPiece.createPiece(pieces, random, x, y, z, direction, depth); + } else if(clazz == RightTurnPiece.class) { + ret = RightTurnPiece.createPiece(pieces, random, x, y, z, direction, depth); + } else if(clazz == MonsterRoomPiece.class) { + ret = MonsterRoomPiece.createPiece(pieces, random, x, y, z, direction, depth); + } else if(clazz == LaboratoryPiece.class) { + ret = LaboratoryPiece.createPiece(pieces, random, x, y, z, direction, depth); + } else if(clazz == BalconyPiece.class) { + ret = BalconyPiece.createPiece(pieces, random, x, y, z, direction, depth); + } else if(clazz == PortalRoomPiece.class) { + ret = PortalRoomPiece.createPiece(pieces, random, x, y, z, direction, depth); + } else if(clazz == WallPiece.class) { + ret = WallPiece.createPiece(pieces, random, x, y, z, direction, depth); + } else if(clazz == KitchenPiece.class) { + ret = KitchenPiece.createPiece(pieces, random, x, y, z, direction, depth); + } + return ret; + } + + @Override + protected void addAdditionalSaveData(@NotNull StructurePieceSerializationContext context, @NotNull CompoundTag nbt) { + nbt.putString("EntryDoor", this.entryDoor.name()); + } + + private int updatePieceWeight(List weights) { + boolean flag = false; + int i = 0; + + for(PieceWeight pieceWeight : weights) { + if (pieceWeight.maxPlaceCount > 0 && pieceWeight.placeCount < pieceWeight.maxPlaceCount) { + flag = true; + } + + i += pieceWeight.getWeight(); + } + + return flag ? i : -1; + } + + @SuppressWarnings({"SameParameterValue", "UnusedReturnValue"}) + @Nullable + protected StructurePiece generateChildForward(StartPiece startPiece, StructurePieceAccessor pieces, + RandomSource random, int xOffset, int yOffset) { + Direction direction = this.getOrientation(); + if (direction != null) { + switch(direction) { + case NORTH: + return this.generateAndAddPiece(startPiece, pieces, random, this.boundingBox.minX() + xOffset, this.boundingBox.minY() + yOffset, this.boundingBox.minZ() - 1, direction, this.getGenDepth()); + case SOUTH: + return this.generateAndAddPiece(startPiece, pieces, random, this.boundingBox.minX() + xOffset, this.boundingBox.minY() + yOffset, this.boundingBox.maxZ() + 1, direction, this.getGenDepth()); + case WEST: + return this.generateAndAddPiece(startPiece, pieces, random, this.boundingBox.minX() - 1, this.boundingBox.minY() + yOffset, this.boundingBox.minZ() + xOffset, direction, this.getGenDepth()); + case EAST: + return this.generateAndAddPiece(startPiece, pieces, random, this.boundingBox.maxX() + 1, this.boundingBox.minY() + yOffset, this.boundingBox.minZ() + xOffset, direction, this.getGenDepth()); + } + } + + return null; + } + + @SuppressWarnings("UnusedReturnValue") + @Nullable + protected StructurePiece generateChildLeft(StartPiece startPiece, StructurePieceAccessor pieces, + RandomSource random, int yOffset, int zOffset) { + Direction direction = this.getOrientation(); + if (direction != null) { + switch(direction) { + case NORTH: + case SOUTH: + return this.generateAndAddPiece(startPiece, pieces, random, this.boundingBox.minX() - 1, this.boundingBox.minY() + yOffset, this.boundingBox.minZ() + zOffset, Direction.WEST, this.getGenDepth()); + case WEST: + case EAST: + return this.generateAndAddPiece(startPiece, pieces, random, this.boundingBox.minX() + zOffset, this.boundingBox.minY() + yOffset, this.boundingBox.minZ() - 1, Direction.NORTH, this.getGenDepth()); + } + } + + return null; + } + + @SuppressWarnings("UnusedReturnValue") + @Nullable + protected StructurePiece generateChildRight(StartPiece startPiece, StructurePieceAccessor pieces, + RandomSource random, int yOffset, int zOffset) { + Direction direction = this.getOrientation(); + if (direction != null) { + switch(direction) { + case NORTH: + case SOUTH: + return this.generateAndAddPiece(startPiece, pieces, random, this.boundingBox.maxX() + 1, this.boundingBox.minY() + yOffset, this.boundingBox.minZ() + zOffset, Direction.EAST, this.getGenDepth()); + case WEST: + case EAST: + return this.generateAndAddPiece(startPiece, pieces, random, this.boundingBox.minX() + zOffset, this.boundingBox.minY() + yOffset, this.boundingBox.maxZ() + 1, Direction.SOUTH, this.getGenDepth()); + } + } + + return null; + } + + @SuppressWarnings({"SameParameterValue", "UnusedReturnValue", "unused"}) + @Nullable + protected StructurePiece generateChildForward(StartPiece startPiece, StructurePieceAccessor pieces, + Class newPieceClass, RandomSource random, int xOffset, int yOffset) { + Direction direction = this.getOrientation(); + if (direction != null) { + switch(direction) { + case NORTH: + return this.generateAndAddPiece(startPiece, pieces, newPieceClass, random, this.boundingBox.minX() + xOffset, this.boundingBox.minY() + yOffset, this.boundingBox.minZ() - 1, direction, this.getGenDepth()); + case SOUTH: + return this.generateAndAddPiece(startPiece, pieces, newPieceClass, random, this.boundingBox.minX() + xOffset, this.boundingBox.minY() + yOffset, this.boundingBox.maxZ() + 1, direction, this.getGenDepth()); + case WEST: + return this.generateAndAddPiece(startPiece, pieces, newPieceClass, random, this.boundingBox.minX() - 1, this.boundingBox.minY() + yOffset, this.boundingBox.minZ() + xOffset, direction, this.getGenDepth()); + case EAST: + return this.generateAndAddPiece(startPiece, pieces, newPieceClass, random, this.boundingBox.maxX() + 1, this.boundingBox.minY() + yOffset, this.boundingBox.minZ() + xOffset, direction, this.getGenDepth()); + } + } + + return null; + } + + @SuppressWarnings({"SameParameterValue", "UnusedReturnValue", "unused"}) + @Nullable + protected StructurePiece generateChildLeft(StartPiece startPiece, StructurePieceAccessor pieces, + Class newPieceClass, RandomSource random, int yOffset, int zOffset) { + Direction direction = this.getOrientation(); + if (direction != null) { + switch(direction) { + case NORTH: + case SOUTH: + return this.generateAndAddPiece(startPiece, pieces, newPieceClass, random, this.boundingBox.minX() - 1, this.boundingBox.minY() + yOffset, this.boundingBox.minZ() + zOffset, Direction.WEST, this.getGenDepth()); + case WEST: + case EAST: + return this.generateAndAddPiece(startPiece, pieces, newPieceClass, random, this.boundingBox.minX() + zOffset, this.boundingBox.minY() + yOffset, this.boundingBox.minZ() - 1, Direction.NORTH, this.getGenDepth()); + } + } + + return null; + } + + @SuppressWarnings({"SameParameterValue", "UnusedReturnValue"}) + @Nullable + protected StructurePiece generateChildRight(StartPiece startPiece, StructurePieceAccessor pieces, + Class newPieceClass, RandomSource random, int yOffset, int zOffset) { + Direction direction = this.getOrientation(); + if (direction != null) { + switch(direction) { + case NORTH: + case SOUTH: + return this.generateAndAddPiece(startPiece, pieces, newPieceClass, random, this.boundingBox.maxX() + 1, this.boundingBox.minY() + yOffset, this.boundingBox.minZ() + zOffset, Direction.EAST, this.getGenDepth()); + case WEST: + case EAST: + return this.generateAndAddPiece(startPiece, pieces, newPieceClass, random, this.boundingBox.minX() + zOffset, this.boundingBox.minY() + yOffset, this.boundingBox.maxZ() + 1, Direction.SOUTH, this.getGenDepth()); + } + } + + return null; + } + + @Override + public abstract void addChildren(@NotNull StructurePiece structurePiece, @NotNull StructurePieceAccessor pieces, @NotNull RandomSource random); + + @Nullable + private EntrenchmentPiece generatePiece(StartPiece startPiece, List weights, StructurePieceAccessor pieces, RandomSource random, + int x, int y, int z, Direction direction, int genDepth) { + int i = this.updatePieceWeight(weights); + boolean flag = i > 0 && genDepth <= 30; + int j = 0; + + while(j < 5 && flag) { + ++j; + int k = random.nextInt(i); + + for(PieceWeight pieceWeight : weights) { + k -= pieceWeight.getWeight(); + if (k < 0) { + if (!pieceWeight.isValid() || pieceWeight == startPiece.previousPiece) { + break; + } + + EntrenchmentPiece piece = findAndCreateEntrenchmentPieceFactory(pieceWeight.pieceClass, pieces, random, x, y, z, direction, genDepth); + if (piece != null) { + ++pieceWeight.placeCount; + startPiece.previousPiece = pieceWeight; + if (!pieceWeight.isValid()) { + weights.remove(pieceWeight); + } + + return piece; + } + } + } + } + + return WallPiece.createPiece(pieces, random, x, y, z, direction, genDepth); + } + + private static final List availablePieces = Lists.newArrayList( + new PieceWeight(HallPiece.class, count -> 25 - count * count, 5), + new PieceWeight(CrossingPiece.class, 20, 0), + new PieceWeight(LongHallwayPiece.class, 40, 0), + new PieceWeight(ShortHallwayPiece.class, 50, 0), + new PieceWeight(ChestHallwayPiece.class, count -> 30 - count * 5, 5), + new PieceWeight(LeftTurnPiece.class, 25, 0), + new PieceWeight(RightTurnPiece.class, 25, 0), + new PieceWeight(MonsterRoomPiece.class, count -> 10 + count * 20, 2), + new PieceWeight(LaboratoryPiece.class, 10, 2), + new PieceWeight(BalconyPiece.class, 25, 0), + new PieceWeight(PortalRoomPiece.class, 10, 0), + new PieceWeight(WallPiece.class, count -> 5 + 5 * count, 0), + new PieceWeight(KitchenPiece.class, 20, 1) + ); + + protected List AvailablePieces() { + return availablePieces; + } + + private StructurePiece generateAndAddPiece(StartPiece startPiece, StructurePieceAccessor pieces, RandomSource random, int x, int y, int z, + Direction direction, int genDepth) { + if (Math.abs(x - startPiece.getBoundingBox().minX()) <= 112 && Math.abs(z - startPiece.getBoundingBox().minZ()) <= 112 && genDepth < 50) { + List list = this.AvailablePieces(); + + EntrenchmentPiece entrenchmentPiece = this.generatePiece(startPiece, list, pieces, random, x, y, z, direction, genDepth + 1); + if (entrenchmentPiece != null) { + pieces.addPiece(entrenchmentPiece); + startPiece.pendingChildren.add(entrenchmentPiece); + } + + return entrenchmentPiece; + } + return null; + } + + private StructurePiece generateAndAddPiece(StartPiece startPiece, StructurePieceAccessor pieces, Class pieceClass, + RandomSource random, int x, int y, int z, Direction direction, int genDepth) { + if (Math.abs(x - startPiece.getBoundingBox().minX()) <= 112 && Math.abs(z - startPiece.getBoundingBox().minZ()) <= 112 && genDepth < 50) { + EntrenchmentPiece newPiece = findAndCreateEntrenchmentPieceFactory(pieceClass, pieces, random, x, y, z, direction, genDepth); + if (newPiece != null) { + pieces.addPiece(newPiece); + startPiece.pendingChildren.add(newPiece); + } + + return newPiece; + } + return null; + } + + protected static boolean isOkBox(BoundingBox bbox) { + return bbox != null && bbox.minY() > 10; + } + + protected DoorType randomSmallDoor(RandomSource random) { + int i = random.nextInt(8); + return switch (i) { + case 2, 3, 4 -> DoorType.WOOD_DOOR; + case 5, 6 -> DoorType.GOLD_WALL; + case 7 -> DoorType.PISTON_DOOR; + default -> DoorType.OPENING; + }; + } + + //3x3x2 + protected void generateSmallDoor(WorldGenLevel level, BoundingBox bbox, DoorType doorType, int x, int y, int z) { + final BlockState PURPURACEUS_DOOR = ECBlocks.TO_DOOR.get(ECBlocks.Plant.PURPURACEUS_PLANKS.getId()).defaultBlockState(); + final BlockState PURPLE_NETHER_BRICKS = ECBlocks.Decoration.PURPLE_NETHER_BRICKS.defaultBlockState(); + final BlockState GOLD_WALL = ECBlocks.TO_WALL.get(getRegistryName(Blocks.GOLD_BLOCK)).defaultBlockState(); + switch (doorType) { + case OPENING -> + this.generateBox(level, bbox, x, y, z, x + 3 - 1, y + 3 - 1, z + 1, CAVE_AIR, CAVE_AIR, false); + case WOOD_DOOR -> { + this.placeBlock(level, PURPLE_NETHER_BRICKS, x, y, z, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, x, y + 1, z, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, x, y + 2, z, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, x + 1, y + 2, z, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, x + 2, y, z, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, x + 2, y + 1, z, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, x + 2, y + 2, z, bbox); + this.placeBlock(level, PURPURACEUS_DOOR, x + 1, y, z, bbox); + this.placeBlock(level, PURPURACEUS_DOOR.setValue(DoorBlock.HALF, DoubleBlockHalf.UPPER), x + 1, y + 1, z, bbox); + this.generateBox(level, bbox, x, y, z + 1, x + 3 - 1, y + 3 - 1, z + 1, CAVE_AIR, CAVE_AIR, false); + } + case GOLD_WALL -> { + this.placeBlock(level, CAVE_AIR, x + 1, y, z, bbox); + this.placeBlock(level, CAVE_AIR, x + 1, y + 1, z, bbox); + this.placeBlock(level, GOLD_WALL.setValue(WallBlock.WEST_WALL, WallSide.TALL), x, y, z, bbox); + this.placeBlock(level, GOLD_WALL.setValue(WallBlock.WEST_WALL, WallSide.TALL), x, y + 1, z, bbox); + this.placeBlock(level, GOLD_WALL.setValue(WallBlock.WEST_WALL, WallSide.TALL).setValue(WallBlock.EAST_WALL, WallSide.TALL).setValue(WallBlock.UP, Boolean.FALSE), x, y + 2, z, bbox); + this.placeBlock(level, GOLD_WALL.setValue(WallBlock.WEST_WALL, WallSide.TALL).setValue(WallBlock.EAST_WALL, WallSide.TALL).setValue(WallBlock.UP, Boolean.FALSE), x + 1, y + 2, z, bbox); + this.placeBlock(level, GOLD_WALL.setValue(WallBlock.WEST_WALL, WallSide.TALL).setValue(WallBlock.EAST_WALL, WallSide.TALL).setValue(WallBlock.UP, Boolean.FALSE), x + 2, y + 2, z, bbox); + this.placeBlock(level, GOLD_WALL.setValue(WallBlock.EAST_WALL, WallSide.TALL), x + 2, y + 1, z, bbox); + this.placeBlock(level, GOLD_WALL.setValue(WallBlock.EAST_WALL, WallSide.TALL), x + 2, y, z, bbox); + this.generateBox(level, bbox, x, y, z + 1, x + 3 - 1, y + 3 - 1, z + 1, CAVE_AIR, CAVE_AIR, false); + } + case PISTON_DOOR -> { + this.placeBlock(level, CAVE_AIR, x + 1, y, z, bbox); + this.placeBlock(level, CAVE_AIR, x + 1, y + 1, z, bbox); + this.placeBlock(level, Blocks.REDSTONE_WIRE.defaultBlockState().setValue(RedStoneWireBlock.POWER, 15), x - 1, y + 2, z, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, x, y, z, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, x, y + 1, z, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, x, y + 2, z, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, x + 1, y + 2, z, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, x + 2, y, z, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, x + 2, y + 1, z, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, x + 2, y + 2, z, bbox); + this.placeBlock(level, Blocks.LEVER.defaultBlockState().setValue(LeverBlock.FACING, Direction.SOUTH).setValue(LeverBlock.POWERED, Boolean.TRUE), x, y + 2, z - 1, bbox); + this.placeBlock(level, Blocks.STICKY_PISTON.defaultBlockState().setValue(PistonBaseBlock.FACING, Direction.EAST).setValue(PistonBaseBlock.EXTENDED, Boolean.TRUE), x - 1, y, z + 1, bbox); + this.placeBlock(level, Blocks.STICKY_PISTON.defaultBlockState().setValue(PistonBaseBlock.FACING, Direction.EAST).setValue(PistonBaseBlock.EXTENDED, Boolean.TRUE), x - 1, y + 1, z + 1, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, x - 1, y + 2, z + 1, bbox); + this.placeBlock(level, Blocks.PISTON_HEAD.defaultBlockState().setValue(PistonHeadBlock.FACING, Direction.EAST).setValue(PistonHeadBlock.TYPE, PistonType.STICKY), x, y, z + 1, bbox); + this.placeBlock(level, Blocks.PISTON_HEAD.defaultBlockState().setValue(PistonHeadBlock.FACING, Direction.EAST).setValue(PistonHeadBlock.TYPE, PistonType.STICKY), x, y + 1, z + 1, bbox); + this.placeBlock(level, CAVE_AIR, x, y + 2, z + 1, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, x + 1, y, z + 1, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, x + 1, y + 1, z + 1, bbox); + this.placeBlock(level, CAVE_AIR, x + 1, y + 2, z + 1, bbox); + this.placeBlock(level, CAVE_AIR, x + 2, y, z + 1, bbox); + this.placeBlock(level, CAVE_AIR, x + 2, y + 1, z + 1, bbox); + this.placeBlock(level, CAVE_AIR, x + 2, y + 2, z + 1, bbox); + } + case BLOCKED -> + this.generateBox(level, bbox, x, y, z, x + 3 - 1, y + 3 - 1, z, PURPLE_NETHER_BRICKS, PURPLE_NETHER_BRICKS, false); + } + } + } + + public enum DoorType { + WOOD_DOOR, + GOLD_WALL, + PISTON_DOOR, + OPENING, + BLOCKED + } + + public static sealed class HallPiece extends EntrenchmentPiece permits StartPiece { + private static final int WIDTH = 9; + private static final int HEIGHT = 8; + private static final int LENGTH = 11; + + private static final int OFF_X = 4; + private static final int OFF_Y = 1; + private static final int OFF_Z = 0; + + private final boolean left_low; + private final boolean left_high; + private final boolean right_low; + private final boolean right_high; + private final boolean right_hole; + + public HallPiece(int depth, RandomSource random, BoundingBox bbox, Direction direction) { + this(HALL_TYPE, depth, random, bbox, direction); + } + + public HallPiece(StructurePieceSerializationContext context, CompoundTag nbt) { + this(HALL_TYPE, context, nbt); + } + + protected HallPiece(StructurePieceType type, int depth, RandomSource random, BoundingBox bbox, Direction direction) { + super(type, depth, bbox); + this.entryDoor = this.randomSmallDoor(random); + this.setOrientation(direction); + + this.left_low = random.nextInt(4) == 0; + this.left_high = random.nextInt(3) != 0; + this.right_low = random.nextBoolean(); + this.right_high = random.nextInt(5) <= 2; + this.right_hole = random.nextInt(8) != 0; + } + + protected HallPiece(StructurePieceType type, @SuppressWarnings("unused") StructurePieceSerializationContext context, CompoundTag nbt) { + super(type, nbt); + + this.left_low = nbt.getBoolean("leftLow"); + this.left_high = nbt.getBoolean("leftHigh"); + this.right_low = nbt.getBoolean("rightLow"); + this.right_high = nbt.getBoolean("rightHigh"); + this.right_hole = nbt.getBoolean("rightHole"); + } + + @Override + protected void addAdditionalSaveData(@NotNull StructurePieceSerializationContext context, @NotNull CompoundTag nbt) { + super.addAdditionalSaveData(context, nbt); + nbt.putBoolean("leftLow", this.left_low); + nbt.putBoolean("leftHigh", this.left_high); + nbt.putBoolean("rightLow", this.right_low); + nbt.putBoolean("rightHigh", this.right_high); + nbt.putBoolean("rightHole", this.right_hole); + } + + @Override + public void postProcess(@NotNull WorldGenLevel level, @NotNull StructureManager manager, @NotNull ChunkGenerator chunk, @NotNull RandomSource random, + @NotNull BoundingBox bbox, @NotNull ChunkPos chunkPos, @NotNull BlockPos blockPos) { + BlockState PURPLE_NETHER_BRICKS = ECBlocks.Decoration.PURPLE_NETHER_BRICKS.defaultBlockState(); + BlockState PURPLE_NETHER_BRICK_STAIRS = ECBlocks.TO_STAIRS.get(ECBlocks.Decoration.PURPLE_NETHER_BRICKS.getId()).defaultBlockState(); + BlockState PURPLE_NETHER_BRICK_SLAB = ECBlocks.TO_SLAB.get(ECBlocks.Decoration.PURPLE_NETHER_BRICKS.getId()).defaultBlockState(); + BlockState PURPLE_NETHER_BRICK_SLAB_TOP = PURPLE_NETHER_BRICK_SLAB.setValue(SlabBlock.TYPE, SlabType.TOP); + BlockState UP_STAIRS = PURPLE_NETHER_BRICK_STAIRS.setValue(StairBlock.FACING, Direction.NORTH); + BlockState RIGHT_STAIRS = PURPLE_NETHER_BRICK_STAIRS.setValue(StairBlock.FACING, Direction.EAST); + + this.generateBox(level, bbox, 0, 0, 0, WIDTH - 1, HEIGHT - 1, LENGTH - 1, PURPLE_NETHER_BRICKS, CAVE_AIR, true); + + this.placeBlock(level, UP_STAIRS, 1, 1, 5, bbox); + this.placeBlock(level, UP_STAIRS, 2, 1, 5, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 1, 1, 6, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 2, 1, 6, bbox); + this.placeBlock(level, UP_STAIRS, 1, 2, 6, bbox); + this.placeBlock(level, UP_STAIRS, 2, 2, 6, bbox); + this.generateBox(level, bbox, 1, 1, 7, 1, 2, 9, PURPLE_NETHER_BRICKS, CAVE_AIR, false); + this.placeBlock(level, Blocks.SOUL_TORCH.defaultBlockState(), 2, 1, 8, bbox); + this.generateBox(level, bbox, 2, 2, 7, 2, 2, 9, PURPLE_NETHER_BRICK_SLAB_TOP, CAVE_AIR, false); + this.generateBox(level, bbox, 3, 3, 7, 3, 3, 9, PURPLE_NETHER_BRICK_SLAB, CAVE_AIR, false); + this.generateBox(level, bbox, 4, 3, 7, 6, 3, 9, PURPLE_NETHER_BRICK_SLAB_TOP, CAVE_AIR, false); + this.generateBox(level, bbox, 6, 4, 7, 6, 4, 9, PURPLE_NETHER_BRICK_SLAB, CAVE_AIR, false); + this.generateBox(level, bbox, 7, 4, 7, 7, 4, 9, RIGHT_STAIRS, CAVE_AIR, false); + + this.createChest(level, bbox, random, 2, 1, 9, new ResourceLocation(MODID, "chests/entrenchment/hall")); + + this.generateBox(level, bbox, 5, 1, LENGTH - 1, 7, 3, LENGTH - 1, CAVE_AIR, CAVE_AIR, false); + + if (this.left_low) { + this.generateBox(level, bbox, 0, 1, 1, 0, 3, 3, CAVE_AIR, CAVE_AIR, false); + } + if (this.left_high) { + this.generateBox(level, bbox, 0, 3, 7, 0, 5, 9, CAVE_AIR, CAVE_AIR, false); + } + if (this.right_hole) { + this.generateBox(level, bbox, WIDTH - 1, 1, 7, WIDTH - 1, 3, 9, CAVE_AIR, CAVE_AIR, false); + } + if (this.right_low) { + this.generateBox(level, bbox, WIDTH - 1, 1, 1, WIDTH - 1, 3, 3, CAVE_AIR, CAVE_AIR, false); + } + if (this.right_high) { + this.generateBox(level, bbox, WIDTH - 1, 5, 7, WIDTH - 1, 7, 9, CAVE_AIR, CAVE_AIR, false); + } + + this.generateSmallDoor(level, bbox, this.entryDoor, OFF_X, OFF_Y, OFF_Z); + } + + public static HallPiece createPiece(StructurePieceAccessor pieces, RandomSource random, int x, int y, int z, Direction direction, int depth) { + BoundingBox boundingbox = BoundingBox.orientBox(x, y, z, -OFF_X, -OFF_Y, -OFF_Z, WIDTH, HEIGHT, LENGTH, direction); + return isOkBox(boundingbox) && pieces.findCollisionPiece(boundingbox) == null ? new HallPiece(depth, random, boundingbox, direction) : null; + } + + @Override + public void addChildren(@NotNull StructurePiece structurePiece, @NotNull StructurePieceAccessor pieces, @NotNull RandomSource random) { + this.generateChildForward((StartPiece)structurePiece, pieces, random, 5, 1); + if (this.left_low) { + this.generateChildLeft((StartPiece)structurePiece, pieces, random, 1, 1); + } + if (this.left_high) { + this.generateChildLeft((StartPiece)structurePiece, pieces, random, 3, 7); + } + if (this.right_hole) { + if(this.right_high) { + this.generateChildRight((StartPiece)structurePiece, pieces, TBridgePiece.class, random, 1, 7); + } else { + this.generateChildRight((StartPiece)structurePiece, pieces, random, 1, 7); + } + } + if (this.right_low) { + this.generateChildRight((StartPiece)structurePiece, pieces, random, 1, 1); + } + if (this.right_high) { + this.generateChildRight((StartPiece)structurePiece, pieces, random, 5, 7); + } + } + } + + public static final class StartPiece extends HallPiece { + private static final int WIDTH = 9; + private static final int HEIGHT = 8; + private static final int LENGTH = 11; + + public PieceWeight previousPiece; + + public final List pendingChildren = Lists.newArrayList(); + + public StartPiece(RandomSource random, int x, int z) { + this(random, x, z, getRandomHorizontalDirection(random)); + } + + private StartPiece(RandomSource random, int x, int z, Direction direction) { + super(START_TYPE, 0, random, makeBoundingBox(x, 16, z, direction, WIDTH, HEIGHT, LENGTH), direction); + this.entryDoor = DoorType.BLOCKED; + } + + public StartPiece(StructurePieceSerializationContext context, CompoundTag nbt) { + super(START_TYPE, context, nbt); + } + + @Override + public void postProcess(@NotNull WorldGenLevel level, @NotNull StructureManager manager, @NotNull ChunkGenerator chunk, @NotNull RandomSource random, + @NotNull BoundingBox bbox, @NotNull ChunkPos chunkPos, @NotNull BlockPos blockPos) { + super.postProcess(level, manager, chunk, random, bbox, chunkPos, blockPos); + this.createChest(level, bbox, random, 4, 1, 1, new ResourceLocation(MODID, "chests/entrenchment/start")); + } + } + + public static sealed class CrossingPiece extends EntrenchmentPiece permits TBridgePiece { + private static final int WIDTH = 5; + private static final int HEIGHT = 5; + private static final int LENGTH = 5; + + private static final int OFF_X = 1; + private static final int OFF_Y = 1; + private static final int OFF_Z = 0; + + public CrossingPiece(int depth, RandomSource random, BoundingBox bbox, Direction direction) { + this(CROSSING_TYPE, depth, random, bbox, direction); + } + + public CrossingPiece(StructurePieceSerializationContext context, CompoundTag nbt) { + this(CROSSING_TYPE, context, nbt); + } + + protected CrossingPiece(StructurePieceType type, int depth, RandomSource random, BoundingBox bbox, Direction direction) { + super(type, depth, bbox); + this.entryDoor = this.randomSmallDoor(random); + this.setOrientation(direction); + } + + protected CrossingPiece(StructurePieceType type, @SuppressWarnings("unused") StructurePieceSerializationContext context, CompoundTag nbt) { + super(type, nbt); + } + + @Override + public void addChildren(@NotNull StructurePiece structurePiece, @NotNull StructurePieceAccessor pieces, @NotNull RandomSource random) { + this.generateChildForward((StartPiece) structurePiece, pieces, random, 1, 1); + this.generateChildLeft((StartPiece) structurePiece, pieces, random, 1, 1); + this.generateChildRight((StartPiece) structurePiece, pieces, random, 1, 1); + } + + @Override + public void postProcess(@NotNull WorldGenLevel level, @NotNull StructureManager manager, @NotNull ChunkGenerator chunk, @NotNull RandomSource random, + @NotNull BoundingBox bbox, @NotNull ChunkPos chunkPos, @NotNull BlockPos blockPos) { + this.generateBox(level, bbox, 0, 0, 0, WIDTH - 1, HEIGHT - 1, LENGTH - 1, ECBlocks.Decoration.PURPLE_NETHER_BRICKS.defaultBlockState(), CAVE_AIR, true); + + this.generateBox(level, bbox, 1, 1, LENGTH - 1, 3, 3, LENGTH - 1, CAVE_AIR, CAVE_AIR, false); + this.generateBox(level, bbox, 0, 1, 1, 0, 3, 3, CAVE_AIR, CAVE_AIR, false); + this.generateBox(level, bbox, WIDTH - 1, 1, 1, WIDTH - 1, 3, 3, CAVE_AIR, CAVE_AIR, false); + this.placeBlock(level, Blocks.SOUL_LANTERN.defaultBlockState().setValue(LanternBlock.HANGING, Boolean.TRUE), 2, 3, 2, bbox); + + this.generateSmallDoor(level, bbox, this.entryDoor, OFF_X, OFF_Y, OFF_Z); + } + + public static CrossingPiece createPiece(StructurePieceAccessor pieces, RandomSource random, int x, int y, int z, Direction direction, int depth) { + BoundingBox boundingbox = BoundingBox.orientBox(x, y, z, -OFF_X, -OFF_Y, -OFF_Z, WIDTH, HEIGHT, LENGTH, direction); + return isOkBox(boundingbox) && pieces.findCollisionPiece(boundingbox) == null ? new CrossingPiece(depth, random, boundingbox, direction) : null; + } + } + + public static final class TBridgePiece extends CrossingPiece { + private static final int WIDTH = 5; + private static final int HEIGHT = 4; + private static final int LENGTH = 5; + + private static final int OFF_X = 1; + private static final int OFF_Y = 1; + private static final int OFF_Z = 0; + + public TBridgePiece(int depth, RandomSource random, BoundingBox bbox, Direction direction) { + super(T_BRIDGE_TYPE, depth, random, bbox, direction); + } + + public TBridgePiece(StructurePieceSerializationContext context, CompoundTag nbt) { + super(T_BRIDGE_TYPE, context, nbt); + } + + private static final List TBridgeAvailablePieces = Lists.newArrayList( + new PieceWeight(ShortBridgeHallwayPiece.class, 35, 0), + new PieceWeight(BalconyPiece.class, 15, 0) + ); + + @Override + protected List AvailablePieces() { + return TBridgeAvailablePieces; + } + + @Override + public void addChildren(@NotNull StructurePiece structurePiece, @NotNull StructurePieceAccessor pieces, @NotNull RandomSource random) { + this.generateChildLeft((StartPiece) structurePiece, pieces, random, 1, 1); + this.generateChildRight((StartPiece) structurePiece, pieces, random, 1, 1); + } + + @Override + public void postProcess(@NotNull WorldGenLevel level, @NotNull StructureManager manager, @NotNull ChunkGenerator chunk, @NotNull RandomSource random, + @NotNull BoundingBox bbox, @NotNull ChunkPos chunkPos, @NotNull BlockPos blockPos) { + BlockState PURPLE_NETHER_BRICKS = ECBlocks.Decoration.PURPLE_NETHER_BRICKS.defaultBlockState(); + this.generateBox(level, bbox, 0, 0, 0, WIDTH - 1, 0, LENGTH - 1, PURPLE_NETHER_BRICKS, CAVE_AIR, true); + this.generateBox(level, bbox, 0, 1, LENGTH - 1, WIDTH - 1, HEIGHT - 1, LENGTH - 1, PURPLE_NETHER_BRICKS, CAVE_AIR, true); + this.generateBox(level, bbox, 0, 1, 0, WIDTH - 1, HEIGHT - 1, LENGTH - 2, CAVE_AIR, CAVE_AIR, true); + + this.placeBlock(level, PURPLE_NETHER_BRICKS, 0, 1, 0, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, WIDTH - 1, 1, 0, bbox); + + this.placeBlock(level, Blocks.SOUL_LANTERN.defaultBlockState().setValue(LanternBlock.HANGING, Boolean.TRUE), 2, 3, 2, bbox); + + this.generateSmallDoor(level, bbox, this.entryDoor, OFF_X, OFF_Y, OFF_Z); + } + + public static TBridgePiece createPiece(StructurePieceAccessor pieces, RandomSource random, int x, int y, int z, Direction direction, int depth) { + BoundingBox boundingbox = BoundingBox.orientBox(x, y, z, -OFF_X, -OFF_Y, -OFF_Z, WIDTH, HEIGHT, LENGTH, direction); + return isOkBox(boundingbox) && pieces.findCollisionPiece(boundingbox) == null ? new TBridgePiece(depth, random, boundingbox, direction) : null; + } + } + + public static abstract sealed class StraightHallwayPiece extends EntrenchmentPiece permits LongHallwayPiece, ShortHallwayPiece { + protected StraightHallwayPiece(StructurePieceType type, int depth, BoundingBox bbox, Direction direction) { + super(type, depth, bbox); + this.setOrientation(direction); + } + + protected StraightHallwayPiece(StructurePieceType type, CompoundTag nbt) { + super(type, nbt); + } + + @Override + public void addChildren(@NotNull StructurePiece structurePiece, @NotNull StructurePieceAccessor pieces, @NotNull RandomSource random) { + this.generateChildForward((StartPiece) structurePiece, pieces, random, 1, 1); + } + } + + public static final class LongHallwayPiece extends StraightHallwayPiece { + private static final int WIDTH = 5; + private static final int HEIGHT = 5; + private static final int LENGTH = 12; + + private static final int OFF_X = 1; + private static final int OFF_Y = 1; + private static final int OFF_Z = 0; + + public LongHallwayPiece(int depth, BoundingBox bbox, Direction direction) { + super(LONG_HALLWAY_TYPE, depth, bbox, direction); + } + + public LongHallwayPiece(@SuppressWarnings("unused") StructurePieceSerializationContext context, CompoundTag nbt) { + super(LONG_HALLWAY_TYPE, nbt); + } + + @Override + public void postProcess(@NotNull WorldGenLevel level, @NotNull StructureManager manager, @NotNull ChunkGenerator chunk, @NotNull RandomSource random, + @NotNull BoundingBox bbox, @NotNull ChunkPos chunkPos, @NotNull BlockPos blockPos) { + this.generateBox(level, bbox, 0, 0, 0, WIDTH - 1, HEIGHT - 1, LENGTH - 1, ECBlocks.Decoration.PURPLE_NETHER_BRICKS.defaultBlockState(), CAVE_AIR, true); + + this.generateBox(level, bbox, 1, 1, LENGTH - 1, 3, 3, LENGTH - 1, CAVE_AIR, CAVE_AIR, false); + this.placeBlock(level, Blocks.SOUL_WALL_TORCH.defaultBlockState().setValue(WallTorchBlock.FACING, Direction.EAST), 1, 3, 5, bbox); + + this.generateSmallDoor(level, bbox, this.entryDoor, OFF_X, OFF_Y, OFF_Z); + } + + public static LongHallwayPiece createPiece(StructurePieceAccessor pieces, @SuppressWarnings("unused") RandomSource random, int x, int y, int z, Direction direction, int depth) { + BoundingBox boundingbox = BoundingBox.orientBox(x, y, z, -OFF_X, -OFF_Y, -OFF_Z, WIDTH, HEIGHT, LENGTH, direction); + return isOkBox(boundingbox) && pieces.findCollisionPiece(boundingbox) == null ? new LongHallwayPiece(depth, boundingbox, direction) : null; + } + } + + public static sealed class ShortHallwayPiece extends StraightHallwayPiece permits ChestHallwayPiece, ShortBridgeHallwayPiece { + private static final int WIDTH = 5; + private static final int HEIGHT = 5; + private static final int LENGTH = 7; + + private static final int OFF_X = 1; + private static final int OFF_Y = 1; + private static final int OFF_Z = 0; + + public ShortHallwayPiece(int depth, BoundingBox bbox, Direction direction) { + super(SHORT_HALLWAY_TYPE, depth, bbox, direction); + } + + public ShortHallwayPiece(@SuppressWarnings("unused") StructurePieceSerializationContext context, CompoundTag nbt) { + super(SHORT_HALLWAY_TYPE, nbt); + } + + protected ShortHallwayPiece(StructurePieceType type, int depth, BoundingBox bbox, Direction direction) { + super(type, depth, bbox, direction); + } + + protected ShortHallwayPiece(StructurePieceType type, CompoundTag nbt) { + super(type, nbt); + } + + @Override + public void postProcess(@NotNull WorldGenLevel level, @NotNull StructureManager manager, @NotNull ChunkGenerator chunk, @NotNull RandomSource random, + @NotNull BoundingBox bbox, @NotNull ChunkPos chunkPos, @NotNull BlockPos blockPos) { + this.generateBox(level, bbox, 0, 0, 0, WIDTH - 1, HEIGHT - 1, LENGTH - 1, ECBlocks.Decoration.PURPLE_NETHER_BRICKS.defaultBlockState(), CAVE_AIR, true); + + this.generateBox(level, bbox, 1, 1, LENGTH - 1, 3, 3, LENGTH - 1, CAVE_AIR, CAVE_AIR, false); + this.placeBlock(level, Blocks.SOUL_LANTERN.defaultBlockState().setValue(LanternBlock.HANGING, Boolean.TRUE), 1, 3, 3, bbox); + + this.generateSmallDoor(level, bbox, this.entryDoor, OFF_X, OFF_Y, OFF_Z); + } + + public static ShortHallwayPiece createPiece(StructurePieceAccessor pieces, @SuppressWarnings("unused") RandomSource random, int x, int y, int z, Direction direction, int depth) { + BoundingBox boundingbox = BoundingBox.orientBox(x, y, z, -OFF_X, -OFF_Y, -OFF_Z, WIDTH, HEIGHT, LENGTH, direction); + return isOkBox(boundingbox) && pieces.findCollisionPiece(boundingbox) == null ? new ShortHallwayPiece(depth, boundingbox, direction) : null; + } + } + + public static final class ChestHallwayPiece extends ShortHallwayPiece { + private static final int WIDTH = 5; + private static final int HEIGHT = 5; + private static final int LENGTH = 7; + + private static final int OFF_X = 1; + private static final int OFF_Y = 1; + private static final int OFF_Z = 0; + + public ChestHallwayPiece(int depth, BoundingBox bbox, Direction direction) { + super(CHEST_HALLWAY_TYPE, depth, bbox, direction); + } + + public ChestHallwayPiece(@SuppressWarnings("unused") StructurePieceSerializationContext context, CompoundTag nbt) { + super(CHEST_HALLWAY_TYPE, nbt); + } + + @Override + public void postProcess(@NotNull WorldGenLevel level, @NotNull StructureManager manager, @NotNull ChunkGenerator chunk, @NotNull RandomSource random, + @NotNull BoundingBox bbox, @NotNull ChunkPos chunkPos, @NotNull BlockPos blockPos) { + super.postProcess(level, manager, chunk, random, bbox, chunkPos, blockPos); + + final BlockState PURPLE_NETHER_STAIRS = ECBlocks.TO_STAIRS.get(ECBlocks.Decoration.PURPLE_NETHER_BRICKS.getId()).defaultBlockState(); + final BlockState PURPLE_NETHER_SLAB = ECBlocks.TO_SLAB.get(ECBlocks.Decoration.PURPLE_NETHER_BRICKS.getId()).defaultBlockState(); + + this.placeBlock(level, PURPLE_NETHER_STAIRS.setValue(StairBlock.FACING, Direction.SOUTH).setValue(StairBlock.HALF, Half.TOP), 3, 1, 2, bbox); + this.placeBlock(level, PURPLE_NETHER_STAIRS.setValue(StairBlock.FACING, Direction.NORTH).setValue(StairBlock.HALF, Half.TOP), 3, 1, 4, bbox); + this.placeBlock(level, PURPLE_NETHER_SLAB.setValue(SlabBlock.TYPE, SlabType.DOUBLE), 3, 1, 3, bbox); + this.placeBlock(level, PURPLE_NETHER_SLAB, 3, 2, 2, bbox); + this.placeBlock(level, PURPLE_NETHER_SLAB, 3, 2, 4, bbox); + this.placeBlock(level, PURPLE_NETHER_SLAB.setValue(SlabBlock.TYPE, SlabType.TOP), 3, 3, 3, bbox); + this.createChest(level, bbox, random, 3, 2, 3, new ResourceLocation(MODID, "chests/entrenchment/chest_hallway")); + } + + public static ChestHallwayPiece createPiece(StructurePieceAccessor pieces, @SuppressWarnings("unused") RandomSource random, int x, int y, int z, Direction direction, int depth) { + BoundingBox boundingbox = BoundingBox.orientBox(x, y, z, -OFF_X, -OFF_Y, -OFF_Z, WIDTH, HEIGHT, LENGTH, direction); + return isOkBox(boundingbox) && pieces.findCollisionPiece(boundingbox) == null ? new ChestHallwayPiece(depth, boundingbox, direction) : null; + } + } + + public static final class ShortBridgeHallwayPiece extends ShortHallwayPiece { + private static final int WIDTH = 5; + private static final int HEIGHT = 4; + private static final int LENGTH = 7; + + private static final int OFF_X = 1; + private static final int OFF_Y = 1; + private static final int OFF_Z = 0; + + public ShortBridgeHallwayPiece(int depth, BoundingBox bbox, Direction direction) { + super(BRIDGE_HALLWAY_TYPE, depth, bbox, direction); + } + + public ShortBridgeHallwayPiece(@SuppressWarnings("unused") StructurePieceSerializationContext context, CompoundTag nbt) { + super(BRIDGE_HALLWAY_TYPE, nbt); + } + + @Override + public void postProcess(@NotNull WorldGenLevel level, @NotNull StructureManager manager, @NotNull ChunkGenerator chunk, @NotNull RandomSource random, + @NotNull BoundingBox bbox, @NotNull ChunkPos chunkPos, @NotNull BlockPos blockPos) { + BlockState PURPLE_NETHER_BRICKS = ECBlocks.Decoration.PURPLE_NETHER_BRICKS.defaultBlockState(); + BlockState SOUL_TORCH = Blocks.SOUL_TORCH.defaultBlockState(); + this.generateBox(level, bbox, 0, 0, 0, WIDTH - 1, 0, LENGTH - 1, PURPLE_NETHER_BRICKS, CAVE_AIR, true); + this.generateBox(level, bbox, 0, 1, 0, WIDTH - 1, HEIGHT - 1, LENGTH - 1, CAVE_AIR, CAVE_AIR, false); + this.generateBox(level, bbox, 0, 1, 0, 0, 1, LENGTH - 1, PURPLE_NETHER_BRICKS, CAVE_AIR, true); + this.generateBox(level, bbox, WIDTH - 1, 1, 0, WIDTH - 1, 1, LENGTH - 1, PURPLE_NETHER_BRICKS, CAVE_AIR, true); + + this.placeBlock(level, SOUL_TORCH, 0, 2, 3, bbox); + this.placeBlock(level, SOUL_TORCH, WIDTH - 1, 2, 3, bbox); + + this.generateSmallDoor(level, bbox, this.entryDoor, OFF_X, OFF_Y, OFF_Z); + } + + public static ShortBridgeHallwayPiece createPiece(StructurePieceAccessor pieces, @SuppressWarnings("unused") RandomSource random, int x, int y, int z, Direction direction, int depth) { + BoundingBox boundingbox = BoundingBox.orientBox(x, y, z, -OFF_X, -OFF_Y, -OFF_Z, WIDTH, HEIGHT, LENGTH, direction); + return isOkBox(boundingbox) && pieces.findCollisionPiece(boundingbox) == null ? new ShortBridgeHallwayPiece(depth, boundingbox, direction) : null; + } + } + + public static abstract sealed class TurnPiece extends EntrenchmentPiece permits LeftTurnPiece, RightTurnPiece { + protected TurnPiece(StructurePieceType type, int depth, RandomSource random, BoundingBox bbox, Direction direction) { + super(type, depth, bbox); + this.entryDoor = this.randomSmallDoor(random); + this.setOrientation(direction); + } + + protected TurnPiece(StructurePieceType type, CompoundTag nbt) { + super(type, nbt); + } + } + + public static final class LeftTurnPiece extends TurnPiece { + private static final int WIDTH = 5; + private static final int HEIGHT = 5; + private static final int LENGTH = 5; + + private static final int OFF_X = 1; + private static final int OFF_Y = 1; + private static final int OFF_Z = 0; + + public LeftTurnPiece(int depth, RandomSource random, BoundingBox bbox, Direction direction) { + super(LEFT_TURN_TYPE, depth, random, bbox, direction); + } + + public LeftTurnPiece(@SuppressWarnings("unused") StructurePieceSerializationContext context, CompoundTag nbt) { + super(LEFT_TURN_TYPE, nbt); + } + + @Override + public void postProcess(@NotNull WorldGenLevel level, @NotNull StructureManager manager, @NotNull ChunkGenerator chunk, @NotNull RandomSource random, + @NotNull BoundingBox bbox, @NotNull ChunkPos chunkPos, @NotNull BlockPos blockPos) { + this.generateBox(level, bbox, 0, 0, 0, WIDTH - 1, HEIGHT - 1, LENGTH - 1, ECBlocks.Decoration.PURPLE_NETHER_BRICKS.defaultBlockState(), CAVE_AIR, true); + + this.generateBox(level, bbox, 0, 1, 1, 0, 3, 3, CAVE_AIR, CAVE_AIR, false); + + this.generateSmallDoor(level, bbox, this.entryDoor, OFF_X, OFF_Y, OFF_Z); + } + + @Override + public void addChildren(@NotNull StructurePiece structurePiece, @NotNull StructurePieceAccessor pieces, @NotNull RandomSource random) { + this.generateChildLeft((StartPiece) structurePiece, pieces, random, 1, 1); + } + + public static LeftTurnPiece createPiece(StructurePieceAccessor pieces, RandomSource random, int x, int y, int z, Direction direction, int depth) { + BoundingBox boundingbox = BoundingBox.orientBox(x, y, z, -OFF_X, -OFF_Y, -OFF_Z, WIDTH, HEIGHT, LENGTH, direction); + return isOkBox(boundingbox) && pieces.findCollisionPiece(boundingbox) == null ? new LeftTurnPiece(depth, random, boundingbox, direction) : null; + } + } + + public static final class RightTurnPiece extends TurnPiece { + private static final int WIDTH = 5; + private static final int HEIGHT = 5; + private static final int LENGTH = 5; + + private static final int OFF_X = 1; + private static final int OFF_Y = 1; + private static final int OFF_Z = 0; + + public RightTurnPiece(int depth, RandomSource random, BoundingBox bbox, Direction direction) { + super(RIGHT_TURN_TYPE, depth, random, bbox, direction); + } + + public RightTurnPiece(@SuppressWarnings("unused") StructurePieceSerializationContext context, CompoundTag nbt) { + super(RIGHT_TURN_TYPE, nbt); + } + + @Override + public void postProcess(@NotNull WorldGenLevel level, @NotNull StructureManager manager, @NotNull ChunkGenerator chunk, @NotNull RandomSource random, + @NotNull BoundingBox bbox, @NotNull ChunkPos chunkPos, @NotNull BlockPos blockPos) { + this.generateBox(level, bbox, 0, 0, 0, WIDTH - 1, HEIGHT - 1, LENGTH - 1, ECBlocks.Decoration.PURPLE_NETHER_BRICKS.defaultBlockState(), CAVE_AIR, true); + + this.generateBox(level, bbox, WIDTH - 1, 1, 1, WIDTH - 1, 3, 3, CAVE_AIR, CAVE_AIR, false); + + this.generateSmallDoor(level, bbox, this.entryDoor, OFF_X, OFF_Y, OFF_Z); + } + + @Override + public void addChildren(@NotNull StructurePiece structurePiece, @NotNull StructurePieceAccessor pieces, @NotNull RandomSource random) { + this.generateChildRight((StartPiece) structurePiece, pieces, random, 1, 1); + } + + public static RightTurnPiece createPiece(StructurePieceAccessor pieces, RandomSource random, int x, int y, int z, Direction direction, int depth) { + BoundingBox boundingbox = BoundingBox.orientBox(x, y, z, -OFF_X, -OFF_Y, -OFF_Z, WIDTH, HEIGHT, LENGTH, direction); + return isOkBox(boundingbox) && pieces.findCollisionPiece(boundingbox) == null ? new RightTurnPiece(depth, random, boundingbox, direction) : null; + } + } + + public static final class MonsterRoomPiece extends EntrenchmentPiece { + private static final int WIDTH = 9; + private static final int HEIGHT = 6; + private static final int LENGTH = 9; + + private static final int OFF_X = 3; + private static final int OFF_Y = 1; + private static final int OFF_Z = 0; + + private boolean hasPlacedSpawner; + + public MonsterRoomPiece(int depth, RandomSource random, BoundingBox bbox, Direction direction) { + super(MONSTER_ROOM_TYPE, depth, bbox); + this.entryDoor = this.randomSmallDoor(random); + this.setOrientation(direction); + } + + public MonsterRoomPiece(@SuppressWarnings("unused") StructurePieceSerializationContext context, CompoundTag nbt) { + super(MONSTER_ROOM_TYPE, nbt); + this.hasPlacedSpawner = nbt.getBoolean("Mob"); + } + + @Override + protected void addAdditionalSaveData(@NotNull StructurePieceSerializationContext context, @NotNull CompoundTag nbt) { + super.addAdditionalSaveData(context, nbt); + nbt.putBoolean("Mob", this.hasPlacedSpawner); + } + + @Override + public void addChildren(@NotNull StructurePiece structurePiece, @NotNull StructurePieceAccessor pieces, @NotNull RandomSource random) { + } + + @Override + public void postProcess(@NotNull WorldGenLevel level, @NotNull StructureManager manager, @NotNull ChunkGenerator chunk, @NotNull RandomSource random, + @NotNull BoundingBox bbox, @NotNull ChunkPos chunkPos, @NotNull BlockPos blockPos) { + BlockState PURPLE_NETHER_BRICKS = ECBlocks.Decoration.PURPLE_NETHER_BRICKS.defaultBlockState(); + BlockState PURPLE_NETHER_BRICK_STAIRS = ECBlocks.TO_STAIRS.get(ECBlocks.Decoration.PURPLE_NETHER_BRICKS.getId()).defaultBlockState(); + BlockState IRON_SLAB = ECBlocks.TO_SLAB.get(getRegistryName(Blocks.IRON_BLOCK)).defaultBlockState(); + BlockState IRON_BARS = Blocks.IRON_BARS.defaultBlockState(); + + this.generateBox(level, bbox, 0, 0, 0, WIDTH - 1, HEIGHT - 1, LENGTH - 1, PURPLE_NETHER_BRICKS, CAVE_AIR, true); + + this.placeBlock(level, PURPLE_NETHER_BRICK_STAIRS.setValue(StairBlock.FACING, Direction.EAST), 3, 1, 4, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICK_STAIRS.setValue(StairBlock.FACING, Direction.EAST).setValue(StairBlock.SHAPE, StairsShape.OUTER_LEFT), 3, 1, 5, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICK_STAIRS.setValue(StairBlock.FACING, Direction.NORTH), 4, 1, 5, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICK_STAIRS.setValue(StairBlock.FACING, Direction.NORTH).setValue(StairBlock.SHAPE, StairsShape.OUTER_LEFT), 5, 1, 5, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICK_STAIRS.setValue(StairBlock.FACING, Direction.WEST), 5, 1, 4, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICK_STAIRS.setValue(StairBlock.FACING, Direction.WEST).setValue(StairBlock.SHAPE, StairsShape.OUTER_LEFT), 5, 1, 3, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICK_STAIRS.setValue(StairBlock.FACING, Direction.SOUTH), 4, 1, 3, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICK_STAIRS.setValue(StairBlock.FACING, Direction.SOUTH).setValue(StairBlock.SHAPE, StairsShape.OUTER_LEFT), 3, 1, 3, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 4, 1, 4, bbox); + + this.generateBox(level, bbox, 3, 1, 2, 5, 3, 2, IRON_BARS.setValue(IronBarsBlock.EAST, Boolean.TRUE).setValue(IronBarsBlock.WEST, Boolean.TRUE), CAVE_AIR, false); + this.generateBox(level, bbox, 3, 1, 6, 5, 3, 6, IRON_BARS.setValue(IronBarsBlock.EAST, Boolean.TRUE).setValue(IronBarsBlock.WEST, Boolean.TRUE), CAVE_AIR, false); + this.generateBox(level, bbox, 2, 1, 3, 2, 3, 5, IRON_BARS.setValue(IronBarsBlock.NORTH, Boolean.TRUE).setValue(IronBarsBlock.SOUTH, Boolean.TRUE), CAVE_AIR, false); + this.generateBox(level, bbox, 6, 1, 3, 6, 3, 5, IRON_BARS.setValue(IronBarsBlock.NORTH, Boolean.TRUE).setValue(IronBarsBlock.SOUTH, Boolean.TRUE), CAVE_AIR, false); + this.generateBox(level, bbox, 6, 1, 2, 6, 3, 2, IRON_BARS.setValue(IronBarsBlock.NORTH, Boolean.TRUE).setValue(IronBarsBlock.WEST, Boolean.TRUE), CAVE_AIR, false); + this.generateBox(level, bbox, 6, 1, 6, 6, 3, 6, IRON_BARS.setValue(IronBarsBlock.SOUTH, Boolean.TRUE).setValue(IronBarsBlock.WEST, Boolean.TRUE), CAVE_AIR, false); + this.generateBox(level, bbox, 2, 1, 6, 2, 3, 6, IRON_BARS.setValue(IronBarsBlock.SOUTH, Boolean.TRUE).setValue(IronBarsBlock.EAST, Boolean.TRUE), CAVE_AIR, false); + this.generateBox(level, bbox, 2, 1, 2, 2, 3, 2, IRON_BARS.setValue(IronBarsBlock.NORTH, Boolean.TRUE).setValue(IronBarsBlock.EAST, Boolean.TRUE), CAVE_AIR, false); + this.generateBox(level, bbox, 2, 4, 2, 6, 4, 6, IRON_SLAB, CAVE_AIR, false); + + this.placeBlock(level, PURPLE_NETHER_BRICKS, 1, 1, 2, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 2, 1, 1, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 2, 1, 2, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 1, 5, 2, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 2, 5, 1, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 2, 5, 2, bbox); + this.placeBlock(level, Blocks.LAVA.defaultBlockState(), 1, 5, 1, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 7, 1, 2, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 6, 1, 1, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 6, 1, 2, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 7, 5, 2, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 6, 5, 1, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 6, 5, 2, bbox); + this.placeBlock(level, Blocks.LAVA.defaultBlockState(), 7, 5, 1, bbox); + this.placeBlock(level, Blocks.SOUL_LANTERN.defaultBlockState(), 1, 1, 7, bbox); + this.placeBlock(level, Blocks.SOUL_LANTERN.defaultBlockState(), 7, 1, 7, bbox); + + if (!this.hasPlacedSpawner) { + BlockPos blockpos = this.getWorldPos(4, 2, 4); + if (bbox.isInside(blockpos)) { + this.hasPlacedSpawner = true; + level.setBlock(blockpos, Blocks.SPAWNER.defaultBlockState(), 2); + BlockEntity blockentity = level.getBlockEntity(blockpos); + if (blockentity instanceof SpawnerBlockEntity) { + ((SpawnerBlockEntity)blockentity).getSpawner().setEntityId(ECEntities.WRAITH); + } + } + } + + this.generateSmallDoor(level, bbox, this.entryDoor, OFF_X, OFF_Y, OFF_Z); + } + + public static MonsterRoomPiece createPiece(StructurePieceAccessor pieces, RandomSource random, int x, int y, int z, Direction direction, int depth) { + BoundingBox boundingbox = BoundingBox.orientBox(x, y, z, -OFF_X, -OFF_Y, -OFF_Z, WIDTH, HEIGHT, LENGTH, direction); + return isOkBox(boundingbox) && pieces.findCollisionPiece(boundingbox) == null ? new MonsterRoomPiece(depth, random, boundingbox, direction) : null; + } + } + + public static final class LaboratoryPiece extends EntrenchmentPiece { + private static final int WIDTH = 11; + private static final int HEIGHT = 7; + private static final int LENGTH = 8; + + private static final int OFF_X = 2; + private static final int OFF_Y = 2; + private static final int OFF_Z = 0; + + private boolean spawnedPig; + private boolean spawnedPiglin; + private boolean spawnedZombifiedPiglin; + private boolean spawnedPiglinBrute; + + public LaboratoryPiece(int depth, RandomSource random, BoundingBox bbox, Direction direction) { + super(LABORATORY_TYPE, depth, bbox); + this.entryDoor = this.randomSmallDoor(random); + this.setOrientation(direction); + } + + public LaboratoryPiece(@SuppressWarnings("unused") StructurePieceSerializationContext context, CompoundTag nbt) { + super(LABORATORY_TYPE, nbt); + this.spawnedPig = nbt.getBoolean("SpawnedPig"); + this.spawnedPiglin = nbt.getBoolean("SpawnedPiglin"); + this.spawnedZombifiedPiglin = nbt.getBoolean("SpawnedZombifiedPiglin"); + this.spawnedPiglinBrute = nbt.getBoolean("SpawnedPiglinBrute"); + } + + @Override + protected void addAdditionalSaveData(@NotNull StructurePieceSerializationContext context, @NotNull CompoundTag nbt) { + super.addAdditionalSaveData(context, nbt); + nbt.putBoolean("SpawnedPig", this.spawnedPig); + nbt.putBoolean("SpawnedPiglin", this.spawnedPiglin); + nbt.putBoolean("SpawnedZombifiedPiglin", this.spawnedZombifiedPiglin); + nbt.putBoolean("SpawnedPiglinBrute", this.spawnedPiglinBrute); + } + + @Override + public void addChildren(@NotNull StructurePiece structurePiece, @NotNull StructurePieceAccessor pieces, @NotNull RandomSource random) { + } + + @Override + public void postProcess(@NotNull WorldGenLevel level, @NotNull StructureManager manager, @NotNull ChunkGenerator chunk, @NotNull RandomSource random, + @NotNull BoundingBox bbox, @NotNull ChunkPos chunkPos, @NotNull BlockPos blockPos) { + BlockState PURPLE_NETHER_BRICKS = ECBlocks.Decoration.PURPLE_NETHER_BRICKS.defaultBlockState(); + BlockState PURPLE_NETHER_BRICK_STAIRS = ECBlocks.TO_STAIRS.get(ECBlocks.Decoration.PURPLE_NETHER_BRICKS.getId()).defaultBlockState(); + BlockState IRON_BARS = Blocks.IRON_BARS.defaultBlockState(); + BlockState IRON_DOOR = Blocks.IRON_DOOR.defaultBlockState(); + + this.generateBox(level, bbox, 0, 0, 0, WIDTH - 1, HEIGHT - 1, LENGTH - 1, PURPLE_NETHER_BRICKS, CAVE_AIR, false); + + this.placeBlock(level, PURPLE_NETHER_BRICK_STAIRS.setValue(StairBlock.FACING, Direction.SOUTH), 2, 1, 1, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICK_STAIRS.setValue(StairBlock.FACING, Direction.SOUTH), 3, 1, 1, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICK_STAIRS.setValue(StairBlock.FACING, Direction.SOUTH), 4, 1, 1, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICK_STAIRS.setValue(StairBlock.FACING, Direction.EAST).setValue(StairBlock.SHAPE, StairsShape.OUTER_RIGHT), 1, 1, 1, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICK_STAIRS.setValue(StairBlock.FACING, Direction.WEST).setValue(StairBlock.SHAPE, StairsShape.OUTER_LEFT), 5, 1, 1, bbox); + + BlockState NORTH_PRISON_IRON_BARS = IRON_BARS.setValue(IronBarsBlock.WEST, Boolean.TRUE).setValue(IronBarsBlock.EAST, Boolean.TRUE); + BlockState EAST_PRISON_IRON_BARS = IRON_BARS.setValue(IronBarsBlock.NORTH, Boolean.TRUE).setValue(IronBarsBlock.SOUTH, Boolean.TRUE); + BlockState NORTH_PRISON_IRON_DOOR = IRON_DOOR.setValue(DoorBlock.FACING, Direction.NORTH).setValue(DoorBlock.HINGE, DoorHingeSide.RIGHT); + BlockState EAST_PRISON_IRON_DOOR = IRON_DOOR.setValue(DoorBlock.FACING, Direction.EAST); + this.placeBlock(level, NORTH_PRISON_IRON_BARS, 1, 1, 5, bbox); + this.placeBlock(level, NORTH_PRISON_IRON_BARS, 1, 2, 5, bbox); + this.placeBlock(level, NORTH_PRISON_IRON_DOOR, 2, 1, 5, bbox); + this.placeBlock(level, NORTH_PRISON_IRON_DOOR.setValue(DoorBlock.HALF, DoubleBlockHalf.UPPER), 2, 2, 5, bbox); + this.placeBlock(level, NORTH_PRISON_IRON_BARS, 3, 1, 5, bbox); + this.placeBlock(level, NORTH_PRISON_IRON_BARS, 3, 2, 5, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 4, 1, 5, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 4, 2, 5, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 4, 1, 6, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 4, 2, 6, bbox); + this.placeBlock(level, NORTH_PRISON_IRON_BARS, 5, 1, 5, bbox); + this.placeBlock(level, NORTH_PRISON_IRON_BARS, 5, 2, 5, bbox); + this.placeBlock(level, NORTH_PRISON_IRON_DOOR, 6, 1, 5, bbox); + this.placeBlock(level, NORTH_PRISON_IRON_DOOR.setValue(DoorBlock.HALF, DoubleBlockHalf.UPPER), 6, 2, 5, bbox); + this.placeBlock(level, NORTH_PRISON_IRON_BARS, 7, 1, 5, bbox); + this.placeBlock(level, NORTH_PRISON_IRON_BARS, 7, 2, 5, bbox); + this.generateBox(level, bbox, 1, 3, 5, 7, 3, 5, PURPLE_NETHER_BRICKS, CAVE_AIR, false); + this.generateBox(level, bbox, 8, 1, 5, 9, 3, 6, PURPLE_NETHER_BRICKS, CAVE_AIR, false); + this.placeBlock(level, EAST_PRISON_IRON_BARS, 8, 1, 4, bbox); + this.placeBlock(level, EAST_PRISON_IRON_BARS, 8, 2, 4, bbox); + this.placeBlock(level, EAST_PRISON_IRON_DOOR, 8, 1, 3, bbox); + this.placeBlock(level, EAST_PRISON_IRON_DOOR.setValue(DoorBlock.HALF, DoubleBlockHalf.UPPER), 8, 2, 3, bbox); + this.placeBlock(level, EAST_PRISON_IRON_BARS, 8, 1, 2, bbox); + this.placeBlock(level, EAST_PRISON_IRON_BARS, 8, 2, 2, bbox); + this.placeBlock(level, EAST_PRISON_IRON_BARS, 8, 1, 1, bbox); + this.placeBlock(level, EAST_PRISON_IRON_BARS, 8, 2, 1, bbox); + this.createChest(level, bbox, random, 9, 1, 1, new ResourceLocation(MODID, "chests/entrenchment/prison")); + this.generateBox(level, bbox, 8, 3, 1, 8, 3, 4, PURPLE_NETHER_BRICKS, CAVE_AIR, false); + + this.spawnMobs(level, bbox); + + BlockState SOUL_LANTERN_CEILING = Blocks.SOUL_LANTERN.defaultBlockState().setValue(LanternBlock.HANGING, Boolean.TRUE); + this.placeBlock(level, SOUL_LANTERN_CEILING, 2, 5, 3, bbox); + this.placeBlock(level, SOUL_LANTERN_CEILING, 6, 5, 3, bbox); + + this.generateSmallDoor(level, bbox, this.entryDoor, OFF_X, OFF_Y, OFF_Z); + } + + private void spawnMobs(WorldGenLevel level, BoundingBox bbox) { + if(!this.spawnedZombifiedPiglin) { + BlockPos blockpos = this.getWorldPos(2, 1, 6); + if(bbox.isInside(blockpos)) { + this.spawnedZombifiedPiglin = true; + ZombifiedPiglin mob = Objects.requireNonNull(EntityType.ZOMBIFIED_PIGLIN.create(level.getLevel())); + mob.setPersistenceRequired(); + mob.moveTo(blockpos.getX() + 0.5F, blockpos.getY(), blockpos.getZ() + 0.5F, 0.0F, 0.0F); + mob.finalizeSpawn(level, level.getCurrentDifficultyAt(blockpos), MobSpawnType.STRUCTURE, null, null); + level.addFreshEntityWithPassengers(mob); + } + } + if(!this.spawnedPiglin) { + BlockPos blockpos = this.getWorldPos(6, 1, 6); + if(bbox.isInside(blockpos)) { + this.spawnedPiglin = true; + Mob mob; + if(level.getRandom().nextInt(64) == 0) { + mob = Objects.requireNonNull(ECEntities.PIGLIN_CUTEY.create(level.getLevel())); + } else { + mob = Objects.requireNonNull(EntityType.PIGLIN.create(level.getLevel())); + } + mob.setPersistenceRequired(); + mob.moveTo(blockpos.getX() + 0.5F, blockpos.getY(), blockpos.getZ() + 0.5F, 0.0F, 0.0F); + mob.finalizeSpawn(level, level.getCurrentDifficultyAt(blockpos), MobSpawnType.STRUCTURE, null, null); + level.addFreshEntityWithPassengers(mob); + } + } + if(!this.spawnedPiglinBrute) { + BlockPos blockpos = this.getWorldPos(9, 1, 3); + if(bbox.isInside(blockpos)) { + this.spawnedPiglinBrute = true; + PiglinBrute mob = Objects.requireNonNull(EntityType.PIGLIN_BRUTE.create(level.getLevel())); + mob.setPersistenceRequired(); + mob.moveTo(blockpos.getX() + 0.5F, blockpos.getY(), blockpos.getZ() + 0.5F, 0.0F, 0.0F); + mob.finalizeSpawn(level, level.getCurrentDifficultyAt(blockpos), MobSpawnType.STRUCTURE, null, null); + level.addFreshEntityWithPassengers(mob); + } + } + if(!this.spawnedPig) { + BlockPos blockpos = this.getWorldPos(9, 1, 2); + if(bbox.isInside(blockpos)) { + this.spawnedPig = true; + Pig mob = Objects.requireNonNull(EntityType.PIG.create(level.getLevel())); + mob.setPersistenceRequired(); + mob.moveTo(blockpos.getX() + 0.5F, blockpos.getY(), blockpos.getZ() + 0.5F, 0.0F, 0.0F); + mob.finalizeSpawn(level, level.getCurrentDifficultyAt(blockpos), MobSpawnType.STRUCTURE, null, null); + level.addFreshEntityWithPassengers(mob); + } + } + } + + public static LaboratoryPiece createPiece(StructurePieceAccessor pieces, RandomSource random, int x, int y, int z, Direction direction, int depth) { + BoundingBox boundingbox = BoundingBox.orientBox(x, y, z, -OFF_X, -OFF_Y, -OFF_Z, WIDTH, HEIGHT, LENGTH, direction); + return isOkBox(boundingbox) && pieces.findCollisionPiece(boundingbox) == null ? new LaboratoryPiece(depth, random, boundingbox, direction) : null; + } + } + + public static final class BalconyPiece extends EntrenchmentPiece { + private static final int WIDTH = 5; + private static final int HEIGHT = 5; + private static final int LENGTH = 4; + + private static final int OFF_X = 1; + private static final int OFF_Y = 1; + private static final int OFF_Z = 0; + + public BalconyPiece(int depth, BoundingBox bbox, Direction direction) { + super(BALCONY_TYPE, depth, bbox); + this.entryDoor = DoorType.OPENING; + this.setOrientation(direction); + } + + public BalconyPiece(@SuppressWarnings("unused") StructurePieceSerializationContext context, CompoundTag nbt) { + super(BALCONY_TYPE, nbt); + } + + @Override + public void addChildren(@NotNull StructurePiece structurePiece, @NotNull StructurePieceAccessor pieces, @NotNull RandomSource random) { + } + + @Override + public void postProcess(@NotNull WorldGenLevel level, @NotNull StructureManager manager, @NotNull ChunkGenerator chunk, @NotNull RandomSource random, + @NotNull BoundingBox bbox, @NotNull ChunkPos chunkPos, @NotNull BlockPos blockPos) { + BlockState PURPLE_NETHER_BRICKS = ECBlocks.Decoration.PURPLE_NETHER_BRICKS.defaultBlockState(); + BlockState PURPURACEUS_FENCE = ECBlocks.TO_FENCE.get(ECBlocks.Plant.PURPURACEUS_PLANKS.getId()).defaultBlockState(); + + this.generateBox(level, bbox, 0, 0, 0, WIDTH - 1, 0, LENGTH - 1, PURPLE_NETHER_BRICKS, CAVE_AIR, false); + this.generateBox(level, bbox, 0, 1, 0, WIDTH - 1, HEIGHT - 2, LENGTH - 1, CAVE_AIR, CAVE_AIR, false); + this.generateBox(level, bbox, 0, HEIGHT - 1, 0, WIDTH - 1, HEIGHT - 1, LENGTH - 2, PURPLE_NETHER_BRICKS, CAVE_AIR, true); + this.generateBox(level, bbox, 0, HEIGHT - 1, LENGTH - 2, WIDTH - 1, HEIGHT - 1, LENGTH - 1, CAVE_AIR, CAVE_AIR, true); + + BlockState NORTH_SOUTH_FENCE = PURPURACEUS_FENCE.setValue(FenceBlock.NORTH, Boolean.TRUE).setValue(FenceBlock.SOUTH, Boolean.TRUE); + BlockState WEST_EAST_FENCE = PURPURACEUS_FENCE.setValue(FenceBlock.WEST, Boolean.TRUE).setValue(FenceBlock.EAST, Boolean.TRUE); + this.placeBlock(level, NORTH_SOUTH_FENCE, 0, 1, 0, bbox); + this.placeBlock(level, NORTH_SOUTH_FENCE, 0, 1, 1, bbox); + this.placeBlock(level, NORTH_SOUTH_FENCE, 0, 1, 2, bbox); + this.placeBlock(level, PURPURACEUS_FENCE.setValue(FenceBlock.EAST, Boolean.TRUE).setValue(FenceBlock.SOUTH, Boolean.TRUE), 0, 1, 3, bbox); + this.placeBlock(level, WEST_EAST_FENCE, 1, 1, 3, bbox); + this.placeBlock(level, WEST_EAST_FENCE, 2, 1, 3, bbox); + this.placeBlock(level, WEST_EAST_FENCE, 3, 1, 3, bbox); + this.placeBlock(level, PURPURACEUS_FENCE.setValue(FenceBlock.WEST, Boolean.TRUE).setValue(FenceBlock.SOUTH, Boolean.TRUE), 4, 1, 3, bbox); + this.placeBlock(level, NORTH_SOUTH_FENCE, 4, 1, 2, bbox); + this.placeBlock(level, NORTH_SOUTH_FENCE, 4, 1, 1, bbox); + this.placeBlock(level, NORTH_SOUTH_FENCE, 4, 1, 0, bbox); + + this.generateSmallDoor(level, bbox, this.entryDoor, OFF_X, OFF_Y, OFF_Z); + } + + public static BalconyPiece createPiece(StructurePieceAccessor pieces, @SuppressWarnings("unused") RandomSource random, int x, int y, int z, Direction direction, int depth) { + BoundingBox boundingbox = BoundingBox.orientBox(x, y, z, -OFF_X, -OFF_Y, -OFF_Z, WIDTH, HEIGHT, LENGTH, direction); + return isOkBox(boundingbox) && pieces.findCollisionPiece(boundingbox) == null ? new BalconyPiece(depth, boundingbox, direction) : null; + } + } + + public static final class PortalRoomPiece extends EntrenchmentPiece { + private static final int WIDTH = 9; + private static final int HEIGHT = 8; + private static final int LENGTH = 8; + + private static final int OFF_X = 4; + private static final int OFF_Y = 2; + private static final int OFF_Z = 0; + + public PortalRoomPiece(int depth, RandomSource random, BoundingBox bbox, Direction direction) { + super(PORTAL_ROOM_TYPE, depth, bbox); + this.entryDoor = this.randomSmallDoor(random); + this.setOrientation(direction); + } + + public PortalRoomPiece(@SuppressWarnings("unused") StructurePieceSerializationContext context, CompoundTag nbt) { + super(PORTAL_ROOM_TYPE, nbt); + } + + @Override + public void addChildren(@NotNull StructurePiece structurePiece, @NotNull StructurePieceAccessor pieces, @NotNull RandomSource random) { + } + + @Override + public void postProcess(@NotNull WorldGenLevel level, @NotNull StructureManager manager, @NotNull ChunkGenerator chunk, @NotNull RandomSource random, + @NotNull BoundingBox bbox, @NotNull ChunkPos chunkPos, @NotNull BlockPos blockPos) { + BlockState PURPLE_NETHER_BRICKS = ECBlocks.Decoration.PURPLE_NETHER_BRICKS.defaultBlockState(); + BlockState LAVA = Blocks.LAVA.defaultBlockState(); + BlockState NETHERRACK = Blocks.NETHERRACK.defaultBlockState(); + BlockState GOLD_BLOCK = Blocks.GOLD_BLOCK.defaultBlockState(); + BlockState OBSIDIAN = Blocks.OBSIDIAN.defaultBlockState(); + BlockState CRYING_OBSIDIAN = Blocks.CRYING_OBSIDIAN.defaultBlockState(); + this.generateBox(level, bbox, 0, 0, 0, WIDTH - 1, HEIGHT - 1, LENGTH - 1, PURPLE_NETHER_BRICKS, CAVE_AIR, false); + + for(int i = 1; i < WIDTH - 1; ++i) { + for(int j = 1; j < LENGTH - 1; ++j) { + if(random.nextInt(5) <= 2) { + switch (random.nextInt(8)) { + case 0, 1, 2, 3, 4, 5 -> this.placeBlock(level, LAVA, i, 1, j, bbox); + case 6 -> this.placeBlock(level, GOLD_BLOCK, i, 1, j, bbox); + } + } else if(random.nextInt(7) == 0) { + this.placeBlock(level, OBSIDIAN, i, 1, j, bbox); + } else { + this.placeBlock(level, NETHERRACK, i, 1, j, bbox); + } + } + } + + for(int i = 2; i <= 6; ++i) { + for(int j = 2; j <= 6; ++j) { + if(i == 2 || i == 6 || j == 2 || j == 6) { + int a = random.nextInt(16); + if(a < 10) { + this.placeBlock(level, OBSIDIAN, i, j, 4, bbox); + } else if(a < 11) { + this.placeBlock(level, CRYING_OBSIDIAN, i, j, 4, bbox); + } + } + } + } + + this.generateSmallDoor(level, bbox, this.entryDoor, OFF_X, OFF_Y, OFF_Z); + } + + public static PortalRoomPiece createPiece(StructurePieceAccessor pieces, RandomSource random, int x, int y, int z, Direction direction, int depth) { + BoundingBox boundingbox = BoundingBox.orientBox(x, y, z, -OFF_X, -OFF_Y, -OFF_Z, WIDTH, HEIGHT, LENGTH, direction); + return isOkBox(boundingbox) && pieces.findCollisionPiece(boundingbox) == null ? new PortalRoomPiece(depth, random, boundingbox, direction) : null; + } + } + + public static final class WallPiece extends EntrenchmentPiece { + private static final int WIDTH = 5; + private static final int HEIGHT = 5; + private static final int LENGTH = 1; + + private static final int OFF_X = 1; + private static final int OFF_Y = 1; + private static final int OFF_Z = 0; + + public WallPiece(int depth, BoundingBox bbox, Direction direction) { + super(WALL_TYPE, depth, bbox); + this.entryDoor = DoorType.BLOCKED; + this.setOrientation(direction); + } + + public WallPiece(@SuppressWarnings("unused") StructurePieceSerializationContext context, CompoundTag nbt) { + super(WALL_TYPE, nbt); + } + + @Override + public void addChildren(@NotNull StructurePiece structurePiece, @NotNull StructurePieceAccessor pieces, @NotNull RandomSource random) { + } + + @Override + public void postProcess(@NotNull WorldGenLevel level, @NotNull StructureManager manager, @NotNull ChunkGenerator chunk, @NotNull RandomSource random, + @NotNull BoundingBox bbox, @NotNull ChunkPos chunkPos, @NotNull BlockPos blockPos) { + this.generateSmallDoor(level, bbox, this.entryDoor, OFF_X, OFF_Y, OFF_Z); + } + + public static WallPiece createPiece(StructurePieceAccessor pieces, @SuppressWarnings("unused") RandomSource random, int x, int y, int z, Direction direction, int depth) { + BoundingBox boundingbox = BoundingBox.orientBox(x, y, z, -OFF_X, -OFF_Y, -OFF_Z, WIDTH, HEIGHT, LENGTH, direction); + return isOkBox(boundingbox) && pieces.findCollisionPiece(boundingbox) == null ? new WallPiece(depth, boundingbox, direction) : null; + } + } + + public static final class KitchenPiece extends EntrenchmentPiece { + private static final int WIDTH = 9; + private static final int HEIGHT = 7; + private static final int LENGTH = 8; + + private static final int OFF_X = 2; + private static final int OFF_Y = 1; + private static final int OFF_Z = 0; + + public KitchenPiece(int depth, RandomSource random, BoundingBox bbox, Direction direction) { + super(KITCHEN_TYPE, depth, bbox); + this.entryDoor = this.randomSmallDoor(random); + this.setOrientation(direction); + } + + public KitchenPiece(@SuppressWarnings("unused") StructurePieceSerializationContext context, CompoundTag nbt) { + super(KITCHEN_TYPE, nbt); + } + + private static final List kitchenAvailablePieces = Lists.newArrayList( + new PieceWeight(LongHallwayPiece.class, 8, 0), + new PieceWeight(ShortHallwayPiece.class, 12, 0), + new PieceWeight(LeftTurnPiece.class, 5, 0), + new PieceWeight(RightTurnPiece.class, 5, 0), + new PieceWeight(LaboratoryPiece.class, 30, 2), + new PieceWeight(BalconyPiece.class, 40, 0) + ); + + @Override + protected List AvailablePieces() { + return kitchenAvailablePieces; + } + + @Override + public void addChildren(@NotNull StructurePiece structurePiece, @NotNull StructurePieceAccessor pieces, @NotNull RandomSource random) { + this.generateChildForward((StartPiece) structurePiece, pieces, random, 1, 1); + } + + @Override + public void postProcess(@NotNull WorldGenLevel level, @NotNull StructureManager manager, @NotNull ChunkGenerator chunk, @NotNull RandomSource random, + @NotNull BoundingBox bbox, @NotNull ChunkPos chunkPos, @NotNull BlockPos blockPos) { + BlockState PURPLE_NETHER_BRICKS = ECBlocks.Decoration.PURPLE_NETHER_BRICKS.defaultBlockState(); + BlockState FIRE = Blocks.FIRE.defaultBlockState(); + BlockState CHAIN = Blocks.CHAIN.defaultBlockState().setValue(ChainBlock.AXIS, Direction.Axis.Z); + BlockState NETHERRACK = Blocks.NETHERRACK.defaultBlockState(); + BlockState PURPURACEUS_TRAPDOOR = ECBlocks.TO_TRAPDOOR.get(ECBlocks.Plant.PURPURACEUS_PLANKS.getId()).defaultBlockState().setValue(TrapDoorBlock.FACING, Direction.EAST).setValue(TrapDoorBlock.OPEN, Boolean.TRUE); + BlockState HAY_BLOCK = Blocks.HAY_BLOCK.defaultBlockState(); + + this.generateBox(level, bbox, 0, 0, 0, WIDTH - 1, HEIGHT - 1, LENGTH - 1, PURPLE_NETHER_BRICKS, CAVE_AIR, false); + + this.placeBlock(level, PURPLE_NETHER_BRICKS, 1, 1, 2, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 1, 2, 2, bbox); + this.placeBlock(level, NETHERRACK, 1, 0, 3, bbox); + this.placeBlock(level, NETHERRACK, 1, 0, 4, bbox); + this.placeBlock(level, NETHERRACK, 1, 0, 5, bbox); + this.placeBlock(level, FIRE, 1, 1, 3, bbox); + this.placeBlock(level, FIRE, 1, 1, 4, bbox); + this.placeBlock(level, FIRE, 1, 1, 5, bbox); + this.placeBlock(level, CHAIN, 1, 2, 3, bbox); + this.placeBlock(level, CHAIN, 1, 2, 4, bbox); + this.placeBlock(level, CHAIN, 1, 2, 5, bbox); + this.placeBlock(level, PURPURACEUS_TRAPDOOR, 2, 1, 3, bbox); + this.placeBlock(level, PURPURACEUS_TRAPDOOR, 2, 1, 4, bbox); + this.placeBlock(level, PURPURACEUS_TRAPDOOR, 2, 1, 5, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 1, 1, 6, bbox); + this.placeBlock(level, PURPLE_NETHER_BRICKS, 1, 2, 6, bbox); + + this.placeBlock(level, HAY_BLOCK, 7, 1, 2, bbox); + this.placeBlock(level, HAY_BLOCK, 7, 1, 5, bbox); + this.placeBlock(level, HAY_BLOCK, 7, 1, 6, bbox); + if(random.nextBoolean()) this.placeBlock(level, HAY_BLOCK, 7, 1, 1, bbox); + if(random.nextBoolean()) this.placeBlock(level, HAY_BLOCK, 7, 1, 3, bbox); + if(random.nextBoolean()) this.placeBlock(level, HAY_BLOCK, 7, 1, 4, bbox); + if(random.nextBoolean()) this.placeBlock(level, HAY_BLOCK, 7, 1, 5, bbox); + if(random.nextBoolean()) this.placeBlock(level, HAY_BLOCK, 7, 2, 2, bbox); + if(random.nextBoolean()) this.placeBlock(level, HAY_BLOCK, 7, 2, 5, bbox); + if(random.nextBoolean()) this.placeBlock(level, HAY_BLOCK, 7, 2, 6, bbox); + if(random.nextBoolean()) this.placeBlock(level, HAY_BLOCK, 6, 1, 2, bbox); + if(random.nextBoolean()) this.placeBlock(level, HAY_BLOCK, 6, 1, 5, bbox); + if(random.nextBoolean()) this.placeBlock(level, HAY_BLOCK, 6, 1, 6, bbox); + + this.generateBox(level, bbox, 1, 1, LENGTH - 1, 3, 3, LENGTH - 1, CAVE_AIR, CAVE_AIR, false); + + this.generateSmallDoor(level, bbox, this.entryDoor, OFF_X, OFF_Y, OFF_Z); + } + + public static KitchenPiece createPiece(StructurePieceAccessor pieces, RandomSource random, int x, int y, int z, Direction direction, int depth) { + BoundingBox boundingbox = BoundingBox.orientBox(x, y, z, -OFF_X, -OFF_Y, -OFF_Z, WIDTH, HEIGHT, LENGTH, direction); + return isOkBox(boundingbox) && pieces.findCollisionPiece(boundingbox) == null ? new KitchenPiece(depth, random, boundingbox, direction) : null; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/shelter/ShelterFeature.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/shelter/ShelterFeature.java new file mode 100644 index 00000000..54cce4bb --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/shelter/ShelterFeature.java @@ -0,0 +1,37 @@ +package com.hexagram2021.emeraldcraft.common.world.structures.shelter; + +import com.hexagram2021.emeraldcraft.common.register.ECStructureTypes; +import com.mojang.serialization.Codec; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.block.Rotation; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.structure.Structure; +import net.minecraft.world.level.levelgen.structure.StructureType; +import net.minecraft.world.level.levelgen.structure.pieces.StructurePiecesBuilder; +import org.jetbrains.annotations.NotNull; + +import java.util.Optional; + +public class ShelterFeature extends Structure { + public static final Codec CODEC = simpleCodec(ShelterFeature::new); + + public ShelterFeature(Structure.StructureSettings settings) { + super(settings); + } + + @Override @NotNull + public Optional findGenerationPoint(@NotNull Structure.GenerationContext context) { + return onTopOfChunkCenter(context, Heightmap.Types.OCEAN_FLOOR_WG, (builder) -> this.generatePieces(builder, context)); + } + + private void generatePieces(StructurePiecesBuilder builder, Structure.GenerationContext context) { + BlockPos blockpos = new BlockPos(context.chunkPos().getMinBlockX(), 90, context.chunkPos().getMinBlockZ()); + Rotation rotation = Rotation.getRandom(context.random()); + ShelterPieces.addPieces(context.structureTemplateManager(), blockpos, rotation, builder); + } + + @Override @NotNull + public StructureType type() { + return ECStructureTypes.SHELTER; + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/shelter/ShelterPieces.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/shelter/ShelterPieces.java new file mode 100644 index 00000000..d273d54c --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/structures/shelter/ShelterPieces.java @@ -0,0 +1,56 @@ +package com.hexagram2021.emeraldcraft.common.world.structures.shelter; + +import com.hexagram2021.emeraldcraft.common.register.ECStructurePieceTypes; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.block.Mirror; +import net.minecraft.world.level.block.Rotation; +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.pieces.StructurePieceSerializationContext; +import net.minecraft.world.level.levelgen.structure.templatesystem.BlockIgnoreProcessor; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructurePlaceSettings; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager; +import org.jetbrains.annotations.NotNull; + +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(StructureTemplateManager structureManager, BlockPos pos, Rotation rotation, StructurePieceAccessor pieces) { + pieces.addPiece(new ShelterPieces.ShelterPiece(structureManager, SHELTER, pos, rotation)); + } + + public static class ShelterPiece extends TemplateStructurePiece { + public ShelterPiece(StructureTemplateManager structureManager, ResourceLocation location, BlockPos pos, Rotation rotation) { + super(ECStructurePieceTypes.SHELTER_TYPE, 0, structureManager, location, location.toString(), makeSettings(rotation), pos); + } + + public ShelterPiece(StructurePieceSerializationContext context, CompoundTag tag) { + super(ECStructurePieceTypes.SHELTER_TYPE, tag, context.structureTemplateManager(), (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(@NotNull StructurePieceSerializationContext context, @NotNull CompoundTag tag) { + super.addAdditionalSaveData(context, tag); + tag.putString("Rot", this.placeSettings.getRotation().name()); + } + + @Override + protected void handleDataMarker(@NotNull String function, @NotNull BlockPos pos, @NotNull ServerLevelAccessor level, @NotNull RandomSource random, @NotNull BoundingBox sbb) { } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/ECSurfaceRules.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/ECSurfaceRules.java new file mode 100644 index 00000000..7fc60658 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/surface/ECSurfaceRules.java @@ -0,0 +1,882 @@ +package com.hexagram2021.emeraldcraft.common.world.surface; + +import com.google.common.collect.ImmutableList; +import com.hexagram2021.emeraldcraft.common.register.ECBiomeKeys; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import net.minecraft.world.level.biome.Biomes; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.levelgen.Noises; +import net.minecraft.world.level.levelgen.SurfaceRules; +import net.minecraft.world.level.levelgen.VerticalAnchor; + +public class ECSurfaceRules { + private static final SurfaceRules.RuleSource AIR = makeStateRule(Blocks.AIR); + private static final SurfaceRules.RuleSource BASALT = makeStateRule(Blocks.BASALT); + private static final SurfaceRules.RuleSource BEDROCK = makeStateRule(Blocks.BEDROCK); + private static final SurfaceRules.RuleSource BLACKSTONE = makeStateRule(Blocks.BLACKSTONE); + private static final SurfaceRules.RuleSource CALCITE = makeStateRule(Blocks.CALCITE); + private static final SurfaceRules.RuleSource COARSE_DIRT = makeStateRule(Blocks.COARSE_DIRT); + private static final SurfaceRules.RuleSource CRIMSON_NYLIUM = makeStateRule(Blocks.CRIMSON_NYLIUM); + private static final SurfaceRules.RuleSource CRYING_OBSIDIAN = makeStateRule(Blocks.CRYING_OBSIDIAN); + private static final SurfaceRules.RuleSource DEEPSLATE = makeStateRule(Blocks.DEEPSLATE); + private static final SurfaceRules.RuleSource DIRT = makeStateRule(Blocks.DIRT); + private static final SurfaceRules.RuleSource DRIPSTONE_BLOCK = makeStateRule(Blocks.DRIPSTONE_BLOCK); + private static final SurfaceRules.RuleSource GRASS_BLOCK = makeStateRule(Blocks.GRASS_BLOCK); + private static final SurfaceRules.RuleSource GRAVEL = makeStateRule(Blocks.GRAVEL); + private static final SurfaceRules.RuleSource ICE = makeStateRule(Blocks.ICE); + private static final SurfaceRules.RuleSource LAVA = makeStateRule(Blocks.LAVA); + private static final SurfaceRules.RuleSource MAGMA_BLOCK = makeStateRule(Blocks.MAGMA_BLOCK); + private static final SurfaceRules.RuleSource MOSS_BLOCK = makeStateRule(Blocks.MOSS_BLOCK); + private static final SurfaceRules.RuleSource MYCELIUM = makeStateRule(Blocks.MYCELIUM); + private static final SurfaceRules.RuleSource NETHER_WART_BLOCK = makeStateRule(Blocks.NETHER_WART_BLOCK); + private static final SurfaceRules.RuleSource NETHERRACK = makeStateRule(Blocks.NETHERRACK); + private static final SurfaceRules.RuleSource ORANGE_TERRACOTTA = makeStateRule(Blocks.ORANGE_TERRACOTTA); + private static final SurfaceRules.RuleSource PACKED_ICE = makeStateRule(Blocks.PACKED_ICE); + private static final SurfaceRules.RuleSource PODZOL = makeStateRule(Blocks.PODZOL); + private static final SurfaceRules.RuleSource POWDER_SNOW = makeStateRule(Blocks.POWDER_SNOW); + private static final SurfaceRules.RuleSource RED_SAND = makeStateRule(Blocks.RED_SAND); + private static final SurfaceRules.RuleSource RED_SANDSTONE = makeStateRule(Blocks.RED_SANDSTONE); + private static final SurfaceRules.RuleSource SAND = makeStateRule(Blocks.SAND); + private static final SurfaceRules.RuleSource SANDSTONE = makeStateRule(Blocks.SANDSTONE); + private static final SurfaceRules.RuleSource SNOW_BLOCK = makeStateRule(Blocks.SNOW_BLOCK); + private static final SurfaceRules.RuleSource SOUL_SAND = makeStateRule(Blocks.SOUL_SAND); + private static final SurfaceRules.RuleSource SOUL_SOIL = makeStateRule(Blocks.SOUL_SOIL); + private static final SurfaceRules.RuleSource STONE = makeStateRule(Blocks.STONE); + private static final SurfaceRules.RuleSource TERRACOTTA = makeStateRule(Blocks.TERRACOTTA); + private static final SurfaceRules.RuleSource WARPED_NYLIUM = makeStateRule(Blocks.WARPED_NYLIUM); + private static final SurfaceRules.RuleSource WARPED_WART_BLOCK = makeStateRule(Blocks.WARPED_WART_BLOCK); + private static final SurfaceRules.RuleSource WATER = makeStateRule(Blocks.WATER); + private static final SurfaceRules.RuleSource WHITE_TERRACOTTA = makeStateRule(Blocks.WHITE_TERRACOTTA); + + private static final SurfaceRules.RuleSource CRIMSON_STONE = makeStateRule(ECBlocks.Decoration.CRIMSON_STONE.get()); + private static final SurfaceRules.RuleSource WARPED_STONE = makeStateRule(ECBlocks.Decoration.WARPED_STONE.get()); + private static final SurfaceRules.RuleSource DARK_SAND = makeStateRule(ECBlocks.Decoration.DARK_SAND.get()); + private static final SurfaceRules.RuleSource AZURE_SAND = makeStateRule(ECBlocks.Decoration.AZURE_SAND.get()); + private static final SurfaceRules.RuleSource JADEITE_SAND = makeStateRule(ECBlocks.Decoration.JADEITE_SAND.get()); + private static final SurfaceRules.RuleSource EMERY_SAND = makeStateRule(ECBlocks.Decoration.EMERY_SAND.get()); + private static final SurfaceRules.RuleSource QUARTZ_SAND = makeStateRule(ECBlocks.Decoration.QUARTZ_SAND.get()); + private static final SurfaceRules.RuleSource DARK_SANDSTONE = makeStateRule(ECBlocks.Decoration.DARK_SANDSTONE.get()); + private static final SurfaceRules.RuleSource AZURE_SANDSTONE = makeStateRule(ECBlocks.Decoration.AZURE_SANDSTONE.get()); + private static final SurfaceRules.RuleSource JADEITE_SANDSTONE = makeStateRule(ECBlocks.Decoration.JADEITE_SANDSTONE.get()); + private static final SurfaceRules.RuleSource EMERY_SANDSTONE = makeStateRule(ECBlocks.Decoration.EMERY_SANDSTONE.get()); + private static final SurfaceRules.RuleSource QUARTZ_SANDSTONE = makeStateRule(ECBlocks.Decoration.QUARTZ_SANDSTONE.get()); + private static final SurfaceRules.RuleSource VITRIFIED_SAND = makeStateRule(ECBlocks.Decoration.VITRIFIED_SAND.get()); + private static final SurfaceRules.RuleSource PURPURACEUS_NYLIUM = makeStateRule(ECBlocks.Plant.PURPURACEUS_NYLIUM.get()); + private static final SurfaceRules.RuleSource PURPURACEUS_WART_BLOCK = makeStateRule(ECBlocks.Plant.PURPURACEUS_WART_BLOCK.get()); + + private static SurfaceRules.RuleSource makeStateRule(Block block) { + return SurfaceRules.state(block.defaultBlockState()); + } + + public static SurfaceRules.RuleSource overworld() { + return overworldLike(true, false, true); + } + + @SuppressWarnings("unused") + public static SurfaceRules.RuleSource vanillaOverworldLike(boolean checkAbovePreliminarySurface, boolean bedrockRoof, boolean bedrockFloor) { + SurfaceRules.ConditionSource above97_2 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(97), 2); + SurfaceRules.ConditionSource above256 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(256), 0); + SurfaceRules.ConditionSource above63_1 = SurfaceRules.yStartCheck(VerticalAnchor.absolute(63), -1); + SurfaceRules.ConditionSource above74_1 = SurfaceRules.yStartCheck(VerticalAnchor.absolute(74), 1); + SurfaceRules.ConditionSource above62 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(62), 0); + SurfaceRules.ConditionSource above63 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(63), 0); + SurfaceRules.ConditionSource isAtOrAboveWaterLevel = SurfaceRules.waterBlockCheck(-1, 0); + SurfaceRules.ConditionSource isAboveWaterLevel = SurfaceRules.waterBlockCheck(0, 0); + SurfaceRules.ConditionSource isUnderWaterLevel = SurfaceRules.waterStartCheck(-6, -1); + SurfaceRules.ConditionSource isHole = SurfaceRules.hole(); + SurfaceRules.ConditionSource isFrozenOcean = SurfaceRules.isBiome(Biomes.FROZEN_OCEAN, Biomes.DEEP_FROZEN_OCEAN); + SurfaceRules.ConditionSource isSteep = SurfaceRules.steep(); + SurfaceRules.ConditionSource isSandSurfaceBiomes = SurfaceRules.isBiome(Biomes.WARM_OCEAN, Biomes.BEACH, Biomes.SNOWY_BEACH); + SurfaceRules.ConditionSource isDesert = SurfaceRules.isBiome(Biomes.DESERT); + + SurfaceRules.ConditionSource isBandNeg = SurfaceRules.noiseCondition(Noises.SURFACE, -0.909D, -0.5454D); + SurfaceRules.ConditionSource isBandZero = SurfaceRules.noiseCondition(Noises.SURFACE, -0.1818D, 0.1818D); + SurfaceRules.ConditionSource isBandPos = SurfaceRules.noiseCondition(Noises.SURFACE, 0.5454D, 0.909D); + + SurfaceRules.RuleSource grassSurface = SurfaceRules.sequence(SurfaceRules.ifTrue(isAboveWaterLevel, GRASS_BLOCK), DIRT); + SurfaceRules.RuleSource sandstoneLinedSand = SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, SANDSTONE), SAND); + SurfaceRules.RuleSource stoneLinedGravel = SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, STONE), GRAVEL); + SurfaceRules.RuleSource hillAndSeaAndDesertSource = SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.STONY_PEAKS), + SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.CALCITE, -0.0125D, 0.0125D), CALCITE), STONE) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.STONY_SHORE), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.GRAVEL, -0.05D, 0.05D), stoneLinedGravel), + STONE + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_HILLS), + SurfaceRules.ifTrue(surfaceNoiseAbove(1.0D), STONE) + ), + SurfaceRules.ifTrue(isSandSurfaceBiomes, sandstoneLinedSand), + SurfaceRules.ifTrue(isDesert, sandstoneLinedSand), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.DRIPSTONE_CAVES), STONE) + ); + SurfaceRules.RuleSource smallPowderSnow = SurfaceRules.ifTrue( + SurfaceRules.noiseCondition(Noises.POWDER_SNOW, 0.45D, 0.58D), + SurfaceRules.ifTrue(isAboveWaterLevel, POWDER_SNOW) + ); + SurfaceRules.RuleSource largePowderSnow = SurfaceRules.ifTrue( + SurfaceRules.noiseCondition(Noises.POWDER_SNOW, 0.35D, 0.6D), + SurfaceRules.ifTrue(isAboveWaterLevel, POWDER_SNOW) + ); + SurfaceRules.RuleSource underSurfaceSource = SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.FROZEN_PEAKS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, PACKED_ICE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.PACKED_ICE, -0.5D, 0.2D), PACKED_ICE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.ICE, -0.0625D, 0.025D), ICE), + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.SNOWY_SLOPES), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, STONE), + smallPowderSnow, + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.JAGGED_PEAKS), STONE), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.GROVE), SurfaceRules.sequence(smallPowderSnow, DIRT)), + hillAndSeaAndDesertSource, + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_SAVANNA), + SurfaceRules.ifTrue(surfaceNoiseAbove(1.75D), STONE) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_GRAVELLY_HILLS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(surfaceNoiseAbove(2.0D),stoneLinedGravel), + SurfaceRules.ifTrue(surfaceNoiseAbove(1.0D), STONE), + SurfaceRules.ifTrue(surfaceNoiseAbove(-1.0D), DIRT), + stoneLinedGravel + ) + ), + DIRT + ); + SurfaceRules.RuleSource surfaceSource = SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.FROZEN_PEAKS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, PACKED_ICE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.PACKED_ICE, 0.0D, 0.2D), PACKED_ICE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.ICE, 0.0D, 0.025D), ICE), + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.SNOWY_SLOPES), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, STONE), + largePowderSnow, + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.JAGGED_PEAKS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, STONE), + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.GROVE), + SurfaceRules.sequence( + largePowderSnow, + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + hillAndSeaAndDesertSource, + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_SAVANNA), + SurfaceRules.sequence( + SurfaceRules.ifTrue(surfaceNoiseAbove(1.75D), STONE), + SurfaceRules.ifTrue(surfaceNoiseAbove(-0.5D), COARSE_DIRT) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_GRAVELLY_HILLS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(surfaceNoiseAbove(2.0D), stoneLinedGravel), + SurfaceRules.ifTrue(surfaceNoiseAbove(1.0D), STONE), + SurfaceRules.ifTrue(surfaceNoiseAbove(-1.0D), grassSurface), + stoneLinedGravel + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.OLD_GROWTH_PINE_TAIGA, Biomes.OLD_GROWTH_SPRUCE_TAIGA), + SurfaceRules.sequence( + SurfaceRules.ifTrue(surfaceNoiseAbove(1.75D), COARSE_DIRT), + SurfaceRules.ifTrue(surfaceNoiseAbove(-0.95D), PODZOL) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.ICE_SPIKES), + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.MUSHROOM_FIELDS), MYCELIUM), + grassSurface + ); + + SurfaceRules.RuleSource ruleSource = SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WOODED_BADLANDS), + SurfaceRules.ifTrue( + above97_2, + SurfaceRules.sequence( + SurfaceRules.ifTrue(isBandNeg, COARSE_DIRT), + SurfaceRules.ifTrue(isBandZero, COARSE_DIRT), + SurfaceRules.ifTrue(isBandPos, COARSE_DIRT), + grassSurface + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.SWAMP), + SurfaceRules.ifTrue( + above62, + SurfaceRules.ifTrue( + SurfaceRules.not(above63), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SWAMP, 0.0D), WATER) + ) + ) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.BADLANDS, Biomes.ERODED_BADLANDS, Biomes.WOODED_BADLANDS), + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.sequence( + SurfaceRules.ifTrue(above256, ORANGE_TERRACOTTA), + SurfaceRules.ifTrue( + above74_1, + SurfaceRules.sequence( + SurfaceRules.ifTrue(isBandNeg, TERRACOTTA), + SurfaceRules.ifTrue(isBandZero, TERRACOTTA), + SurfaceRules.ifTrue(isBandPos, TERRACOTTA), + SurfaceRules.bandlands() + ) + ), + SurfaceRules.ifTrue( + isAtOrAboveWaterLevel, + SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, RED_SANDSTONE), RED_SAND) + ), + SurfaceRules.ifTrue(SurfaceRules.not(isHole), ORANGE_TERRACOTTA), + SurfaceRules.ifTrue(isUnderWaterLevel, WHITE_TERRACOTTA), + stoneLinedGravel + ) + ), + SurfaceRules.ifTrue( + above63_1, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + above63, + SurfaceRules.ifTrue(SurfaceRules.not(above74_1), ORANGE_TERRACOTTA) + ), + SurfaceRules.bandlands() + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.UNDER_FLOOR, + SurfaceRules.ifTrue(isUnderWaterLevel, WHITE_TERRACOTTA) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.ifTrue( + isAtOrAboveWaterLevel, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + isFrozenOcean, + SurfaceRules.ifTrue( + isHole, + SurfaceRules.sequence( + SurfaceRules.ifTrue(isAboveWaterLevel, AIR), + SurfaceRules.ifTrue(SurfaceRules.temperature(), ICE), + WATER + ) + ) + ), + surfaceSource + ) + ) + ), + SurfaceRules.ifTrue( + isUnderWaterLevel, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.ifTrue( + isFrozenOcean, + SurfaceRules.ifTrue(isHole, WATER) + ) + ), + SurfaceRules.ifTrue(SurfaceRules.UNDER_FLOOR, underSurfaceSource), + SurfaceRules.ifTrue(isSandSurfaceBiomes, SurfaceRules.ifTrue(SurfaceRules.DEEP_UNDER_FLOOR, SANDSTONE)), + SurfaceRules.ifTrue(isDesert, SurfaceRules.ifTrue(SurfaceRules.VERY_DEEP_UNDER_FLOOR, SANDSTONE)) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.FROZEN_PEAKS, Biomes.JAGGED_PEAKS), STONE), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WARM_OCEAN, Biomes.LUKEWARM_OCEAN, Biomes.DEEP_LUKEWARM_OCEAN), + sandstoneLinedSand + ), + stoneLinedGravel + ) + ) + ); + + ImmutableList.Builder builder = ImmutableList.builder(); + if (bedrockRoof) { + builder.add(SurfaceRules.ifTrue(SurfaceRules.not(SurfaceRules.verticalGradient("bedrock_roof", VerticalAnchor.belowTop(5), VerticalAnchor.top())), BEDROCK)); + } + + if (bedrockFloor) { + builder.add(SurfaceRules.ifTrue(SurfaceRules.verticalGradient("bedrock_floor", VerticalAnchor.bottom(), VerticalAnchor.aboveBottom(5)), BEDROCK)); + } + + SurfaceRules.RuleSource surfacerules$rulesource9 = SurfaceRules.ifTrue(SurfaceRules.abovePreliminarySurface(), ruleSource); + builder.add(checkAbovePreliminarySurface ? surfacerules$rulesource9 : ruleSource); + builder.add(SurfaceRules.ifTrue(SurfaceRules.verticalGradient("deepslate", VerticalAnchor.absolute(0), VerticalAnchor.absolute(8)), DEEPSLATE)); + return SurfaceRules.sequence(builder.build().toArray(SurfaceRules.RuleSource[]::new)); + } + + public static SurfaceRules.RuleSource overworldLike(boolean checkAbovePreliminarySurface, boolean bedrockRoof, boolean bedrockFloor) { + SurfaceRules.ConditionSource above97_2 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(97), 2); + SurfaceRules.ConditionSource above256 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(256), 0); + SurfaceRules.ConditionSource above63_1 = SurfaceRules.yStartCheck(VerticalAnchor.absolute(63), -1); + SurfaceRules.ConditionSource above74_1 = SurfaceRules.yStartCheck(VerticalAnchor.absolute(74), 1); + SurfaceRules.ConditionSource above50 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(50), 0); + SurfaceRules.ConditionSource above62 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(62), 0); + SurfaceRules.ConditionSource above63 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(63), 0); + SurfaceRules.ConditionSource above65 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(65), 0); + SurfaceRules.ConditionSource isAtOrAboveWaterLevel = SurfaceRules.waterBlockCheck(-1, 0); + SurfaceRules.ConditionSource isAboveWaterLevel = SurfaceRules.waterBlockCheck(0, 0); + SurfaceRules.ConditionSource isUnderWaterLevel = SurfaceRules.waterStartCheck(-6, -1); + SurfaceRules.ConditionSource isHole = SurfaceRules.hole(); + SurfaceRules.ConditionSource isFrozenOcean = SurfaceRules.isBiome(Biomes.FROZEN_OCEAN, Biomes.DEEP_FROZEN_OCEAN); + SurfaceRules.ConditionSource isSteep = SurfaceRules.steep(); + SurfaceRules.ConditionSource isSandSurfaceBiomes = SurfaceRules.isBiome(Biomes.WARM_OCEAN, Biomes.BEACH, Biomes.SNOWY_BEACH); + SurfaceRules.ConditionSource isDesert = SurfaceRules.isBiome(Biomes.DESERT); + SurfaceRules.ConditionSource isAzureDesert = SurfaceRules.isBiome(ECBiomeKeys.AZURE_DESERT.key()); + SurfaceRules.ConditionSource isJadeiteDesert = SurfaceRules.isBiome(ECBiomeKeys.JADEITE_DESERT.key()); + + SurfaceRules.ConditionSource isBandNeg = SurfaceRules.noiseCondition(Noises.SURFACE, -0.909D, -0.5454D); + SurfaceRules.ConditionSource isBandZero = SurfaceRules.noiseCondition(Noises.SURFACE, -0.1818D, 0.1818D); + SurfaceRules.ConditionSource isBandPos = SurfaceRules.noiseCondition(Noises.SURFACE, 0.5454D, 0.909D); + + SurfaceRules.RuleSource grassSurface = SurfaceRules.sequence(SurfaceRules.ifTrue(isAboveWaterLevel, GRASS_BLOCK), DIRT); + SurfaceRules.RuleSource sandstoneLinedSand = SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, SANDSTONE), SAND); + SurfaceRules.RuleSource redSandstoneLinedSand = SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, RED_SANDSTONE), RED_SAND); + SurfaceRules.RuleSource azureSandstoneLinedSand = SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, AZURE_SANDSTONE), AZURE_SAND); + SurfaceRules.RuleSource jadeiteSandstoneLinedSand = SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, JADEITE_SANDSTONE), JADEITE_SAND); + SurfaceRules.RuleSource stoneLinedGravel = SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, STONE), GRAVEL); + SurfaceRules.RuleSource hillAndSeaAndDesertSource = SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.STONY_PEAKS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.CALCITE, -0.0125D, 0.0125D), CALCITE), + STONE + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.STONY_SHORE), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.GRAVEL, -0.05D, 0.05D), stoneLinedGravel), + STONE + ) + ), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.WINDSWEPT_HILLS), SurfaceRules.ifTrue(surfaceNoiseAbove(1.0D), STONE)), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.KARST_HILLS.key()), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, 0.8D), DRIPSTONE_BLOCK), + STONE + ) + ), + SurfaceRules.ifTrue(isSandSurfaceBiomes, sandstoneLinedSand), + SurfaceRules.ifTrue(isDesert, sandstoneLinedSand), + SurfaceRules.ifTrue(isAzureDesert, azureSandstoneLinedSand), + SurfaceRules.ifTrue(isJadeiteDesert, jadeiteSandstoneLinedSand), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.GOLDEN_BEACH.key()), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, 0.8D), redSandstoneLinedSand), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, 0.4D, 0.8D), sandstoneLinedSand), + SurfaceRules.sequence(SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, DARK_SANDSTONE), DARK_SAND) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.PALM_BEACH.key()), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, -0.15D, 0.15D), COARSE_DIRT), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, -0.6D, -0.45D), COARSE_DIRT), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, 0.45D, 0.6D), COARSE_DIRT), + sandstoneLinedSand + ) + ), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.DRIPSTONE_CAVES), STONE) + ); + SurfaceRules.RuleSource smallPowderSnow = SurfaceRules.ifTrue( + SurfaceRules.noiseCondition(Noises.POWDER_SNOW, 0.45D, 0.58D), + SurfaceRules.ifTrue(isAboveWaterLevel, POWDER_SNOW) + ); + SurfaceRules.RuleSource largePowderSnow = SurfaceRules.ifTrue( + SurfaceRules.noiseCondition(Noises.POWDER_SNOW, 0.35D, 0.6D), + SurfaceRules.ifTrue(isAboveWaterLevel, POWDER_SNOW) + ); + SurfaceRules.RuleSource underSurfaceSource = SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.FROZEN_PEAKS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, PACKED_ICE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.PACKED_ICE, -0.5D, 0.2D), PACKED_ICE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.ICE, -0.0625D, 0.025D), ICE), + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.SNOWY_SLOPES), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, STONE), + smallPowderSnow, + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.JAGGED_PEAKS), STONE), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.GROVE), SurfaceRules.sequence(smallPowderSnow, DIRT)), + hillAndSeaAndDesertSource, + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_SAVANNA), + SurfaceRules.ifTrue(surfaceNoiseAbove(1.75D), STONE) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_GRAVELLY_HILLS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(surfaceNoiseAbove(2.0D),stoneLinedGravel), + SurfaceRules.ifTrue(surfaceNoiseAbove(1.0D), STONE), + SurfaceRules.ifTrue(surfaceNoiseAbove(-1.0D), DIRT), + stoneLinedGravel + ) + ), + DIRT + ); + SurfaceRules.RuleSource surfaceSource = SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.FROZEN_PEAKS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, PACKED_ICE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.PACKED_ICE, 0.0D, 0.2D), PACKED_ICE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.ICE, 0.0D, 0.025D), ICE), + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.SNOWY_SLOPES), + SurfaceRules.sequence( + SurfaceRules.ifTrue(isSteep, STONE), + largePowderSnow, + SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.JAGGED_PEAKS), + SurfaceRules.sequence(SurfaceRules.ifTrue(isSteep, STONE), SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK)) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.GROVE), + SurfaceRules.sequence(largePowderSnow, SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK)) + ), + hillAndSeaAndDesertSource, + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_SAVANNA), + SurfaceRules.sequence( + SurfaceRules.ifTrue(surfaceNoiseAbove(1.75D), STONE), + SurfaceRules.ifTrue(surfaceNoiseAbove(-0.5D), COARSE_DIRT) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WINDSWEPT_GRAVELLY_HILLS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(surfaceNoiseAbove(2.0D), stoneLinedGravel), + SurfaceRules.ifTrue(surfaceNoiseAbove(1.0D), STONE), + SurfaceRules.ifTrue(surfaceNoiseAbove(-1.0D), grassSurface), + stoneLinedGravel + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.OLD_GROWTH_PINE_TAIGA, Biomes.OLD_GROWTH_SPRUCE_TAIGA), + SurfaceRules.sequence( + SurfaceRules.ifTrue(surfaceNoiseAbove(1.75D), COARSE_DIRT), + SurfaceRules.ifTrue(surfaceNoiseAbove(-0.95D), PODZOL) + ) + ), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.ICE_SPIKES), SurfaceRules.ifTrue(isAboveWaterLevel, SNOW_BLOCK)), + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.MUSHROOM_FIELDS), MYCELIUM), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.GINKGO_FOREST.key()), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, 0.6D), PODZOL) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.XANADU.key()), + MOSS_BLOCK + ), + grassSurface + ); + + SurfaceRules.RuleSource ruleSource = SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WOODED_BADLANDS), + SurfaceRules.ifTrue( + above97_2, + SurfaceRules.sequence( + SurfaceRules.ifTrue(isBandNeg, COARSE_DIRT), + SurfaceRules.ifTrue(isBandZero, COARSE_DIRT), + SurfaceRules.ifTrue(isBandPos, COARSE_DIRT), + grassSurface + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.SWAMP), + SurfaceRules.ifTrue( + above62, + SurfaceRules.ifTrue( + SurfaceRules.not(above63), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SWAMP, 0.0D), WATER) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.XANADU.key()), + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.not(above50), + WATER + ), + SurfaceRules.ifTrue( + above62, + SurfaceRules.ifTrue( + SurfaceRules.not(above65), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SWAMP, -0.1D), WATER), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.GRAVEL, 0.0D, 0.05D), WATER) + ) + ) + ) + ) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.BADLANDS, Biomes.ERODED_BADLANDS, Biomes.WOODED_BADLANDS), + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.sequence( + SurfaceRules.ifTrue(above256, ORANGE_TERRACOTTA), + SurfaceRules.ifTrue( + above74_1, + SurfaceRules.sequence( + SurfaceRules.ifTrue(isBandNeg, TERRACOTTA), + SurfaceRules.ifTrue(isBandZero, TERRACOTTA), + SurfaceRules.ifTrue(isBandPos, TERRACOTTA), + SurfaceRules.bandlands() + ) + ), + SurfaceRules.ifTrue(isAtOrAboveWaterLevel, redSandstoneLinedSand), + SurfaceRules.ifTrue(SurfaceRules.not(isHole), ORANGE_TERRACOTTA), + SurfaceRules.ifTrue(isUnderWaterLevel, WHITE_TERRACOTTA), + stoneLinedGravel + ) + ), + SurfaceRules.ifTrue( + above63_1, + SurfaceRules.sequence( + SurfaceRules.ifTrue(above63, SurfaceRules.ifTrue(SurfaceRules.not(above74_1), ORANGE_TERRACOTTA)), + SurfaceRules.bandlands() + ) + ), + SurfaceRules.ifTrue(SurfaceRules.UNDER_FLOOR, SurfaceRules.ifTrue(isUnderWaterLevel, WHITE_TERRACOTTA)) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.ifTrue( + isAtOrAboveWaterLevel, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + isFrozenOcean, + SurfaceRules.ifTrue( + isHole, + SurfaceRules.sequence( + SurfaceRules.ifTrue(isAboveWaterLevel, AIR), + SurfaceRules.ifTrue(SurfaceRules.temperature(), ICE), + WATER + ) + ) + ), + surfaceSource + ) + ) + ), + SurfaceRules.ifTrue( + isUnderWaterLevel, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.ifTrue(isFrozenOcean, SurfaceRules.ifTrue(isHole, WATER)) + ), + SurfaceRules.ifTrue(SurfaceRules.UNDER_FLOOR, underSurfaceSource), + SurfaceRules.ifTrue(isSandSurfaceBiomes, SurfaceRules.ifTrue(SurfaceRules.DEEP_UNDER_FLOOR, SANDSTONE)), + SurfaceRules.ifTrue(isDesert, SurfaceRules.ifTrue(SurfaceRules.VERY_DEEP_UNDER_FLOOR, SANDSTONE)) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.isBiome(Biomes.FROZEN_PEAKS, Biomes.JAGGED_PEAKS), STONE), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WARM_OCEAN, Biomes.LUKEWARM_OCEAN, Biomes.DEEP_LUKEWARM_OCEAN), + sandstoneLinedSand + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.DEAD_CRIMSON_OCEAN.key(), ECBiomeKeys.DEEP_DEAD_CRIMSON_OCEAN.key()), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, CRIMSON_STONE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, -0.0125D, 0.0125D), MAGMA_BLOCK), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.GRAVEL, -0.05D, 0.05D), CRYING_OBSIDIAN), + CRIMSON_STONE + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.DEAD_WARPED_OCEAN.key(), ECBiomeKeys.DEEP_DEAD_WARPED_OCEAN.key()), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.ON_CEILING, WARPED_STONE), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.SURFACE, -0.025D, 0.025D), BASALT), + SurfaceRules.ifTrue(SurfaceRules.noiseCondition(Noises.GRAVEL, -0.05D, 0.05D), GRAVEL), + WARPED_STONE + ) + ), + stoneLinedGravel + ) + ) + ); + + ImmutableList.Builder builder = ImmutableList.builder(); + if (bedrockRoof) { + builder.add(SurfaceRules.ifTrue(SurfaceRules.not(SurfaceRules.verticalGradient("bedrock_roof", VerticalAnchor.belowTop(5), VerticalAnchor.top())), BEDROCK)); + } + + if (bedrockFloor) { + builder.add(SurfaceRules.ifTrue(SurfaceRules.verticalGradient("bedrock_floor", VerticalAnchor.bottom(), VerticalAnchor.aboveBottom(5)), BEDROCK)); + } + + SurfaceRules.RuleSource surfacerules$rulesource9 = SurfaceRules.ifTrue(SurfaceRules.abovePreliminarySurface(), ruleSource); + builder.add(checkAbovePreliminarySurface ? surfacerules$rulesource9 : ruleSource); + builder.add(SurfaceRules.ifTrue(SurfaceRules.verticalGradient("deepslate", VerticalAnchor.absolute(0), VerticalAnchor.absolute(8)), DEEPSLATE)); + return SurfaceRules.sequence(builder.build().toArray(SurfaceRules.RuleSource[]::new)); + } + + public static SurfaceRules.RuleSource nether() { + SurfaceRules.ConditionSource above31 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(31), 0); + SurfaceRules.ConditionSource above32 = SurfaceRules.yBlockCheck(VerticalAnchor.absolute(32), 0); + SurfaceRules.ConditionSource above30 = SurfaceRules.yStartCheck(VerticalAnchor.absolute(30), 0); + SurfaceRules.ConditionSource below35 = SurfaceRules.not(SurfaceRules.yStartCheck(VerticalAnchor.absolute(35), 0)); + SurfaceRules.ConditionSource isHole = SurfaceRules.hole(); + SurfaceRules.ConditionSource bedrockLayer = SurfaceRules.yBlockCheck(VerticalAnchor.belowTop(5), 0); + SurfaceRules.ConditionSource soulSandNoised = SurfaceRules.noiseCondition(Noises.SOUL_SAND_LAYER, -0.012D); + SurfaceRules.ConditionSource gravelNoised = SurfaceRules.noiseCondition(Noises.GRAVEL_LAYER, -0.012D); + SurfaceRules.ConditionSource netherrackNoised = SurfaceRules.noiseCondition(Noises.NETHERRACK, 0.54D); + SurfaceRules.ConditionSource wartBlockNoised = SurfaceRules.noiseCondition(Noises.NETHER_WART, 1.17D); + SurfaceRules.ConditionSource netherStoneNoised = SurfaceRules.noiseCondition(Noises.NETHER_STATE_SELECTOR, 0.0D); + SurfaceRules.RuleSource gravelSource = SurfaceRules.ifTrue( + SurfaceRules.noiseCondition(Noises.PATCH, -0.012D), + SurfaceRules.ifTrue( + above30, + SurfaceRules.ifTrue(below35, GRAVEL) + )); + + return SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.verticalGradient("bedrock_floor", VerticalAnchor.bottom(), VerticalAnchor.aboveBottom(5)), + BEDROCK + ), + SurfaceRules.ifTrue( + SurfaceRules.not(SurfaceRules.verticalGradient("bedrock_roof", VerticalAnchor.belowTop(5), VerticalAnchor.top())), + BEDROCK + ), + SurfaceRules.ifTrue(bedrockLayer, NETHERRACK), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.BASALT_DELTAS), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.UNDER_CEILING, BASALT), + SurfaceRules.ifTrue( + SurfaceRules.UNDER_FLOOR, + SurfaceRules.sequence(gravelSource, SurfaceRules.ifTrue(netherStoneNoised, BASALT), BLACKSTONE) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.SOUL_SAND_VALLEY), + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.UNDER_CEILING, + SurfaceRules.sequence(SurfaceRules.ifTrue(netherStoneNoised, SOUL_SAND), SOUL_SOIL) + ), + SurfaceRules.ifTrue( + SurfaceRules.UNDER_FLOOR, + SurfaceRules.sequence(gravelSource, SurfaceRules.ifTrue(netherStoneNoised, SOUL_SAND), SOUL_SOIL) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.not(above32), + SurfaceRules.ifTrue(isHole, LAVA) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.PURPURACEUS_SWAMP.key()), + SurfaceRules.ifTrue( + SurfaceRules.not(netherrackNoised), + SurfaceRules.ifTrue( + above31, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + wartBlockNoised, + SurfaceRules.sequence( + SurfaceRules.ifTrue(netherStoneNoised, LAVA), + PURPURACEUS_WART_BLOCK + ) + ), + PURPURACEUS_NYLIUM + ) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.WARPED_FOREST), + SurfaceRules.ifTrue( + SurfaceRules.not(netherrackNoised), + SurfaceRules.ifTrue( + above31, + SurfaceRules.sequence( + SurfaceRules.ifTrue(wartBlockNoised, WARPED_WART_BLOCK), + WARPED_NYLIUM + ) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.CRIMSON_FOREST), + SurfaceRules.ifTrue( + SurfaceRules.not(netherrackNoised), + SurfaceRules.ifTrue( + above31, + SurfaceRules.sequence( + SurfaceRules.ifTrue(wartBlockNoised, NETHER_WART_BLOCK), + CRIMSON_NYLIUM + ) + ) + ) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(Biomes.NETHER_WASTES), + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.UNDER_FLOOR, + SurfaceRules.ifTrue( + soulSandNoised, + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.not(isHole), + SurfaceRules.ifTrue(above30, SurfaceRules.ifTrue(below35, SOUL_SAND)) + ), + NETHERRACK + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.ON_FLOOR, + SurfaceRules.ifTrue( + above31, + SurfaceRules.ifTrue( + below35, + SurfaceRules.ifTrue( + gravelNoised, + SurfaceRules.sequence( + SurfaceRules.ifTrue(above32, GRAVEL), + SurfaceRules.ifTrue(SurfaceRules.not(isHole), GRAVEL) + ) + ) + ) + ) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.EMERY_DESERT.key()), + SurfaceRules.sequence( + SurfaceRules.ifTrue(SurfaceRules.UNDER_CEILING, BLACKSTONE), + SurfaceRules.ifTrue(SurfaceRules.UNDER_FLOOR, SurfaceRules.sequence( + gravelSource, + SurfaceRules.ifTrue( + netherStoneNoised, EMERY_SAND + ), + EMERY_SANDSTONE) + ) + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.isBiome(ECBiomeKeys.QUARTZ_DESERT.key()), + SurfaceRules.sequence( + SurfaceRules.ifTrue( + SurfaceRules.UNDER_CEILING, + SurfaceRules.sequence( + SurfaceRules.ifTrue(netherrackNoised, VITRIFIED_SAND), + NETHERRACK + ) + ), + SurfaceRules.ifTrue( + SurfaceRules.UNDER_FLOOR, + SurfaceRules.sequence( + gravelSource, + SurfaceRules.ifTrue( + netherStoneNoised, QUARTZ_SAND + ), + QUARTZ_SANDSTONE + ) + ) + ) + ), + NETHERRACK + ); + } + + private static SurfaceRules.ConditionSource surfaceNoiseAbove(double threshold) { + return SurfaceRules.noiseCondition(Noises.SURFACE, threshold / 8.25D, Double.MAX_VALUE); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/village/ECTrades.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/village/ECTrades.java new file mode 100644 index 00000000..e3fa0f93 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/village/ECTrades.java @@ -0,0 +1,611 @@ +package com.hexagram2021.emeraldcraft.common.world.village; + +import com.google.common.collect.ImmutableMap; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; +import net.minecraft.core.BlockPos; +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.server.level.ServerLevel; +import net.minecraft.tags.TagKey; +import net.minecraft.util.RandomSource; +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.entity.player.Player; +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 net.minecraft.world.level.Level; +import net.minecraft.world.level.levelgen.structure.Structure; +import net.minecraft.world.level.saveddata.maps.MapDecoration; +import net.minecraft.world.level.saveddata.maps.MapItemSavedData; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nullable; +import java.util.Map; + +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, 3, 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( + Component.translatable("book.emeraldcraft.piglin_cutey.title"), + Component.translatable("entity.emeraldcraft.piglin_cutey"), + Component.translatable("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(@NotNull Entity trader, @NotNull RandomSource 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("{\"text\":\"" + 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(@NotNull Entity trader, @NotNull RandomSource 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(@NotNull Entity trader, @NotNull RandomSource 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 TraderHeadForEmeralds implements VillagerTrades.ItemListing { + private final int emeraldCost; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public TraderHeadForEmeralds(int emeraldCost, int maxUses, int Xp) { + this.emeraldCost = emeraldCost; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + @Override + public MerchantOffer getOffer(Entity trader, @NotNull RandomSource rand) { + ItemStack itemstack = new ItemStack(Items.PLAYER_HEAD); + Player lastTradedPlayer = trader.level.getNearestPlayer(trader, 12.0D); + if(lastTradedPlayer != null) { + CompoundTag tag = itemstack.getOrCreateTag(); + tag.putString("SkullOwner", lastTradedPlayer.getDisplayName().getString()); + itemstack.setTag(tag); + } + return new MerchantOffer(new ItemStack(Items.EMERALD, this.emeraldCost), itemstack, 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(@NotNull Entity trader, RandomSource 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(@NotNull Entity trader, @NotNull RandomSource 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(@NotNull Entity trader, @NotNull RandomSource 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 Item defaultTradeItem; + 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, Item defaultTradeItem) { + Registry.VILLAGER_TYPE.stream().filter((villagerType) -> !trades.containsKey(villagerType)).findAny().ifPresent((villagerType) -> + ECLogger.debug("Missing trade for villager type: " + Registry.VILLAGER_TYPE.getKey(villagerType))); + this.trades = trades; + this.defaultTradeItem = defaultTradeItem; + this.cost = cost; + this.emeraldCost = emeraldCost; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + public MerchantOffer getOffer(@NotNull Entity trader, @NotNull RandomSource rand) { + if (trader instanceof VillagerDataHolder villagerDataHolder) { + Item item = this.trades.get(villagerDataHolder.getVillagerData().getType()); + if(item == null) { + item = this.defaultTradeItem; + } + ItemStack itemstack = new ItemStack(item, 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 Item defaultTradeItem; + 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, Item defaultTradeItem) { + Registry.VILLAGER_TYPE.stream().filter((villagerType) -> !trades.containsKey(villagerType)).findAny().ifPresent((villagerType) -> + ECLogger.debug("Missing trade for villager type: " + Registry.VILLAGER_TYPE.getKey(villagerType))); + this.trades = trades; + this.defaultTradeItem = defaultTradeItem; + this.numberOfItems = numberOfItems; + this.emeraldCost = emeraldCost; + this.maxUses = maxUses; + this.Xp = Xp; + this.priceMultiplier = LOW_TIER_PRICE_MULTIPLIER; + } + + @Nullable + public MerchantOffer getOffer(@NotNull Entity trader, @NotNull RandomSource rand) { + if (trader instanceof VillagerDataHolder villagerDataHolder) { + Item item = this.trades.get(villagerDataHolder.getVillagerData().getType()); + if(item == null) { + item = this.defaultTradeItem; + } + ItemStack itemstack = new ItemStack(item, 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(@NotNull Entity trader, @NotNull RandomSource 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(@NotNull Entity trader, @NotNull RandomSource 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(@NotNull Entity trader, @NotNull RandomSource 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 NetheriteScrapForItems implements VillagerTrades.ItemListing { + private final Item item; + private final int cost; + private final int maxUses; + private final int Xp; + private final float priceMultiplier; + + public NetheriteScrapForItems(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(@NotNull Entity trader, @NotNull RandomSource rand) { + ItemStack itemstack = new ItemStack(this.item, this.cost); + return new MerchantOffer(itemstack, new ItemStack(Items.NETHERITE_SCRAP), 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(@NotNull Entity trader, @NotNull RandomSource 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(@NotNull Entity trader, @NotNull RandomSource 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(@NotNull Entity trader, @NotNull RandomSource 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); + } + } + + public static class NetherStructureMapForEmeralds implements VillagerTrades.ItemListing { + private final int emeraldCost; + private final int scale; + private final TagKey destination; + private final String displayName; + private final MapDecoration.Type destinationType; + private final int maxUses; + private final int villagerXp; + + public NetherStructureMapForEmeralds(int emeraldCost, int scale, TagKey destination, String displayName, MapDecoration.Type destinationType, int maxUses, int xp) { + this.emeraldCost = emeraldCost; + this.scale = scale; + this.destination = destination; + this.displayName = displayName; + this.destinationType = destinationType; + this.maxUses = maxUses; + this.villagerXp = xp; + } + + @Nullable + public MerchantOffer getOffer(Entity trader, @NotNull RandomSource rand) { + if (trader.level instanceof ServerLevel serverlevel) { + ServerLevel dimensionLevel = serverlevel.getServer().getLevel(Level.NETHER); + if(dimensionLevel == null) { + return null; + } + BlockPos traderBlockPosition = trader.blockPosition(); + if(trader.level.dimension() != Level.NETHER) { + traderBlockPosition = new BlockPos(traderBlockPosition.getX() >> 3, traderBlockPosition.getY(), traderBlockPosition.getZ() >> 3); + } + BlockPos blockpos = dimensionLevel.findNearestMapStructure(this.destination, traderBlockPosition, 100, true); + if (blockpos != null) { + ItemStack itemstack = MapItem.create(dimensionLevel, blockpos.getX(), blockpos.getZ(), (byte)this.scale, true, true); + MapItem.renderBiomePreviewMap(dimensionLevel, itemstack); + MapItemSavedData.addTargetDecoration(itemstack, blockpos, "+", this.destinationType); + itemstack.setHoverName(Component.translatable(this.displayName)); + return new MerchantOffer(new ItemStack(Items.EMERALD, this.emeraldCost), new ItemStack(Items.COMPASS), itemstack, this.maxUses, this.villagerXp, HIGH_TIER_PRICE_MULTIPLIER); + } + } + return null; + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/common/world/village/Villages.java b/src/main/java/com/hexagram2021/emeraldcraft/common/world/village/Villages.java new file mode 100644 index 00000000..997aa916 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/common/world/village/Villages.java @@ -0,0 +1,398 @@ +package com.hexagram2021.emeraldcraft.common.world.village; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.hexagram2021.emeraldcraft.common.register.*; +import com.hexagram2021.emeraldcraft.common.util.ECSounds; +import com.hexagram2021.emeraldcraft.mixin.HeroGiftsTaskAccess; +import com.hexagram2021.emeraldcraft.mixin.SingleJigsawAccess; +import com.mojang.datafixers.util.Either; +import com.mojang.datafixers.util.Pair; +import com.mojang.serialization.Lifecycle; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.objects.Object2IntLinkedOpenHashMap; +import it.unimi.dsi.fastutil.objects.Object2IntMap; +import net.minecraft.core.WritableRegistry; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.data.worldgen.PlainVillagePools; +import net.minecraft.data.worldgen.ProcessorLists; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.RandomSource; +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.minecraft.world.level.levelgen.structure.pools.StructurePoolElement; +import net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool; +import net.minecraftforge.event.village.VillagerTradesEvent; +import net.minecraftforge.event.village.WandererTradesEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +import java.util.Collection; +import java.util.List; +import java.util.OptionalInt; +import java.util.function.Supplier; +import java.util.stream.Collectors; + +import static com.hexagram2021.emeraldcraft.EmeraldCraft.MODID; +import static com.hexagram2021.emeraldcraft.common.util.RegistryHelper.getRegistryName; + +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() { + PlainVillagePools.bootstrap(); + addToPool(new ResourceLocation("village/plains/houses"), new ResourceLocation(MODID, "village/plains/houses/plains_carpentry_house_1"), 5); + + 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")); + } + + @SuppressWarnings("SameParameterValue") + private static void addToPool(ResourceLocation pool, ResourceLocation toAdd, int weight) { + StructureTemplatePool old = BuiltinRegistries.TEMPLATE_POOL.get(pool); + int id = BuiltinRegistries.TEMPLATE_POOL.getId(old); + + List shuffled; + if(old != null) { + shuffled = old.getShuffledTemplates(RandomSource.create(0)); + } else { + shuffled = ImmutableList.of(); + } + Object2IntMap newPieces = new Object2IntLinkedOpenHashMap<>(); + for(StructurePoolElement p : shuffled) + newPieces.computeInt(p, (StructurePoolElement pTemp, Integer i) -> (i==null ? 0 : i) + 1); + newPieces.put(SingleJigsawAccess.construct( + Either.left(toAdd), ProcessorLists.EMPTY, StructureTemplatePool.Projection.RIGID + ), weight); + List> newPieceList = newPieces.object2IntEntrySet().stream() + .map(e -> Pair.of(e.getKey(), e.getIntValue())) + .collect(Collectors.toList()); + + ResourceLocation name = old.getName(); + ((WritableRegistry)BuiltinRegistries.TEMPLATE_POOL).registerOrOverride( + OptionalInt.of(id), + ResourceKey.create(BuiltinRegistries.TEMPLATE_POOL.key(), name), + new StructureTemplatePool(pool, name, newPieceList), + Lifecycle.stable() + ); + } + + @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.VILLAGER_PROFESSIONS, MODID); + + public static final RegistryObject POI_CARPENTRY_TABLE = POINTS_OF_INTEREST.register( + "carpentry_table", () -> createPOI(assembleStates(ECBlocks.WorkStation.CARPENTRY_TABLE.get())) + ); + public static final RegistryObject POI_GLASS_KILN = POINTS_OF_INTEREST.register( + "glass_kiln", () -> createPOI(assembleStates(ECBlocks.WorkStation.GLASS_KILN.get())) + ); + public static final RegistryObject POI_MINERAL_TABLE = POINTS_OF_INTEREST.register( + "mineral_table", () -> createPOI(assembleStates(ECBlocks.WorkStation.MINERAL_TABLE.get())) + ); + public static final RegistryObject POI_CRYSTALBALL_TABLE = POINTS_OF_INTEREST.register( + "crystalball_table", () -> createPOI(assembleStates(ECBlocks.WorkStation.CRYSTALBALL_TABLE.get())) + ); + public static final RegistryObject POI_FLOWER_POT = POINTS_OF_INTEREST.register( + "flower_pot", () -> createPOI(assembleStates(Blocks.FLOWER_POT)) + ); + public static final RegistryObject POI_SQUEEZER = POINTS_OF_INTEREST.register( + "squeezer", () -> createPOI(assembleStates(ECBlocks.WorkStation.SQUEEZER.get())) + ); + public static final RegistryObject POI_CONTINUOUS_MINER = POINTS_OF_INTEREST.register( + "continuous_miner", () -> createPOI(assembleStates(ECBlocks.WorkStation.CONTINUOUS_MINER.get())) + ); + public static final RegistryObject POI_ICE_MAKER = POINTS_OF_INTEREST.register( + "ice_maker", () -> createPOI(assembleStates(ECBlocks.WorkStation.ICE_MAKER.get())) + ); + public static final RegistryObject POI_MELTER = POINTS_OF_INTEREST.register( + "melter", () -> createPOI(assembleStates(ECBlocks.WorkStation.MELTER.get())) + ); + + public static final RegistryObject PROF_CARPENTER = PROFESSIONS.register( + CARPENTER.getPath(), () -> createProf(CARPENTER, POI_CARPENTRY_TABLE::getKey, ECSounds.VILLAGER_WORK_CARPENTER) + ); + public static final RegistryObject PROF_GLAZIER = PROFESSIONS.register( + GLAZIER.getPath(), () -> createProf(GLAZIER, POI_GLASS_KILN::getKey, ECSounds.VILLAGER_WORK_GLAZIER) + ); + public static final RegistryObject PROF_MINER = PROFESSIONS.register( + MINER.getPath(), () -> createProf(MINER, POI_MINERAL_TABLE::getKey, ECSounds.VILLAGER_WORK_MINER) + ); + public static final RegistryObject PROF_ASTROLOGIST = PROFESSIONS.register( + ASTROLOGIST.getPath(), () -> createProf(ASTROLOGIST, POI_CRYSTALBALL_TABLE::getKey, ECSounds.VILLAGER_WORK_ASTROLOGIST) + ); + public static final RegistryObject PROF_GROWER = PROFESSIONS.register( + GROWER.getPath(), () -> createProf(GROWER, POI_FLOWER_POT::getKey, ECSounds.VILLAGER_WORK_GROWER) + ); + public static final RegistryObject PROF_BEEKEEPER = PROFESSIONS.register( + BEEKEEPER.getPath(), () -> createProf(GROWER, POI_SQUEEZER::getKey, ECSounds.VILLAGER_WORK_BEEKEEPER) + ); + public static final RegistryObject PROF_GEOLOGIST = PROFESSIONS.register( + GEOLOGIST.getPath(), () -> createProf(GEOLOGIST, POI_CONTINUOUS_MINER::getKey, ECSounds.VILLAGER_WORK_GEOLOGIST) + ); + public static final RegistryObject PROF_ICER = PROFESSIONS.register( + ICER.getPath(), () -> createProf(ICER, POI_ICE_MAKER::getKey, ECSounds.VILLAGER_WORK_ICER) + ); + public static final RegistryObject PROF_CHEMICAL_ENGINEER = PROFESSIONS.register( + CHEMICAL_ENGINEER.getPath(), () -> createProf(CHEMICAL_ENGINEER, POI_MELTER::getKey, ECSounds.VILLAGER_WORK_CHEMICAL_ENGINEER) + ); + + private static Collection assembleStates(Block block) { + return block.getStateDefinition().getPossibleStates(); + } + + private static PoiType createPOI(Collection block) { + return new PoiType(ImmutableSet.copyOf(block), 1, 1); + } + + private static VillagerProfession createProf(ResourceLocation name, Supplier> poi, SoundEvent sound) { + ResourceKey poiName = poi.get(); + return new VillagerProfession( + name.toString(), + (p) -> p.is(poiName), + (p) -> p.is(poiName), + ImmutableSet.of(), + ImmutableSet.of(), + 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(); + + ResourceLocation currentVillagerProfession = getRegistryName(event.getType()); + if(CARPENTER.equals(currentVillagerProfession)) { + 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(), + Items.OAK_SAPLING + )); + 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(), + Items.OAK_LOG + )); + 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, 2, 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, 3, 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(4, 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(), + Items.OAK_SIGN + )); + 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, 12, Items.SHULKER_BOX, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(GLAZIER.equals(currentVillagerProfession)) { + 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, 12, 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, 6, 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(currentVillagerProfession)) { + trades.get(1).add(new ECTrades.EmeraldForItems(Items.RAW_COPPER, 14, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.RAW_IRON, 10, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.RAW_GOLD, 8, 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, 6, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.QUARTZ, 8, 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(currentVillagerProfession)) { + 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, 12, 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, 8, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(2).add(new ECTrades.EmeraldForItems(Items.SOUL_SAND, 10, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.CHORUS_FRUIT, 7, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.SPIDER_EYE, 9, 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, 14, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_BUY)); + trades.get(4).add(new ECTrades.ItemsAndEmeraldsToItems(Items.COAL, 4, 56, Items.WITHER_SKELETON_SKULL, 1, ECTrades.ONLY_SUPPLY_ONCE, 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.TraderHeadForEmeralds(40, 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(currentVillagerProfession)) { + 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.ItemsForEmeralds(new ItemStack(ECBlocks.Plant.CYAN_PETUNIA.asItem()), 1, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECBlocks.Plant.MAGENTA_PETUNIA.asItem()), 1, 3, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.BONE, 12, 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, 9, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_2_BUY)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECBlocks.Plant.HIGAN_BANA), 3, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + 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, 14, 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, 6, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.LILAC, 6, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.ROSE_BUSH, 6, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.PEONY, 6, 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(currentVillagerProfession)) { + 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, 6, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.PINK_TULIP, 6, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.RED_TULIP, 6, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_3_BUY)); + trades.get(3).add(new ECTrades.EmeraldForItems(Items.WHITE_TULIP, 6, 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(ECBannerPatterns.BEE.item()), 8, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(GEOLOGIST.equals(currentVillagerProfession)) { + trades.get(1).add(new ECTrades.EmeraldForItems(Items.NETHERRACK, 24, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_1_BUY)); + trades.get(1).add(new ECTrades.EmeraldForItems(Items.DEEPSLATE, 18, 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, 7, 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, 2, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_BUY)); + trades.get(4).add(new ECTrades.EmeraldForItems(ECItems.GOLD_CONCENTRATE, 2, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_4_BUY)); + trades.get(4).add(new ECTrades.EmeraldForItems(ECItems.COPPER_CONCENTRATE, 3, 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, 14, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.EmeraldForItems(Items.BLACKSTONE, 16, 1, ECTrades.COMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(ICER.equals(currentVillagerProfession)) { + 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(ECBannerPatterns.SNOW.item()), 8, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(CHEMICAL_ENGINEER.equals(currentVillagerProfession)) { + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.MELTED_EMERALD_BUCKET), 12, 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.NetheriteScrapForItems(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(ECBannerPatterns.BOTTLE.item()), 8, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECBannerPatterns.POTION.item()), 8, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } else if(new ResourceLocation(VillagerProfession.FARMER.name()).equals(currentVillagerProfession)) { + trades.get(1).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.CHILI_SEED), 1, 1, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_1_SELL)); + trades.get(2).add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.PEACH), 3, 1, ECTrades.UNCOMMON_ITEMS_SUPPLY, ECTrades.XP_LEVEL_2_SELL)); + } else if(new ResourceLocation(VillagerProfession.CARTOGRAPHER.name()).equals(currentVillagerProfession)) { + trades.get(5).add(new ECTrades.NetherStructureMapForEmeralds(12, 2, ECStructureTags.ON_SAR_EXPLORER_MAPS, "filled_map.shelter", ECMapDecorationTypes.SHELTER, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + trades.get(5).add(new ECTrades.NetherStructureMapForEmeralds(14, 2, ECStructureTags.ON_GEOCENTER_EXPLORER_MAPS, "filled_map.entrenchment", ECMapDecorationTypes.ENTRENCHMENT, ECTrades.DEFAULT_SUPPLY, ECTrades.XP_LEVEL_5_TRADE)); + } + } + + + @SubscribeEvent + public static void registerWandererTrades(WandererTradesEvent event) { + List genericTrades = event.getGenericTrades(); + List rareTrades = event.getRareTrades(); + genericTrades.add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.CHILI), 3, 1, 5, ECTrades.XP_LEVEL_1_SELL)); + genericTrades.add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.PEACH), 4, 1, 5, ECTrades.XP_LEVEL_1_SELL)); + genericTrades.add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.GINKGO_NUT), 2, 1, 4, ECTrades.XP_LEVEL_1_SELL)); + rareTrades.add(new ECTrades.ItemsForEmeralds(new ItemStack(ECItems.GLUTEN), 3, 1, 4, ECTrades.XP_LEVEL_1_SELL)); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/AbstractPiglinEntityMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/AbstractPiglinEntityMixin.java new file mode 100644 index 00000000..aa052253 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/AbstractPiglinEntityMixin.java @@ -0,0 +1,74 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.util.PlayerHealable; +import net.minecraft.Util; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.world.entity.monster.piglin.AbstractPiglin; +import org.jetbrains.annotations.NotNull; +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; + +import javax.annotation.Nullable; +import java.util.Objects; +import java.util.UUID; + +@Mixin(AbstractPiglin.class) +public class AbstractPiglinEntityMixin implements PlayerHealable { + private static final EntityDataAccessor DATA_FLAGS_ID = SynchedEntityData.defineId(AbstractPiglin.class, EntityDataSerializers.BYTE); + + @NotNull + private UUID healedPlayer = Util.NIL_UUID; + + @Inject(method = "defineSynchedData", at = @At(value = "TAIL")) + protected void defineFlagsData(CallbackInfo ci) { + ((AbstractPiglin) (Object) this).getEntityData().define(DATA_FLAGS_ID, (byte)0); + } + + @Inject(method = "addAdditionalSaveData", at = @At(value = "TAIL")) + public void addPlayerHealed(CompoundTag nbt, CallbackInfo ci) { + nbt.putBoolean("PlayerHealed", this.isPlayerHealed()); + nbt.putUUID("HealedPlayer", this.healedPlayer); + } + + @Inject(method = "readAdditionalSaveData", at = @At(value = "TAIL")) + public void readPlayerHealed(CompoundTag nbt, CallbackInfo ci) { + if(nbt.contains("PlayerHealed", Tag.TAG_BYTE)) { + this.setPlayerHealed(nbt.getBoolean("PlayerHealed")); + } + if(nbt.hasUUID("PlayerHealed")) { + this.setHealedPlayer(nbt.getUUID("HealedPlayer")); + } + } + + @Override + public boolean isPlayerHealed() { + return (((AbstractPiglin) (Object) this).getEntityData().get(DATA_FLAGS_ID) & 1) != 0; + } + + @Override + public void setPlayerHealed(boolean healed) { + SynchedEntityData entityData = ((AbstractPiglin) (Object) this).getEntityData(); + byte b0 = entityData.get(DATA_FLAGS_ID); + if (healed) { + entityData.set(DATA_FLAGS_ID, (byte)(b0 | 1)); + } else { + entityData.set(DATA_FLAGS_ID, (byte)(b0 & -2)); + } + } + + @Override @NotNull + public UUID getHealedPlayer() { + return this.healedPlayer; + } + + @Override + public void setHealedPlayer(@Nullable UUID player) { + this.healedPlayer = Objects.requireNonNullElse(player, Util.NIL_UUID); + } +} 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..441102f6 --- /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.common.entities.mobs.*; +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/BlockEntityTypeAccess.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/BlockEntityTypeAccess.java new file mode 100644 index 00000000..aa0f5472 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/BlockEntityTypeAccess.java @@ -0,0 +1,19 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntityType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Set; + +@Mixin(BlockEntityType.class) +public interface BlockEntityTypeAccess { + @Accessor("validBlocks") + Set ec_getValidBlocks(); + + @Accessor("validBlocks") + @Mutable + void ec_setValidBlocks(Set blocks); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/ClientPacketListenerMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/ClientPacketListenerMixin.java new file mode 100644 index 00000000..6e53883c --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/ClientPacketListenerMixin.java @@ -0,0 +1,32 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.crafting.menu.PiglinCuteyMerchantMenu; +import net.minecraft.client.Minecraft; +import net.minecraft.client.multiplayer.ClientPacketListener; +import net.minecraft.network.protocol.game.ClientboundMerchantOffersPacket; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.item.trading.MerchantOffers; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(ClientPacketListener.class) +public class ClientPacketListenerMixin { + @Shadow @Final + private Minecraft minecraft; + + @Inject(method = "handleMerchantOffers", at = @At(value = "TAIL")) + public void handlePiglinCuteyMerchantOffers(ClientboundMerchantOffersPacket packet, CallbackInfo ci) { + AbstractContainerMenu menu = this.minecraft.player.containerMenu; + if (packet.getContainerId() == menu.containerId && menu instanceof PiglinCuteyMerchantMenu merchantMenu) { + merchantMenu.setOffers(new MerchantOffers(packet.getOffers().createTag())); + merchantMenu.setXp(packet.getVillagerXp()); + merchantMenu.setMerchantLevel(packet.getVillagerLevel()); + merchantMenu.setShowProgressBar(packet.showProgress()); + merchantMenu.setCanRestock(packet.canRestock()); + } + } +} 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/IronGolemEntityMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/IronGolemEntityMixin.java new file mode 100644 index 00000000..88e8d346 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/IronGolemEntityMixin.java @@ -0,0 +1,36 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.entities.goals.OfferFlowerToPlayerGoal; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.animal.IronGolem; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +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; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(IronGolem.class) +public class IronGolemEntityMixin { + @Inject(method = "registerGoals", at = @At(value = "TAIL")) + protected void registerOfferPlayerFlowerGoal(CallbackInfo info) { + IronGolem current = (IronGolem)(Object)this; + current.goalSelector.addGoal(6, new OfferFlowerToPlayerGoal(current)); + } + + @Inject(method = "mobInteract", at = @At(value = "HEAD"), cancellable = true) + protected void tryGetFlower(Player player, InteractionHand hand, CallbackInfoReturnable cir) { + IronGolem current = (IronGolem)(Object)this; + ItemStack itemstack = player.getItemInHand(hand); + if(itemstack.isEmpty() && current.getOfferFlowerTick() > 0 && player.hasEffect(MobEffects.HERO_OF_THE_VILLAGE)) { + current.offerFlower(false); + player.setItemInHand(hand, new ItemStack(Items.POPPY, 1)); + cir.setReturnValue(InteractionResult.sidedSuccess(current.level.isClientSide)); + cir.cancel(); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/LocalPlayerMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/LocalPlayerMixin.java new file mode 100644 index 00000000..bebe6f2f --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/LocalPlayerMixin.java @@ -0,0 +1,47 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.PlayerRideableFlying; +import com.hexagram2021.emeraldcraft.common.register.ECEntityActionPacketActions; +import net.minecraft.client.multiplayer.ClientPacketListener; +import net.minecraft.client.player.Input; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.network.protocol.game.ServerboundPlayerCommandPacket; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(LocalPlayer.class) +public class LocalPlayerMixin { + @Shadow + private int jumpRidingTicks; + + @Shadow + public Input input; + + @Shadow @Final + public ClientPacketListener connection; + + @Inject(method = "aiStep", at = @At(value = "INVOKE", shift = At.Shift.BEFORE, target = "Lnet/minecraft/client/player/AbstractClientPlayer;aiStep()V")) + public void handlePlayerFlyable(CallbackInfo ci) { + LocalPlayer current = (LocalPlayer)(Object)this; + if(current.isPassenger() && current.getVehicle() instanceof PlayerRideableFlying flyable && flyable.canFly()) { + if(this.input.jumping) { + if(this.jumpRidingTicks < 40) { + ++this.jumpRidingTicks; + } + } else { + if(current.getVehicle().isOnGround()) { + if(this.jumpRidingTicks < 12) { + this.jumpRidingTicks = 12; + } + } else if(this.jumpRidingTicks > 0) { + --this.jumpRidingTicks; + } + } + this.connection.send(new ServerboundPlayerCommandPacket(current, ECEntityActionPacketActions.RIDING_FLY, this.jumpRidingTicks)); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/MapDecorationTypeMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/MapDecorationTypeMixin.java new file mode 100644 index 00000000..df33f612 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/MapDecorationTypeMixin.java @@ -0,0 +1,41 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import net.minecraft.world.level.saveddata.maps.MapDecoration; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.Arrays; + +import static com.hexagram2021.emeraldcraft.common.register.ECMapDecorationTypes.*; + +@Mixin(MapDecoration.Type.class) +public class MapDecorationTypeMixin { + @SuppressWarnings("unused") + MapDecorationTypeMixin(String name, int ord, boolean renderedOnFrame, boolean trackCount) { + throw new UnsupportedOperationException("Replaced by Mixin"); + } + + @SuppressWarnings("unused") + MapDecorationTypeMixin(String name, int ord, boolean renderedOnFrame, int MapColor, boolean trackCount) { + throw new UnsupportedOperationException("Replaced by Mixin"); + } + + @Final + @Shadow + @Mutable + private static MapDecoration.Type[] $VALUES; + + @Inject(method = "()V", at = @At(value = "FIELD", shift = At.Shift.AFTER, target = "Lnet/minecraft/world/level/saveddata/maps/MapDecoration$Type;$VALUES:[Lnet/minecraft/world/level/saveddata/maps/MapDecoration$Type;")) + private static void ec_injectEnum(CallbackInfo ci) { + int ordinal = $VALUES.length; + $VALUES = Arrays.copyOf($VALUES, ordinal + 2); + + SHELTER = $VALUES[ordinal] = (MapDecoration.Type)(Object)new MapDecorationTypeMixin("SHELTER", ordinal, true, 0xa81228, false); + ENTRENCHMENT = $VALUES[ordinal + 1] = (MapDecoration.Type)(Object)new MapDecorationTypeMixin("ENTRENCHMENT", ordinal + 1, true, 0xd606d6, false); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/MapInstanceMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/MapInstanceMixin.java new file mode 100644 index 00000000..5e62496c --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/MapInstanceMixin.java @@ -0,0 +1,34 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.client.MapCustomIcons; +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.gui.MapRenderer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.world.level.saveddata.maps.MapDecoration; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(MapRenderer.MapInstance.class) +public class MapInstanceMixin { + private RenderType bufferDecorationRenderType = null; + + @Redirect(method = "draw", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/saveddata/maps/MapDecoration;getImage()B")) + private byte getImageAndUpdateBuffer(MapDecoration instance) { + MapDecoration.Type type = instance.getType(); + this.bufferDecorationRenderType = MapCustomIcons.RENDER_TYPES.get(type); + ECLogger.debug("Before: " + type.name()); + return MapCustomIcons.ORDINARIES.getOrDefault(type, instance.getImage()); + } + + @Redirect(method = "draw", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/MultiBufferSource;getBuffer(Lnet/minecraft/client/renderer/RenderType;)Lcom/mojang/blaze3d/vertex/VertexConsumer;", ordinal = 1)) + private VertexConsumer getVertexConsumerForCustomIcons(MultiBufferSource instance, RenderType renderType) { + ECLogger.debug("After: " + (this.bufferDecorationRenderType == null)); + if(this.bufferDecorationRenderType == null) { + return instance.getBuffer(renderType); + } + return instance.getBuffer(this.bufferDecorationRenderType); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/MapItemSavedDataMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/MapItemSavedDataMixin.java new file mode 100644 index 00000000..3887f64c --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/MapItemSavedDataMixin.java @@ -0,0 +1,30 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.register.ECMapDecorationTypes; +import net.minecraft.world.level.saveddata.maps.MapDecoration; +import net.minecraft.world.level.saveddata.maps.MapItemSavedData; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.Map; + +@Mixin(MapItemSavedData.class) +public class MapItemSavedDataMixin { + @Shadow @Final + Map decorations; + + @Inject(method = "isExplorationMap", at = @At(value = "HEAD"), cancellable = true) + public void checkIsECMapDecoration(CallbackInfoReturnable cir) { + for(MapDecoration decoration : this.decorations.values()) { + if(ECMapDecorationTypes.SHELTER == decoration.getType() || ECMapDecorationTypes.ENTRENCHMENT == decoration.getType()) { + cir.setReturnValue(Boolean.TRUE); + cir.cancel(); + return; + } + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/MobEntityMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/MobEntityMixin.java new file mode 100644 index 00000000..4eac21cc --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/MobEntityMixin.java @@ -0,0 +1,81 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.config.ECCommonConfig; +import com.hexagram2021.emeraldcraft.common.register.ECItems; +import com.hexagram2021.emeraldcraft.common.util.Convertible; +import com.hexagram2021.emeraldcraft.common.util.PlayerHealable; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.monster.Phantom; +import net.minecraft.world.entity.monster.ZombifiedPiglin; +import net.minecraft.world.entity.monster.piglin.Piglin; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +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.CallbackInfoReturnable; + +@Mixin(Mob.class) +public class MobEntityMixin { + @Inject(method = "mobInteract", at = @At(value = "HEAD"), cancellable = true) + protected void tryCureMobsAndGetItems(Player player, InteractionHand hand, CallbackInfoReturnable cir) { + ItemStack itemstack = player.getItemInHand(hand); + Mob current = (Mob)(Object)this; + if (current instanceof ZombifiedPiglin zombifiedPiglin && ECCommonConfig.ENABLE_CURE_ZOMBIFIED_PIGLIN.get()) { + if (itemstack.is(Items.GOLDEN_CARROT) && zombifiedPiglin.hasEffect(MobEffects.HUNGER)) { + if (!player.getAbilities().instabuild) { + itemstack.shrink(1); + } + + if (!zombifiedPiglin.level.isClientSide) { + ((Convertible)zombifiedPiglin).startConverting(player.getUUID(), zombifiedPiglin.getRandom().nextInt(2401) + 3600); + } + + cir.setReturnValue(InteractionResult.SUCCESS); + cir.cancel(); + return; + } + cir.setReturnValue(InteractionResult.PASS); + cir.cancel(); + } else if(current instanceof Phantom phantom && ECCommonConfig.ENABLE_CURE_PHANTOM.get()) { + if(itemstack.is(ECItems.GOLDEN_PEACH.get()) && phantom.hasEffect(MobEffects.GLOWING)) { + if (!player.getAbilities().instabuild) { + itemstack.shrink(1); + } + + if (!phantom.level.isClientSide) { + ((Convertible)phantom).startConverting(player.getUUID(), phantom.getRandom().nextInt(2401) + 3600); + } + + cir.setReturnValue(InteractionResult.SUCCESS); + cir.cancel(); + return; + } + cir.setReturnValue(InteractionResult.PASS); + cir.cancel(); + } else if(current instanceof Piglin piglin) { + PlayerHealable playerHealable = (PlayerHealable) piglin; + if(itemstack.isEmpty() && playerHealable.isPlayerHealed() && playerHealable.getHealedPlayer().equals(player.getUUID())) { + if (!piglin.level.isClientSide) { + for(int i = 0; i < piglin.getInventory().getContainerSize(); ++i) { + ItemStack invItemStack = piglin.getInventory().getItem(i).copy(); + if(!invItemStack.isEmpty()) { + player.setItemInHand(hand, invItemStack); + piglin.getInventory().removeItem(i, invItemStack.getCount()); + + cir.setReturnValue(InteractionResult.SUCCESS); + cir.cancel(); + return; + } + } + } + } + cir.setReturnValue(InteractionResult.PASS); + cir.cancel(); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/PhantomEntityMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/PhantomEntityMixin.java new file mode 100644 index 00000000..5c9734d3 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/PhantomEntityMixin.java @@ -0,0 +1,145 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.entities.mobs.MantaEntity; +import com.hexagram2021.emeraldcraft.common.register.ECEntities; +import com.hexagram2021.emeraldcraft.common.util.Convertible; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.monster.Phantom; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.event.ForgeEventFactory; +import org.jetbrains.annotations.Nullable; +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; + +import java.util.UUID; + +@Mixin(Phantom.class) +public class PhantomEntityMixin implements Convertible { + private int phantomConversionTime; + @Nullable + private UUID conversionStarter; + + @Inject(method = "defineSynchedData", at = @At(value = "TAIL")) + public void definePhantomCureData(CallbackInfo ci) { + ((Phantom)(Object)this).getEntityData().define(Convertible.DATA_PHANTOM_CONVERTING_ID, false); + } + + @Override + public int getConversionProgress() { + Phantom current = (Phantom)(Object)this; + int ret = 1; + if (current.getRandom().nextFloat() < 0.01F) { + int cnt = 0; + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + int x = (int)current.getX(); + int y = (int)current.getY(); + int z = (int)current.getZ(); + + for(int dx = x - 4; dx < x + 4 && cnt < 15; ++dx) { + for(int dy = y - 4; dy < y + 4 && cnt < 15; ++dy) { + for(int dz = z - 4; dz < z + 4 && cnt < 15; ++dz) { + BlockState blockstate = current.level.getBlockState(mutable.set(dx, dy, dz)); + if (blockstate.getLightEmission(current.level, mutable) > 8) { + if (current.getRandom().nextBoolean()) { + ++ret; + } + + ++cnt; + } + } + } + } + } + + return ret; + } + + @Override + public int getConversionRemainTime() { + return this.phantomConversionTime; + } + + @Override + public void setConversionRemainTime(int time) { + this.phantomConversionTime = time; + } + + @Override + public void decreaseConversionRemainTime(int dec) { + this.phantomConversionTime -= dec; + } + + @Override + public void startConverting(@Nullable UUID player, int time) { + this.conversionStarter = player; + this.phantomConversionTime = time; + + Phantom current = (Phantom)(Object)this; + current.getEntityData().set(DATA_PHANTOM_CONVERTING_ID, true); + current.removeEffect(MobEffects.GLOWING); + current.addEffect(new MobEffectInstance(MobEffects.DAMAGE_BOOST, time, Math.min(current.level.getDifficulty().getId() - 1, 0))); + current.playSound(SoundEvents.ZOMBIE_VILLAGER_CURE); + } + + @Override + public void finishConversion(ServerLevel level) { + Phantom current = (Phantom)(Object)this; + MantaEntity manta = current.convertTo(ECEntities.MANTA, true); + if(manta == null) { + return; + } + + if (this.conversionStarter != null) { + Player player = level.getPlayerByUUID(this.conversionStarter); + if(player != null) { + manta.cureFrom(current, player); + } + } + + manta.addEffect(new MobEffectInstance(MobEffects.CONFUSION, 200, 0)); + manta.playSound(SoundEvents.ZOMBIE_VILLAGER_CONVERTED); + ForgeEventFactory.onLivingConvert(current, manta); + } + + @Override + public boolean isConverting() { + return ((Phantom)(Object)this).getEntityData().get(DATA_PHANTOM_CONVERTING_ID); + } + + @Inject(method = "tick", at = @At(value = "HEAD")) + public void tickConverting(CallbackInfo ci) { + Phantom current = (Phantom)(Object)this; + if (!current.level.isClientSide && current.isAlive() && this.isConverting()) { + int i = this.getConversionProgress(); + this.decreaseConversionRemainTime(i); + if (this.getConversionRemainTime() <= 0 && + ForgeEventFactory.canLivingConvert(current, ECEntities.MANTA, this::setConversionRemainTime)) { + this.finishConversion((ServerLevel) current.level); + } + } + } + + @Inject(method = "addAdditionalSaveData", at = @At(value = "TAIL")) + public void addConversionData(CompoundTag nbt, CallbackInfo ci) { + nbt.putInt("ConversionTime", this.isConverting() ? this.phantomConversionTime : -1); + if (this.conversionStarter != null) { + nbt.putUUID("ConversionPlayer", this.conversionStarter); + } + } + + @Inject(method = "readAdditionalSaveData", at = @At(value = "TAIL")) + public void readConversionData(CompoundTag nbt, CallbackInfo ci) { + if (nbt.contains("ConversionTime", Tag.TAG_ANY_NUMERIC) && nbt.getInt("ConversionTime") > -1) { + this.startConverting(nbt.hasUUID("ConversionPlayer") ? nbt.getUUID("ConversionPlayer") : null, nbt.getInt("ConversionTime")); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/PiglinAiMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/PiglinAiMixin.java new file mode 100644 index 00000000..134081d6 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/PiglinAiMixin.java @@ -0,0 +1,60 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.util.PlayerHealable; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.memory.MemoryModuleType; +import net.minecraft.world.entity.ai.sensing.Sensor; +import net.minecraft.world.entity.monster.piglin.AbstractPiglin; +import net.minecraft.world.entity.monster.piglin.Piglin; +import net.minecraft.world.entity.monster.piglin.PiglinAi; +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.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.Optional; + +@Mixin(PiglinAi.class) +public class PiglinAiMixin { + @Inject(method = "setAngerTarget", at = @At(value = "HEAD"), cancellable = true) + private static void ignoreIfPlayerHealed(AbstractPiglin piglin, LivingEntity livingEntity, CallbackInfo ci) { + if(piglin instanceof PlayerHealable healable) { + if(healable.isPlayerHealed() && livingEntity.getType() == EntityType.PLAYER) { + ci.cancel(); + } + } + } + + @Redirect(method = "findNearestValidAttackTarget", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/ai/sensing/Sensor;isEntityAttackableIgnoringLineOfSight(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/LivingEntity;)Z", ordinal = 0)) + private static boolean checkAngryIfPlayerHealed(LivingEntity piglin, LivingEntity livingEntity) { + if(piglin instanceof PlayerHealable healable) { + if(healable.isPlayerHealed() && livingEntity.getType() == EntityType.PLAYER) { + piglin.getBrain().setMemory(MemoryModuleType.ANGRY_AT, Optional.empty()); + return false; + } + } + return Sensor.isEntityAttackableIgnoringLineOfSight(piglin, livingEntity); + } + + @Redirect(method = "findNearestValidAttackTarget", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/ai/sensing/Sensor;isEntityAttackable(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/LivingEntity;)Z", ordinal = 0)) + private static boolean checkNotWearingGoldIfPlayerHealed(LivingEntity piglin, LivingEntity livingEntity) { + if(piglin instanceof PlayerHealable healable) { + if(healable.isPlayerHealed() && livingEntity.getType() == EntityType.PLAYER) { + piglin.getBrain().setMemory(MemoryModuleType.NEAREST_TARGETABLE_PLAYER_NOT_WEARING_GOLD, Optional.empty()); + return false; + } + } + return Sensor.isEntityAttackableIgnoringLineOfSight(piglin, livingEntity); + } + + @Inject(method = "wasHurtBy", at = @At(value = "HEAD"), cancellable = true) + private static void ignoreHurtByPlayerIfHealed(Piglin piglin, LivingEntity livingEntity, CallbackInfo ci) { + if(piglin instanceof PlayerHealable healable) { + if(healable.isPlayerHealed() && livingEntity.getType() == EntityType.PLAYER) { + ci.cancel(); + } + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/PiglinBruteAiMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/PiglinBruteAiMixin.java new file mode 100644 index 00000000..c470b80b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/PiglinBruteAiMixin.java @@ -0,0 +1,38 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.util.PlayerHealable; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.memory.MemoryModuleType; +import net.minecraft.world.entity.monster.piglin.AbstractPiglin; +import net.minecraft.world.entity.monster.piglin.PiglinBrute; +import net.minecraft.world.entity.monster.piglin.PiglinBruteAi; +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.Redirect; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.Optional; + +@Mixin(PiglinBruteAi.class) +public class PiglinBruteAiMixin { + @Redirect(method = "findNearestValidAttackTarget", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/monster/piglin/PiglinBruteAi;getTargetIfWithinRange(Lnet/minecraft/world/entity/monster/piglin/AbstractPiglin;Lnet/minecraft/world/entity/ai/memory/MemoryModuleType;)Ljava/util/Optional;")) + private static Optional ignoreIfPlayerHealed(AbstractPiglin piglin, MemoryModuleType type) { + if(piglin instanceof PlayerHealable healable) { + if(healable.isPlayerHealed()) { + return Optional.empty(); + } + } + return piglin.getBrain().getMemory(type).filter((entity) -> entity.closerThan(piglin, 12.0D)); + } + + @Inject(method = "wasHurtBy", at = @At(value = "HEAD"), cancellable = true) + private static void ignoreHurtByPlayerIfHealed(PiglinBrute piglin, LivingEntity livingEntity, CallbackInfo ci) { + if(piglin instanceof PlayerHealable healable) { + if(healable.isPlayerHealed() && livingEntity.getType() == EntityType.PLAYER) { + ci.cancel(); + } + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/PiglinSpecificSensorMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/PiglinSpecificSensorMixin.java new file mode 100644 index 00000000..faff997b --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/PiglinSpecificSensorMixin.java @@ -0,0 +1,19 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.util.PlayerHealable; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.sensing.PiglinSpecificSensor; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(PiglinSpecificSensor.class) +public class PiglinSpecificSensorMixin { + @Redirect(method = "doTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;canAttack(Lnet/minecraft/world/entity/LivingEntity;)Z")) + private boolean ignoreIfPlayerHealed(LivingEntity instance, LivingEntity target) { + if(instance instanceof PlayerHealable healable && healable.isPlayerHealed()) { + return false; + } + return instance.canAttack(target); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/RecipeManagerAccess.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/RecipeManagerAccess.java new file mode 100644 index 00000000..80804306 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/RecipeManagerAccess.java @@ -0,0 +1,19 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.RecipeManager; +import net.minecraft.world.item.crafting.RecipeType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Map; + +@Mixin(RecipeManager.class) +public interface RecipeManagerAccess { + @Accessor("recipes") + Map, Map>> ec_getRecipes(); + + @Accessor("recipes") + void ec_setRecipes(Map, Map>> newRecipes); +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/ServerPlayNetHandlerMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/ServerPlayNetHandlerMixin.java new file mode 100644 index 00000000..c5f73f2d --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/ServerPlayNetHandlerMixin.java @@ -0,0 +1,49 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.crafting.menu.PiglinCuteyMerchantMenu; +import com.hexagram2021.emeraldcraft.common.entities.mobs.PlayerRideableFlying; +import com.hexagram2021.emeraldcraft.common.util.ECLogger; +import net.minecraft.network.protocol.game.ServerboundPlayerCommandPacket; +import net.minecraft.network.protocol.game.ServerboundSelectTradePacket; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.network.ServerGamePacketListenerImpl; +import net.minecraft.util.Mth; +import net.minecraft.world.inventory.AbstractContainerMenu; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import static com.hexagram2021.emeraldcraft.common.register.ECEntityActionPacketActions.*; + +@Mixin(ServerGamePacketListenerImpl.class) +public class ServerPlayNetHandlerMixin { + @Shadow + public ServerPlayer player; + + @Inject(method = "handlePlayerCommand", at = @At(value = "INVOKE", shift = At.Shift.AFTER, target = "Lnet/minecraft/server/level/ServerPlayer;resetLastActionTime()V"), cancellable = true) + public void handleMantaCommand(ServerboundPlayerCommandPacket packet, CallbackInfo ci) { + if(packet.getAction() == RIDING_FLY) { + if (this.player.getVehicle() instanceof PlayerRideableFlying flyable) { + flyable.fly(Mth.clamp(packet.getData(), 0, 40)); + } + ci.cancel(); + } + } + + @Inject(method = "handleSelectTrade", at = @At(value = "TAIL")) + public void handleSelectPiglinCuteyTrade(ServerboundSelectTradePacket packet, CallbackInfo ci) { + int item = packet.getItem(); + AbstractContainerMenu menu = this.player.containerMenu; + if (menu instanceof PiglinCuteyMerchantMenu merchantMenu) { + if (!merchantMenu.stillValid(this.player)) { + ECLogger.debug("Player {} interacted with invalid menu {}", this.player, merchantMenu); + return; + } + + merchantMenu.setSelectionHint(item); + merchantMenu.tryMoveItems(item); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/ServerPlayerMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/ServerPlayerMixin.java new file mode 100644 index 00000000..22f9b43e --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/ServerPlayerMixin.java @@ -0,0 +1,36 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.util.PlayerHealable; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.targeting.TargetingConditions; +import net.minecraft.world.entity.monster.piglin.AbstractPiglin; +import net.minecraft.world.entity.monster.piglin.PiglinAi; +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.CallbackInfoReturnable; + +import java.util.List; + +@Mixin(ServerPlayer.class) +public class ServerPlayerMixin { + @Inject(method = "hurt", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/player/Player;hurt(Lnet/minecraft/world/damagesource/DamageSource;F)Z", shift = At.Shift.BEFORE)) + public void makeHealedPiglinAngryAt(DamageSource damageSource, float value, CallbackInfoReturnable cir) { + Entity entity = damageSource.getEntity(); + if(entity instanceof LivingEntity livingEntity && !(entity instanceof AbstractPiglin)) { + ServerPlayer current = (ServerPlayer)(Object)this; + List piglins = current.level.getNearbyEntities( + AbstractPiglin.class, TargetingConditions.forNonCombat().range(64.0D), current, current.getBoundingBox().inflate(64.0D, 16.0D, 64.0D) + ); + for(AbstractPiglin piglin: piglins) { + PlayerHealable playerHealable = (PlayerHealable)piglin; + if(playerHealable.isPlayerHealed() && playerHealable.getHealedPlayer() == current.getUUID()) { + PiglinAi.maybeRetaliate(piglin, livingEntity); + } + } + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/ServerboundPlayerCommandPacketActionMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/ServerboundPlayerCommandPacketActionMixin.java new file mode 100644 index 00000000..9c23500f --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/ServerboundPlayerCommandPacketActionMixin.java @@ -0,0 +1,34 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import net.minecraft.network.protocol.game.ServerboundPlayerCommandPacket; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.Arrays; + +import static com.hexagram2021.emeraldcraft.common.register.ECEntityActionPacketActions.*; + +@Mixin(ServerboundPlayerCommandPacket.Action.class) +public class ServerboundPlayerCommandPacketActionMixin { + @SuppressWarnings("unused") + ServerboundPlayerCommandPacketActionMixin(String name, int ord) { + throw new UnsupportedOperationException("Replaced by Mixin"); + } + + @Final + @Shadow + @Mutable + private static ServerboundPlayerCommandPacket.Action[] $VALUES; + + @Inject(method = "()V", at = @At(value = "FIELD", shift = At.Shift.AFTER, target = "Lnet/minecraft/network/protocol/game/ServerboundPlayerCommandPacket$Action;$VALUES:[Lnet/minecraft/network/protocol/game/ServerboundPlayerCommandPacket$Action;")) + private static void ec_injectEnum(CallbackInfo ci) { + int ordinal = $VALUES.length; + $VALUES = Arrays.copyOf($VALUES, ordinal + 1); + RIDING_FLY = $VALUES[ordinal] = (ServerboundPlayerCommandPacket.Action)(Object)new ServerboundPlayerCommandPacketActionMixin("RIDING_FLY", ordinal); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/SingleJigsawAccess.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/SingleJigsawAccess.java new file mode 100644 index 00000000..9d085c2a --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/SingleJigsawAccess.java @@ -0,0 +1,21 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.mojang.datafixers.util.Either; +import net.minecraft.core.Holder; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.structure.pools.LegacySinglePoolElement; +import net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureProcessorList; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +@Mixin(LegacySinglePoolElement.class) +public interface SingleJigsawAccess { + @Invoker("") + static LegacySinglePoolElement construct(Either pool, + Holder structure, + StructureTemplatePool.Projection projection) { + throw new UnsupportedOperationException("Replaced by Mixin"); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/StructureSetMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/StructureSetMixin.java new file mode 100644 index 00000000..bb503160 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/StructureSetMixin.java @@ -0,0 +1,35 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.google.common.collect.ImmutableList; +import com.hexagram2021.emeraldcraft.common.util.ListAppendable; +import net.minecraft.world.level.levelgen.structure.StructureSet; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.Shadow; + +import java.util.Iterator; +import java.util.List; + +@Mixin(StructureSet.class) +public class StructureSetMixin implements ListAppendable { + @Mutable + @Final + @Shadow + private List structures; + + @Override + public List append(StructureSet.StructureSelectionEntry entry) { + return this.structures = ImmutableList.builder().addAll(this.structures).add(entry).build(); + } + + @Override + public List appendAll(Iterator entries) { + return this.structures = ImmutableList.builder().addAll(this.structures).addAll(entries).build(); + } + + @Override + public List appendAll(Iterable entries) { + return this.structures = ImmutableList.builder().addAll(this.structures).addAll(entries).build(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/VillagePoolsMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/VillagePoolsMixin.java new file mode 100644 index 00000000..094a60e4 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/VillagePoolsMixin.java @@ -0,0 +1,16 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.world.pools.SwampVillagePools; +import net.minecraft.data.worldgen.VillagePools; +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(VillagePools.class) +public class VillagePoolsMixin { + @Inject(method = "bootstrap", at = @At(value = "TAIL")) + private static void addSwampVillage(CallbackInfo info) { + SwampVillagePools.bootstrap(); + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/WorkAtPoiMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/WorkAtPoiMixin.java new file mode 100644 index 00000000..3d56f779 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/WorkAtPoiMixin.java @@ -0,0 +1,58 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.blocks.entity.ContinuousMinerBlockEntity; +import com.hexagram2021.emeraldcraft.common.register.ECBlocks; +import com.hexagram2021.emeraldcraft.common.world.village.Villages; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ai.behavior.WorkAtPoi; +import net.minecraft.world.entity.ai.memory.MemoryModuleType; +import net.minecraft.world.entity.npc.Villager; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraft.world.level.block.state.BlockState; +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; + +import java.util.List; + +import static com.hexagram2021.emeraldcraft.common.util.RegistryHelper.getRegistryName; + +@Mixin(WorkAtPoi.class) +public class WorkAtPoiMixin { + @Inject(method = "useWorkstation", at = @At(value = "HEAD"), cancellable = true) + protected void specialProfessionUseWorkstation(ServerLevel level, Villager villagerWithProfession, CallbackInfo ci) { + ResourceLocation professionID = getRegistryName(villagerWithProfession.getVillagerData().getProfession()); + if(Villages.ASTROLOGIST.equals(professionID)) { + if(villagerWithProfession.getRandom().nextInt(4) == 0) { + List players = level.getPlayers(player -> villagerWithProfession.distanceToSqr(player) < 1024.0D && player.hasEffect(MobEffects.HERO_OF_THE_VILLAGE)); + List villagers = level.getEntities(EntityType.VILLAGER, entity -> villagerWithProfession.distanceToSqr(entity) < 1024.0D); + for (ServerPlayer player : players) { + player.heal(1.0F); + } + for (Villager villager : villagers) { + villager.heal(1.0F); + } + } + ci.cancel(); + } else if(Villages.GEOLOGIST.equals(professionID)) { + if(villagerWithProfession.getRandom().nextInt(4) == 0) { + villagerWithProfession.getBrain().getMemory(MemoryModuleType.JOB_SITE).ifPresent(globalPos -> { + BlockPos blockPos = globalPos.pos(); + BlockState blockState = level.getBlockState(blockPos); + BlockEntity blockEntity = level.getBlockEntity(blockPos); + if (blockState.is(ECBlocks.WorkStation.CONTINUOUS_MINER.get()) && + blockEntity instanceof ContinuousMinerBlockEntity continuousMinerBlockEntity) { + continuousMinerBlockEntity.dispenseFrom(blockState, level, blockPos, level.getRandom()); + } + }); + } + ci.cancel(); + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/ZombieEntityMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/ZombieEntityMixin.java new file mode 100644 index 00000000..07128e01 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/ZombieEntityMixin.java @@ -0,0 +1,40 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.util.Convertible; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.monster.Zombie; +import net.minecraft.world.entity.monster.ZombifiedPiglin; +import net.minecraftforge.event.ForgeEventFactory; +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(Zombie.class) +public class ZombieEntityMixin { + @Inject(method = "defineSynchedData", at = @At(value = "TAIL")) + public void defineZombifiedPiglinData(CallbackInfo ci) { + Zombie current = (Zombie)(Object)this; + if(current instanceof ZombifiedPiglin zombifiedPiglin) { + zombifiedPiglin.getEntityData().define(Convertible.DATA_PIGLIN_CONVERTING_ID, false); + } + } + + @Inject(method = "tick", at = @At(value = "HEAD")) + public void tickConverting(CallbackInfo ci) { + Zombie current = (Zombie)(Object)this; + + if(current instanceof ZombifiedPiglin zombifiedPiglin) { + Convertible convertible = (Convertible)zombifiedPiglin; + if (!zombifiedPiglin.level.isClientSide && zombifiedPiglin.isAlive() && convertible.isConverting()) { + int i = convertible.getConversionProgress(); + convertible.decreaseConversionRemainTime(i); + if (convertible.getConversionRemainTime() <= 0 && + ForgeEventFactory.canLivingConvert(zombifiedPiglin, EntityType.PIGLIN, convertible::setConversionRemainTime)) { + convertible.finishConversion((ServerLevel) zombifiedPiglin.level); + } + } + } + } +} diff --git a/src/main/java/com/hexagram2021/emeraldcraft/mixin/ZombifiedPiglinEntityMixin.java b/src/main/java/com/hexagram2021/emeraldcraft/mixin/ZombifiedPiglinEntityMixin.java new file mode 100644 index 00000000..3e2280e6 --- /dev/null +++ b/src/main/java/com/hexagram2021/emeraldcraft/mixin/ZombifiedPiglinEntityMixin.java @@ -0,0 +1,142 @@ +package com.hexagram2021.emeraldcraft.mixin; + +import com.hexagram2021.emeraldcraft.common.config.ECCommonConfig; +import com.hexagram2021.emeraldcraft.common.register.ECTriggers; +import com.hexagram2021.emeraldcraft.common.util.Convertible; +import com.hexagram2021.emeraldcraft.common.util.PlayerHealable; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.Tag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.tags.BlockTags; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.monster.ZombifiedPiglin; +import net.minecraft.world.entity.monster.piglin.AbstractPiglin; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.event.ForgeEventFactory; +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; + +import javax.annotation.Nullable; +import java.util.UUID; + +@Mixin(ZombifiedPiglin.class) +public class ZombifiedPiglinEntityMixin implements Convertible { + private int piglinConversionTime; + @Nullable + private UUID conversionStarter; + + @Override + public int getConversionProgress() { + ZombifiedPiglin current = (ZombifiedPiglin)(Object)this; + int ret = 1; + if (current.getRandom().nextFloat() < 0.01F) { + int cnt = 0; + BlockPos.MutableBlockPos mutable = new BlockPos.MutableBlockPos(); + int x = (int)current.getX(); + int y = (int)current.getY(); + int z = (int)current.getZ(); + + for(int dx = x - 4; dx < x + 4 && cnt < 15; ++dx) { + for(int dy = y - 4; dy < y + 4 && cnt < 15; ++dy) { + for(int dz = z - 4; dz < z + 4 && cnt < 15; ++dz) { + BlockState blockstate = current.level.getBlockState(mutable.set(dx, dy, dz)); + if (blockstate.is(BlockTags.GUARDED_BY_PIGLINS)) { + if (current.getRandom().nextBoolean()) { + ++ret; + } + + ++cnt; + } + } + } + } + } + + return ret; + } + + @Override + public int getConversionRemainTime() { + return this.piglinConversionTime; + } + + @Override + public void setConversionRemainTime(int time) { + this.piglinConversionTime = time; + } + + @Override + public void decreaseConversionRemainTime(int dec) { + this.piglinConversionTime -= dec; + } + + @Override + public void startConverting(@Nullable UUID player, int time) { + this.conversionStarter = player; + this.piglinConversionTime = time; + + ZombifiedPiglin current = (ZombifiedPiglin)(Object)this; + current.getEntityData().set(DATA_PIGLIN_CONVERTING_ID, true); + current.removeEffect(MobEffects.HUNGER); + current.addEffect(new MobEffectInstance(MobEffects.DAMAGE_BOOST, time, Math.min(current.level.getDifficulty().getId() - 1, 0))); + current.playSound(SoundEvents.ZOMBIE_VILLAGER_CURE); + } + + @Override + public void finishConversion(ServerLevel level) { + ZombifiedPiglin current = (ZombifiedPiglin)(Object)this; + AbstractPiglin piglin; + if(current.getRandom().nextInt(ECCommonConfig.ZOMBIFIED_PIGLIN_CONVERT_TO_PIGLIN_BRUTE_POSSIBILITY_INV.get()) == 0) { + piglin = current.convertTo(EntityType.PIGLIN_BRUTE, true); + } else { + piglin = current.convertTo(EntityType.PIGLIN, true); + } + if(piglin == null) { + return; + } + + piglin.setImmuneToZombification(true); + piglin.setCanPickUpLoot(true); + piglin.setPersistenceRequired(); + PlayerHealable playerHealable = (PlayerHealable)piglin; + playerHealable.setPlayerHealed(true); + playerHealable.setHealedPlayer(this.conversionStarter); + + if (this.conversionStarter != null) { + Player player = level.getPlayerByUUID(this.conversionStarter); + ECTriggers.CURED_ZOMBIFIED_PIGLIN.trigger((ServerPlayer) player, current, piglin); + } + + piglin.addEffect(new MobEffectInstance(MobEffects.CONFUSION, 200, 0)); + piglin.playSound(SoundEvents.ZOMBIE_VILLAGER_CONVERTED); + ForgeEventFactory.onLivingConvert(current, piglin); + } + + @Override + public boolean isConverting() { + return ((ZombifiedPiglin)(Object)this).getEntityData().get(DATA_PIGLIN_CONVERTING_ID); + } + + @Inject(method = "addAdditionalSaveData", at = @At(value = "TAIL")) + public void addConversionData(CompoundTag nbt, CallbackInfo ci) { + nbt.putInt("ConversionTime", this.isConverting() ? this.piglinConversionTime : -1); + if (this.conversionStarter != null) { + nbt.putUUID("ConversionPlayer", this.conversionStarter); + } + } + + @Inject(method = "readAdditionalSaveData", at = @At(value = "TAIL")) + public void readConversionData(CompoundTag nbt, CallbackInfo ci) { + if (nbt.contains("ConversionTime", Tag.TAG_ANY_NUMERIC) && nbt.getInt("ConversionTime") > -1) { + this.startConverting(nbt.hasUUID("ConversionPlayer") ? nbt.getUUID("ConversionPlayer") : null, nbt.getInt("ConversionTime")); + } + } +} diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg new file mode 100644 index 00000000..0f15d5a3 --- /dev/null +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -0,0 +1,18 @@ +public net.minecraft.world.level.block.FireBlock m_53444_(Lnet/minecraft/world/level/block/Block;II)V #setFlammable + +public-f net.minecraft.world.item.AxeItem f_150683_ #STRIPPABLES +public-f net.minecraft.world.item.HoeItem f_41332_ #TILLABLES +public-f net.minecraft.world.item.ShovelItem f_43110_ #FLATTENABLES + + +public net.minecraft.world.entity.npc.VillagerType f_35827_ #BY_BIOME +public net.minecraft.world.entity.npc.VillagerTrades$TreasureMapForEmeralds; + +public net.minecraft.world.entity.vehicle.Boat f_38281_ #lastYd +public net.minecraft.world.entity.vehicle.Boat f_38279_ #status + +public net.minecraft.data.worldgen.StructureFeatures * #All Structure Features + +public net.minecraft.client.gui.MapRenderer$MapInstance + +public net.minecraft.world.entity.monster.piglin.PiglinAi m_34826_(Lnet/minecraft/world/entity/monster/piglin/AbstractPiglin;Lnet/minecraft/world/entity/LivingEntity;)V #maybeRetaliate \ No newline at end of file diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml new file mode 100644 index 00000000..4e557077 --- /dev/null +++ b/src/main/resources/META-INF/mods.toml @@ -0,0 +1,42 @@ +modLoader="javafml" +loaderVersion="[43,)" +license="MIT" +issueTrackerURL="https://github.com/Viola-Siemens/EmeraldCraftMod/issues" + +[[mods]] +modId="emeraldcraft" +version="${file.jarVersion}" +displayName="Emerald Craft Mod" +logoFile="logo.png" +credits="Liu Dongyu" +authors="Hexagram" +description=''' +More crafts, biomes, 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! +''' + +[[dependencies.emeraldcraft]] + modId="forge" + mandatory=true + versionRange="[43,)" + ordering="NONE" + side="BOTH" + +[[dependencies.emeraldcraft]] + modId="minecraft" + mandatory=true + versionRange="[1.19.2,1.20)" + ordering="NONE" + side="BOTH" + +[[dependencies.emeraldcraft]] + modId="terrablender" + mandatory=true + versionRange="[2.0.1.128,)" + ordering="NONE" + side="BOTH" \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/aluminum_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/aluminum_stairs.json new file mode 100644 index 00000000..48efb3fe --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/aluminum_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/aluminum_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/aluminum_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/aluminum_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/aluminum_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/aluminum_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/aluminum_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/aluminum_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/aluminum_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/aluminum_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/aluminum_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/aluminum_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/aluminum_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/aluminum_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/aluminum_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/aluminum_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/aluminum_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/aluminum_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/aluminum_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/aluminum_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/aluminum_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/aluminum_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/aluminum_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/aluminum_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/aluminum_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/aluminum_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/aluminum_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/aluminum_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/aluminum_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/aluminum_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/aluminum_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/aluminum_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/aluminum_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/aluminum_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/aluminum_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/aluminum_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/aluminum_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/aluminum_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/aluminum_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/aluminum_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/aluminum_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/aluminum_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/aluminum_wall.json new file mode 100644 index 00000000..de549047 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/aluminum_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/aluminum_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/aluminum_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/aluminum_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/aluminum_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/aluminum_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/aluminum_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/aluminum_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/aluminum_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/aluminum_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file 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/chili.json b/src/main/resources/assets/emeraldcraft/blockstates/chili.json new file mode 100644 index 00000000..afa27b5c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/chili.json @@ -0,0 +1,28 @@ +{ + "variants": { + "age=0": { + "model": "emeraldcraft:block/chili_stage0" + }, + "age=1": { + "model": "emeraldcraft:block/chili_stage0" + }, + "age=2": { + "model": "emeraldcraft:block/chili_stage1" + }, + "age=3": { + "model": "emeraldcraft:block/chili_stage1" + }, + "age=4": { + "model": "emeraldcraft:block/chili_stage2" + }, + "age=5": { + "model": "emeraldcraft:block/chili_stage2" + }, + "age=6": { + "model": "emeraldcraft:block/chili_stage2" + }, + "age=7": { + "model": "emeraldcraft:block/chili_stage3" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/constantan_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/constantan_stairs.json new file mode 100644 index 00000000..96774fcb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/constantan_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/constantan_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/constantan_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/constantan_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/constantan_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/constantan_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/constantan_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/constantan_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/constantan_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/constantan_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/constantan_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/constantan_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/constantan_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/constantan_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/constantan_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/constantan_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/constantan_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/constantan_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/constantan_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/constantan_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/constantan_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/constantan_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/constantan_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/constantan_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/constantan_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/constantan_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/constantan_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/constantan_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/constantan_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/constantan_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/constantan_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/constantan_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/constantan_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/constantan_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/constantan_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/constantan_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/constantan_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/constantan_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/constantan_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/constantan_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/constantan_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/constantan_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/constantan_wall.json new file mode 100644 index 00000000..9eca005c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/constantan_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/constantan_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/constantan_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/constantan_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/constantan_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/constantan_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/constantan_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/constantan_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/constantan_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/constantan_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ 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_dark_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_dark_sandstone.json new file mode 100644 index 00000000..e2cb0020 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_dark_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/cut_dark_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/cut_dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/cut_dark_sandstone_slab.json new file mode 100644 index 00000000..41c7ec3c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cut_dark_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/cut_dark_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/cut_dark_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/cut_dark_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/cyan_petunia.json b/src/main/resources/assets/emeraldcraft/blockstates/cyan_petunia.json new file mode 100644 index 00000000..aa75d5fa --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/cyan_petunia.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/cyan_petunia" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/dark_sand.json b/src/main/resources/assets/emeraldcraft/blockstates/dark_sand.json new file mode 100644 index 00000000..5766d2ab --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/dark_sand.json @@ -0,0 +1,21 @@ +{ + "variants": { + "": [ + { + "model": "emeraldcraft:block/dark_sand" + }, + { + "model": "emeraldcraft:block/dark_sand", + "y": 90 + }, + { + "model": "emeraldcraft:block/dark_sand", + "y": 180 + }, + { + "model": "emeraldcraft:block/dark_sand", + "y": 270 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone.json new file mode 100644 index 00000000..0286d6d4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/dark_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_slab.json new file mode 100644 index 00000000..53d2b031 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/dark_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/dark_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/dark_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_stairs.json new file mode 100644 index 00000000..1cd19ed4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/dark_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/dark_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/dark_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/dark_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/dark_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/dark_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/dark_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/dark_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/dark_sandstone_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_wall.json new file mode 100644 index 00000000..39d8ddfc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/dark_sandstone_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/dark_sandstone_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ 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/electrum_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/electrum_stairs.json new file mode 100644 index 00000000..1e327b80 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/electrum_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/electrum_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/electrum_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/electrum_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/electrum_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/electrum_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/electrum_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/electrum_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/electrum_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/electrum_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/electrum_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/electrum_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/electrum_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/electrum_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/electrum_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/electrum_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/electrum_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/electrum_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/electrum_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/electrum_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/electrum_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/electrum_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/electrum_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/electrum_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/electrum_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/electrum_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/electrum_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/electrum_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/electrum_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/electrum_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/electrum_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/electrum_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/electrum_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/electrum_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/electrum_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/electrum_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/electrum_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/electrum_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/electrum_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/electrum_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/electrum_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/electrum_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/electrum_wall.json new file mode 100644 index 00000000..8ff9f248 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/electrum_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/electrum_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/electrum_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/electrum_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/electrum_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/electrum_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/electrum_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/electrum_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/electrum_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/electrum_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/ginkgo_button.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_button.json new file mode 100644 index 00000000..caeef2bf --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=east,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=north,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 90, + "x": 180 + }, + "face=ceiling,facing=west,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 90, + "x": 180 + }, + "face=floor,facing=east,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "emeraldcraft:block/ginkgo_button" + }, + "face=floor,facing=north,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=east,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=false": { + "model": "emeraldcraft:block/ginkgo_button", + "y": 270, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=true": { + "model": "emeraldcraft:block/ginkgo_button_pressed", + "y": 270, + "x": 90, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_door.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_door.json new file mode 100644 index 00000000..46c5f8b2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_door.json @@ -0,0 +1,124 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/ginkgo_door_bottom_left" + }, + "facing=east,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/ginkgo_door_bottom_left_open", + "y": 90 + }, + "facing=east,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/ginkgo_door_bottom_right" + }, + "facing=east,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/ginkgo_door_bottom_right_open", + "y": 270 + }, + "facing=east,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/ginkgo_door_top_left" + }, + "facing=east,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/ginkgo_door_top_left_open", + "y": 90 + }, + "facing=east,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/ginkgo_door_top_right" + }, + "facing=east,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/ginkgo_door_top_right_open", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/ginkgo_door_bottom_left", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/ginkgo_door_bottom_left_open" + }, + "facing=north,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/ginkgo_door_bottom_right", + "y": 270 + }, + "facing=north,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/ginkgo_door_bottom_right_open", + "y": 180 + }, + "facing=north,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/ginkgo_door_top_left", + "y": 270 + }, + "facing=north,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/ginkgo_door_top_left_open" + }, + "facing=north,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/ginkgo_door_top_right", + "y": 270 + }, + "facing=north,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/ginkgo_door_top_right_open", + "y": 180 + }, + "facing=south,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/ginkgo_door_bottom_left", + "y": 90 + }, + "facing=south,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/ginkgo_door_bottom_left_open", + "y": 180 + }, + "facing=south,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/ginkgo_door_bottom_right", + "y": 90 + }, + "facing=south,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/ginkgo_door_bottom_right_open" + }, + "facing=south,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/ginkgo_door_top_left", + "y": 90 + }, + "facing=south,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/ginkgo_door_top_left_open", + "y": 180 + }, + "facing=south,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/ginkgo_door_top_right", + "y": 90 + }, + "facing=south,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/ginkgo_door_top_right_open" + }, + "facing=west,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/ginkgo_door_bottom_left", + "y": 180 + }, + "facing=west,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/ginkgo_door_bottom_left_open", + "y": 270 + }, + "facing=west,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/ginkgo_door_bottom_right", + "y": 180 + }, + "facing=west,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/ginkgo_door_bottom_right_open", + "y": 90 + }, + "facing=west,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/ginkgo_door_top_left", + "y": 180 + }, + "facing=west,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/ginkgo_door_top_left_open", + "y": 270 + }, + "facing=west,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/ginkgo_door_top_right", + "y": 180 + }, + "facing=west,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/ginkgo_door_top_right_open", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_fence.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_fence.json new file mode 100644 index 00000000..667763e3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "emeraldcraft:block/ginkgo_fence_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "emeraldcraft:block/ginkgo_fence_side", + "uvlock": true + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "emeraldcraft:block/ginkgo_fence_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "emeraldcraft:block/ginkgo_fence_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "emeraldcraft:block/ginkgo_fence_side", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_fence_gate.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_fence_gate.json new file mode 100644 index 00000000..1c3eee93 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/ginkgo_fence_gate" + }, + "facing=east,in_wall=false,open=true": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/ginkgo_fence_gate_open" + }, + "facing=east,in_wall=true,open=false": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/ginkgo_fence_gate_wall" + }, + "facing=east,in_wall=true,open=true": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/ginkgo_fence_gate_wall_open" + }, + "facing=north,in_wall=false,open=false": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/ginkgo_fence_gate" + }, + "facing=north,in_wall=false,open=true": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/ginkgo_fence_gate_open" + }, + "facing=north,in_wall=true,open=false": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/ginkgo_fence_gate_wall" + }, + "facing=north,in_wall=true,open=true": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/ginkgo_fence_gate_wall_open" + }, + "facing=south,in_wall=false,open=false": { + "uvlock": true, + "model": "emeraldcraft:block/ginkgo_fence_gate" + }, + "facing=south,in_wall=false,open=true": { + "uvlock": true, + "model": "emeraldcraft:block/ginkgo_fence_gate_open" + }, + "facing=south,in_wall=true,open=false": { + "uvlock": true, + "model": "emeraldcraft:block/ginkgo_fence_gate_wall" + }, + "facing=south,in_wall=true,open=true": { + "uvlock": true, + "model": "emeraldcraft:block/ginkgo_fence_gate_wall_open" + }, + "facing=west,in_wall=false,open=false": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/ginkgo_fence_gate" + }, + "facing=west,in_wall=false,open=true": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/ginkgo_fence_gate_open" + }, + "facing=west,in_wall=true,open=false": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/ginkgo_fence_gate_wall" + }, + "facing=west,in_wall=true,open=true": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/ginkgo_fence_gate_wall_open" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_leaves.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_leaves.json new file mode 100644 index 00000000..aa88326d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_leaves.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/ginkgo_leaves" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_log.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_log.json new file mode 100644 index 00000000..adaecf50 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_log.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/ginkgo_log_horizontal", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/ginkgo_log" + }, + "axis=z": { + "model": "emeraldcraft:block/ginkgo_log_horizontal", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_planks.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_planks.json new file mode 100644 index 00000000..903ac87a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_planks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/ginkgo_planks" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_pressure_plate.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_pressure_plate.json new file mode 100644 index 00000000..f8e29fa9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "emeraldcraft:block/ginkgo_pressure_plate" + }, + "powered=true": { + "model": "emeraldcraft:block/ginkgo_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_sapling.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_sapling.json new file mode 100644 index 00000000..6afeb12a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_sapling.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/ginkgo_sapling" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_sign.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_sign.json new file mode 100644 index 00000000..f8149c94 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/ginkgo_sign" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_slab.json new file mode 100644 index 00000000..ca0088d3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/ginkgo_slab" + }, + "type=double": { + "model": "emeraldcraft:block/ginkgo_planks" + }, + "type=top": { + "model": "emeraldcraft:block/ginkgo_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_stairs.json new file mode 100644 index 00000000..aebf9961 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/ginkgo_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/ginkgo_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/ginkgo_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/ginkgo_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/ginkgo_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/ginkgo_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/ginkgo_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/ginkgo_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/ginkgo_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/ginkgo_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/ginkgo_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/ginkgo_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/ginkgo_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/ginkgo_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_trapdoor.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_trapdoor.json new file mode 100644 index 00000000..47ac8117 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_trapdoor.json @@ -0,0 +1,69 @@ +{ + "variants": { + "facing=east,half=bottom,open=false": { + "model": "emeraldcraft:block/ginkgo_trapdoor_bottom", + "y": 90 + }, + "facing=east,half=bottom,open=true": { + "model": "emeraldcraft:block/ginkgo_trapdoor_open", + "y": 90 + }, + "facing=east,half=top,open=false": { + "model": "emeraldcraft:block/ginkgo_trapdoor_top", + "y": 90 + }, + "facing=east,half=top,open=true": { + "model": "emeraldcraft:block/ginkgo_trapdoor_open", + "x": 180, + "y": 270 + }, + "facing=north,half=bottom,open=false": { + "model": "emeraldcraft:block/ginkgo_trapdoor_bottom" + }, + "facing=north,half=bottom,open=true": { + "model": "emeraldcraft:block/ginkgo_trapdoor_open" + }, + "facing=north,half=top,open=false": { + "model": "emeraldcraft:block/ginkgo_trapdoor_top" + }, + "facing=north,half=top,open=true": { + "model": "emeraldcraft:block/ginkgo_trapdoor_open", + "x": 180, + "y": 180 + }, + "facing=south,half=bottom,open=false": { + "model": "emeraldcraft:block/ginkgo_trapdoor_bottom", + "y": 180 + }, + "facing=south,half=bottom,open=true": { + "model": "emeraldcraft:block/ginkgo_trapdoor_open", + "y": 180 + }, + "facing=south,half=top,open=false": { + "model": "emeraldcraft:block/ginkgo_trapdoor_top", + "y": 180 + }, + "facing=south,half=top,open=true": { + "model": "emeraldcraft:block/ginkgo_trapdoor_open", + "x": 180, + "y": 0 + }, + "facing=west,half=bottom,open=false": { + "model": "emeraldcraft:block/ginkgo_trapdoor_bottom", + "y": 270 + }, + "facing=west,half=bottom,open=true": { + "model": "emeraldcraft:block/ginkgo_trapdoor_open", + "y": 270 + }, + "facing=west,half=top,open=false": { + "model": "emeraldcraft:block/ginkgo_trapdoor_top", + "y": 270 + }, + "facing=west,half=top,open=true": { + "model": "emeraldcraft:block/ginkgo_trapdoor_open", + "x": 180, + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_wall_sign.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_wall_sign.json new file mode 100644 index 00000000..f8149c94 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_wall_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/ginkgo_sign" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_wood.json b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_wood.json new file mode 100644 index 00000000..786397f0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/ginkgo_wood.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/ginkgo_wood", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/ginkgo_wood" + }, + "axis=z": { + "model": "emeraldcraft:block/ginkgo_wood", + "x": 90 + } + } +} \ 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/higan_bana.json b/src/main/resources/assets/emeraldcraft/blockstates/higan_bana.json new file mode 100644 index 00000000..e06dd1cf --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/higan_bana.json @@ -0,0 +1,10 @@ +{ + "variants": { + "leaf=true": { + "model": "emeraldcraft:block/higan_bana" + }, + "leaf=false": { + "model": "emeraldcraft:block/higan_bana_no_leaf" + } + } +} \ 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/lead_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/lead_stairs.json new file mode 100644 index 00000000..ed7db96d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/lead_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/lead_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/lead_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/lead_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/lead_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/lead_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/lead_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/lead_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/lead_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/lead_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/lead_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/lead_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/lead_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/lead_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/lead_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/lead_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/lead_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/lead_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/lead_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/lead_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/lead_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/lead_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/lead_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/lead_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/lead_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/lead_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/lead_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/lead_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/lead_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/lead_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/lead_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/lead_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/lead_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/lead_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/lead_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/lead_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/lead_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/lead_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/lead_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/lead_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/lead_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/lead_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/lead_wall.json new file mode 100644 index 00000000..3991bdbd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/lead_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/lead_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/lead_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/lead_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/lead_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/lead_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/lead_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/lead_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/lead_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/lead_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/magenta_petunia.json b/src/main/resources/assets/emeraldcraft/blockstates/magenta_petunia.json new file mode 100644 index 00000000..1a21f806 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/magenta_petunia.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/magenta_petunia" + } + } +} \ 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/nickel_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/nickel_stairs.json new file mode 100644 index 00000000..2d9d664c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/nickel_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/nickel_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/nickel_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/nickel_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/nickel_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/nickel_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/nickel_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/nickel_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/nickel_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/nickel_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/nickel_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/nickel_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/nickel_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/nickel_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/nickel_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/nickel_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/nickel_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/nickel_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/nickel_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/nickel_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/nickel_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/nickel_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/nickel_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/nickel_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/nickel_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/nickel_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/nickel_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/nickel_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/nickel_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/nickel_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/nickel_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/nickel_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/nickel_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/nickel_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/nickel_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/nickel_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/nickel_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/nickel_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/nickel_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/nickel_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/nickel_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/nickel_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/nickel_wall.json new file mode 100644 index 00000000..44b82eca --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/nickel_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/nickel_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/nickel_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/nickel_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/nickel_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/nickel_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/nickel_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/nickel_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/nickel_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/nickel_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/palm_button.json b/src/main/resources/assets/emeraldcraft/blockstates/palm_button.json new file mode 100644 index 00000000..fa8ccba7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/palm_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "emeraldcraft:block/palm_button", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=east,powered=true": { + "model": "emeraldcraft:block/palm_button_pressed", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=north,powered=false": { + "model": "emeraldcraft:block/palm_button", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "emeraldcraft:block/palm_button_pressed", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "emeraldcraft:block/palm_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "emeraldcraft:block/palm_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "emeraldcraft:block/palm_button", + "y": 90, + "x": 180 + }, + "face=ceiling,facing=west,powered=true": { + "model": "emeraldcraft:block/palm_button_pressed", + "y": 90, + "x": 180 + }, + "face=floor,facing=east,powered=false": { + "model": "emeraldcraft:block/palm_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "emeraldcraft:block/palm_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "emeraldcraft:block/palm_button" + }, + "face=floor,facing=north,powered=true": { + "model": "emeraldcraft:block/palm_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "emeraldcraft:block/palm_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "emeraldcraft:block/palm_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "emeraldcraft:block/palm_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "emeraldcraft:block/palm_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "emeraldcraft:block/palm_button", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=east,powered=true": { + "model": "emeraldcraft:block/palm_button_pressed", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=false": { + "model": "emeraldcraft:block/palm_button", + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=true": { + "model": "emeraldcraft:block/palm_button_pressed", + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=false": { + "model": "emeraldcraft:block/palm_button", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=true": { + "model": "emeraldcraft:block/palm_button_pressed", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=false": { + "model": "emeraldcraft:block/palm_button", + "y": 270, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=true": { + "model": "emeraldcraft:block/palm_button_pressed", + "y": 270, + "x": 90, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/palm_door.json b/src/main/resources/assets/emeraldcraft/blockstates/palm_door.json new file mode 100644 index 00000000..6576be29 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/palm_door.json @@ -0,0 +1,124 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/palm_door_bottom_left" + }, + "facing=east,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/palm_door_bottom_left_open", + "y": 90 + }, + "facing=east,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/palm_door_bottom_right" + }, + "facing=east,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/palm_door_bottom_right_open", + "y": 270 + }, + "facing=east,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/palm_door_top_left" + }, + "facing=east,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/palm_door_top_left_open", + "y": 90 + }, + "facing=east,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/palm_door_top_right" + }, + "facing=east,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/palm_door_top_right_open", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/palm_door_bottom_left", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/palm_door_bottom_left_open" + }, + "facing=north,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/palm_door_bottom_right", + "y": 270 + }, + "facing=north,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/palm_door_bottom_right_open", + "y": 180 + }, + "facing=north,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/palm_door_top_left", + "y": 270 + }, + "facing=north,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/palm_door_top_left_open" + }, + "facing=north,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/palm_door_top_right", + "y": 270 + }, + "facing=north,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/palm_door_top_right_open", + "y": 180 + }, + "facing=south,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/palm_door_bottom_left", + "y": 90 + }, + "facing=south,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/palm_door_bottom_left_open", + "y": 180 + }, + "facing=south,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/palm_door_bottom_right", + "y": 90 + }, + "facing=south,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/palm_door_bottom_right_open" + }, + "facing=south,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/palm_door_top_left", + "y": 90 + }, + "facing=south,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/palm_door_top_left_open", + "y": 180 + }, + "facing=south,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/palm_door_top_right", + "y": 90 + }, + "facing=south,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/palm_door_top_right_open" + }, + "facing=west,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/palm_door_bottom_left", + "y": 180 + }, + "facing=west,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/palm_door_bottom_left_open", + "y": 270 + }, + "facing=west,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/palm_door_bottom_right", + "y": 180 + }, + "facing=west,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/palm_door_bottom_right_open", + "y": 90 + }, + "facing=west,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/palm_door_top_left", + "y": 180 + }, + "facing=west,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/palm_door_top_left_open", + "y": 270 + }, + "facing=west,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/palm_door_top_right", + "y": 180 + }, + "facing=west,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/palm_door_top_right_open", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/palm_fence.json b/src/main/resources/assets/emeraldcraft/blockstates/palm_fence.json new file mode 100644 index 00000000..cd1d851d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/palm_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "emeraldcraft:block/palm_fence_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "emeraldcraft:block/palm_fence_side", + "uvlock": true + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "emeraldcraft:block/palm_fence_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "emeraldcraft:block/palm_fence_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "emeraldcraft:block/palm_fence_side", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/palm_fence_gate.json b/src/main/resources/assets/emeraldcraft/blockstates/palm_fence_gate.json new file mode 100644 index 00000000..e7194304 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/palm_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/palm_fence_gate" + }, + "facing=east,in_wall=false,open=true": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/palm_fence_gate_open" + }, + "facing=east,in_wall=true,open=false": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/palm_fence_gate_wall" + }, + "facing=east,in_wall=true,open=true": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/palm_fence_gate_wall_open" + }, + "facing=north,in_wall=false,open=false": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/palm_fence_gate" + }, + "facing=north,in_wall=false,open=true": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/palm_fence_gate_open" + }, + "facing=north,in_wall=true,open=false": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/palm_fence_gate_wall" + }, + "facing=north,in_wall=true,open=true": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/palm_fence_gate_wall_open" + }, + "facing=south,in_wall=false,open=false": { + "uvlock": true, + "model": "emeraldcraft:block/palm_fence_gate" + }, + "facing=south,in_wall=false,open=true": { + "uvlock": true, + "model": "emeraldcraft:block/palm_fence_gate_open" + }, + "facing=south,in_wall=true,open=false": { + "uvlock": true, + "model": "emeraldcraft:block/palm_fence_gate_wall" + }, + "facing=south,in_wall=true,open=true": { + "uvlock": true, + "model": "emeraldcraft:block/palm_fence_gate_wall_open" + }, + "facing=west,in_wall=false,open=false": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/palm_fence_gate" + }, + "facing=west,in_wall=false,open=true": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/palm_fence_gate_open" + }, + "facing=west,in_wall=true,open=false": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/palm_fence_gate_wall" + }, + "facing=west,in_wall=true,open=true": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/palm_fence_gate_wall_open" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/palm_leaves.json b/src/main/resources/assets/emeraldcraft/blockstates/palm_leaves.json new file mode 100644 index 00000000..31a99a41 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/palm_leaves.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/palm_leaves" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/palm_log.json b/src/main/resources/assets/emeraldcraft/blockstates/palm_log.json new file mode 100644 index 00000000..7350d141 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/palm_log.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/palm_log_horizontal", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/palm_log" + }, + "axis=z": { + "model": "emeraldcraft:block/palm_log_horizontal", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/palm_planks.json b/src/main/resources/assets/emeraldcraft/blockstates/palm_planks.json new file mode 100644 index 00000000..dd41253d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/palm_planks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/palm_planks" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/palm_pressure_plate.json b/src/main/resources/assets/emeraldcraft/blockstates/palm_pressure_plate.json new file mode 100644 index 00000000..77b78c37 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/palm_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "emeraldcraft:block/palm_pressure_plate" + }, + "powered=true": { + "model": "emeraldcraft:block/palm_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/palm_sapling.json b/src/main/resources/assets/emeraldcraft/blockstates/palm_sapling.json new file mode 100644 index 00000000..458b99f8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/palm_sapling.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/palm_sapling" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/palm_sign.json b/src/main/resources/assets/emeraldcraft/blockstates/palm_sign.json new file mode 100644 index 00000000..e0df5268 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/palm_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/palm_sign" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/palm_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/palm_slab.json new file mode 100644 index 00000000..412ce631 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/palm_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/palm_slab" + }, + "type=double": { + "model": "emeraldcraft:block/palm_planks" + }, + "type=top": { + "model": "emeraldcraft:block/palm_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/palm_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/palm_stairs.json new file mode 100644 index 00000000..52afd9f4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/palm_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/palm_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/palm_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/palm_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/palm_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/palm_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/palm_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/palm_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/palm_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/palm_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/palm_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/palm_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/palm_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/palm_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/palm_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/palm_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/palm_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/palm_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/palm_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/palm_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/palm_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/palm_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/palm_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/palm_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/palm_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/palm_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/palm_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/palm_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/palm_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/palm_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/palm_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/palm_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/palm_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/palm_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/palm_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/palm_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/palm_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/palm_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/palm_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/palm_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/palm_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/palm_trapdoor.json b/src/main/resources/assets/emeraldcraft/blockstates/palm_trapdoor.json new file mode 100644 index 00000000..adcff012 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/palm_trapdoor.json @@ -0,0 +1,69 @@ +{ + "variants": { + "facing=east,half=bottom,open=false": { + "model": "emeraldcraft:block/palm_trapdoor_bottom", + "y": 90 + }, + "facing=east,half=bottom,open=true": { + "model": "emeraldcraft:block/palm_trapdoor_open", + "y": 90 + }, + "facing=east,half=top,open=false": { + "model": "emeraldcraft:block/palm_trapdoor_top", + "y": 90 + }, + "facing=east,half=top,open=true": { + "model": "emeraldcraft:block/palm_trapdoor_open", + "x": 180, + "y": 270 + }, + "facing=north,half=bottom,open=false": { + "model": "emeraldcraft:block/palm_trapdoor_bottom" + }, + "facing=north,half=bottom,open=true": { + "model": "emeraldcraft:block/palm_trapdoor_open" + }, + "facing=north,half=top,open=false": { + "model": "emeraldcraft:block/palm_trapdoor_top" + }, + "facing=north,half=top,open=true": { + "model": "emeraldcraft:block/palm_trapdoor_open", + "x": 180, + "y": 180 + }, + "facing=south,half=bottom,open=false": { + "model": "emeraldcraft:block/palm_trapdoor_bottom", + "y": 180 + }, + "facing=south,half=bottom,open=true": { + "model": "emeraldcraft:block/palm_trapdoor_open", + "y": 180 + }, + "facing=south,half=top,open=false": { + "model": "emeraldcraft:block/palm_trapdoor_top", + "y": 180 + }, + "facing=south,half=top,open=true": { + "model": "emeraldcraft:block/palm_trapdoor_open", + "x": 180, + "y": 0 + }, + "facing=west,half=bottom,open=false": { + "model": "emeraldcraft:block/palm_trapdoor_bottom", + "y": 270 + }, + "facing=west,half=bottom,open=true": { + "model": "emeraldcraft:block/palm_trapdoor_open", + "y": 270 + }, + "facing=west,half=top,open=false": { + "model": "emeraldcraft:block/palm_trapdoor_top", + "y": 270 + }, + "facing=west,half=top,open=true": { + "model": "emeraldcraft:block/palm_trapdoor_open", + "x": 180, + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/palm_wall_sign.json b/src/main/resources/assets/emeraldcraft/blockstates/palm_wall_sign.json new file mode 100644 index 00000000..e0df5268 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/palm_wall_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/palm_sign" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/palm_wood.json b/src/main/resources/assets/emeraldcraft/blockstates/palm_wood.json new file mode 100644 index 00000000..67f01ed8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/palm_wood.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/palm_wood", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/palm_wood" + }, + "axis=z": { + "model": "emeraldcraft:block/palm_wood", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/peach_button.json b/src/main/resources/assets/emeraldcraft/blockstates/peach_button.json new file mode 100644 index 00000000..a4d74864 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/peach_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "emeraldcraft:block/peach_button", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=east,powered=true": { + "model": "emeraldcraft:block/peach_button_pressed", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=north,powered=false": { + "model": "emeraldcraft:block/peach_button", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "emeraldcraft:block/peach_button_pressed", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "emeraldcraft:block/peach_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "emeraldcraft:block/peach_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "emeraldcraft:block/peach_button", + "y": 90, + "x": 180 + }, + "face=ceiling,facing=west,powered=true": { + "model": "emeraldcraft:block/peach_button_pressed", + "y": 90, + "x": 180 + }, + "face=floor,facing=east,powered=false": { + "model": "emeraldcraft:block/peach_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "emeraldcraft:block/peach_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "emeraldcraft:block/peach_button" + }, + "face=floor,facing=north,powered=true": { + "model": "emeraldcraft:block/peach_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "emeraldcraft:block/peach_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "emeraldcraft:block/peach_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "emeraldcraft:block/peach_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "emeraldcraft:block/peach_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "emeraldcraft:block/peach_button", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=east,powered=true": { + "model": "emeraldcraft:block/peach_button_pressed", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=false": { + "model": "emeraldcraft:block/peach_button", + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=true": { + "model": "emeraldcraft:block/peach_button_pressed", + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=false": { + "model": "emeraldcraft:block/peach_button", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=true": { + "model": "emeraldcraft:block/peach_button_pressed", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=false": { + "model": "emeraldcraft:block/peach_button", + "y": 270, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=true": { + "model": "emeraldcraft:block/peach_button_pressed", + "y": 270, + "x": 90, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/peach_door.json b/src/main/resources/assets/emeraldcraft/blockstates/peach_door.json new file mode 100644 index 00000000..2299f10e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/peach_door.json @@ -0,0 +1,124 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/peach_door_bottom_left" + }, + "facing=east,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/peach_door_bottom_left_open", + "y": 90 + }, + "facing=east,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/peach_door_bottom_right" + }, + "facing=east,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/peach_door_bottom_right_open", + "y": 270 + }, + "facing=east,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/peach_door_top_left" + }, + "facing=east,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/peach_door_top_left_open", + "y": 90 + }, + "facing=east,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/peach_door_top_right" + }, + "facing=east,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/peach_door_top_right_open", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/peach_door_bottom_left", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/peach_door_bottom_left_open" + }, + "facing=north,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/peach_door_bottom_right", + "y": 270 + }, + "facing=north,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/peach_door_bottom_right_open", + "y": 180 + }, + "facing=north,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/peach_door_top_left", + "y": 270 + }, + "facing=north,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/peach_door_top_left_open" + }, + "facing=north,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/peach_door_top_right", + "y": 270 + }, + "facing=north,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/peach_door_top_right_open", + "y": 180 + }, + "facing=south,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/peach_door_bottom_left", + "y": 90 + }, + "facing=south,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/peach_door_bottom_left_open", + "y": 180 + }, + "facing=south,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/peach_door_bottom_right", + "y": 90 + }, + "facing=south,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/peach_door_bottom_right_open" + }, + "facing=south,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/peach_door_top_left", + "y": 90 + }, + "facing=south,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/peach_door_top_left_open", + "y": 180 + }, + "facing=south,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/peach_door_top_right", + "y": 90 + }, + "facing=south,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/peach_door_top_right_open" + }, + "facing=west,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/peach_door_bottom_left", + "y": 180 + }, + "facing=west,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/peach_door_bottom_left_open", + "y": 270 + }, + "facing=west,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/peach_door_bottom_right", + "y": 180 + }, + "facing=west,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/peach_door_bottom_right_open", + "y": 90 + }, + "facing=west,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/peach_door_top_left", + "y": 180 + }, + "facing=west,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/peach_door_top_left_open", + "y": 270 + }, + "facing=west,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/peach_door_top_right", + "y": 180 + }, + "facing=west,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/peach_door_top_right_open", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/peach_fence.json b/src/main/resources/assets/emeraldcraft/blockstates/peach_fence.json new file mode 100644 index 00000000..d70fc98a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/peach_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "emeraldcraft:block/peach_fence_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "emeraldcraft:block/peach_fence_side", + "uvlock": true + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "emeraldcraft:block/peach_fence_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "emeraldcraft:block/peach_fence_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "emeraldcraft:block/peach_fence_side", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/peach_fence_gate.json b/src/main/resources/assets/emeraldcraft/blockstates/peach_fence_gate.json new file mode 100644 index 00000000..a257a1d2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/peach_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/peach_fence_gate" + }, + "facing=east,in_wall=false,open=true": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/peach_fence_gate_open" + }, + "facing=east,in_wall=true,open=false": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/peach_fence_gate_wall" + }, + "facing=east,in_wall=true,open=true": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/peach_fence_gate_wall_open" + }, + "facing=north,in_wall=false,open=false": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/peach_fence_gate" + }, + "facing=north,in_wall=false,open=true": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/peach_fence_gate_open" + }, + "facing=north,in_wall=true,open=false": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/peach_fence_gate_wall" + }, + "facing=north,in_wall=true,open=true": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/peach_fence_gate_wall_open" + }, + "facing=south,in_wall=false,open=false": { + "uvlock": true, + "model": "emeraldcraft:block/peach_fence_gate" + }, + "facing=south,in_wall=false,open=true": { + "uvlock": true, + "model": "emeraldcraft:block/peach_fence_gate_open" + }, + "facing=south,in_wall=true,open=false": { + "uvlock": true, + "model": "emeraldcraft:block/peach_fence_gate_wall" + }, + "facing=south,in_wall=true,open=true": { + "uvlock": true, + "model": "emeraldcraft:block/peach_fence_gate_wall_open" + }, + "facing=west,in_wall=false,open=false": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/peach_fence_gate" + }, + "facing=west,in_wall=false,open=true": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/peach_fence_gate_open" + }, + "facing=west,in_wall=true,open=false": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/peach_fence_gate_wall" + }, + "facing=west,in_wall=true,open=true": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/peach_fence_gate_wall_open" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/peach_leaves.json b/src/main/resources/assets/emeraldcraft/blockstates/peach_leaves.json new file mode 100644 index 00000000..411ee8f6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/peach_leaves.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/peach_leaves" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/peach_log.json b/src/main/resources/assets/emeraldcraft/blockstates/peach_log.json new file mode 100644 index 00000000..732e74b7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/peach_log.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/peach_log_horizontal", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/peach_log" + }, + "axis=z": { + "model": "emeraldcraft:block/peach_log_horizontal", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/peach_planks.json b/src/main/resources/assets/emeraldcraft/blockstates/peach_planks.json new file mode 100644 index 00000000..3bbae84f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/peach_planks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/peach_planks" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/peach_pressure_plate.json b/src/main/resources/assets/emeraldcraft/blockstates/peach_pressure_plate.json new file mode 100644 index 00000000..f859553f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/peach_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "emeraldcraft:block/peach_pressure_plate" + }, + "powered=true": { + "model": "emeraldcraft:block/peach_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/peach_sapling.json b/src/main/resources/assets/emeraldcraft/blockstates/peach_sapling.json new file mode 100644 index 00000000..8469315b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/peach_sapling.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/peach_sapling" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/peach_sign.json b/src/main/resources/assets/emeraldcraft/blockstates/peach_sign.json new file mode 100644 index 00000000..e5bcbc3c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/peach_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/peach_sign" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/peach_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/peach_slab.json new file mode 100644 index 00000000..bde6e146 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/peach_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/peach_slab" + }, + "type=double": { + "model": "emeraldcraft:block/peach_planks" + }, + "type=top": { + "model": "emeraldcraft:block/peach_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/peach_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/peach_stairs.json new file mode 100644 index 00000000..22f91026 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/peach_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/peach_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/peach_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/peach_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/peach_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/peach_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/peach_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/peach_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/peach_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/peach_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/peach_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/peach_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/peach_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/peach_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/peach_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/peach_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/peach_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/peach_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/peach_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/peach_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/peach_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/peach_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/peach_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/peach_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/peach_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/peach_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/peach_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/peach_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/peach_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/peach_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/peach_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/peach_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/peach_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/peach_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/peach_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/peach_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/peach_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/peach_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/peach_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/peach_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/peach_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/peach_trapdoor.json b/src/main/resources/assets/emeraldcraft/blockstates/peach_trapdoor.json new file mode 100644 index 00000000..c90684ec --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/peach_trapdoor.json @@ -0,0 +1,69 @@ +{ + "variants": { + "facing=east,half=bottom,open=false": { + "model": "emeraldcraft:block/peach_trapdoor_bottom", + "y": 90 + }, + "facing=east,half=bottom,open=true": { + "model": "emeraldcraft:block/peach_trapdoor_open", + "y": 90 + }, + "facing=east,half=top,open=false": { + "model": "emeraldcraft:block/peach_trapdoor_top", + "y": 90 + }, + "facing=east,half=top,open=true": { + "model": "emeraldcraft:block/peach_trapdoor_open", + "x": 180, + "y": 270 + }, + "facing=north,half=bottom,open=false": { + "model": "emeraldcraft:block/peach_trapdoor_bottom" + }, + "facing=north,half=bottom,open=true": { + "model": "emeraldcraft:block/peach_trapdoor_open" + }, + "facing=north,half=top,open=false": { + "model": "emeraldcraft:block/peach_trapdoor_top" + }, + "facing=north,half=top,open=true": { + "model": "emeraldcraft:block/peach_trapdoor_open", + "x": 180, + "y": 180 + }, + "facing=south,half=bottom,open=false": { + "model": "emeraldcraft:block/peach_trapdoor_bottom", + "y": 180 + }, + "facing=south,half=bottom,open=true": { + "model": "emeraldcraft:block/peach_trapdoor_open", + "y": 180 + }, + "facing=south,half=top,open=false": { + "model": "emeraldcraft:block/peach_trapdoor_top", + "y": 180 + }, + "facing=south,half=top,open=true": { + "model": "emeraldcraft:block/peach_trapdoor_open", + "x": 180, + "y": 0 + }, + "facing=west,half=bottom,open=false": { + "model": "emeraldcraft:block/peach_trapdoor_bottom", + "y": 270 + }, + "facing=west,half=bottom,open=true": { + "model": "emeraldcraft:block/peach_trapdoor_open", + "y": 270 + }, + "facing=west,half=top,open=false": { + "model": "emeraldcraft:block/peach_trapdoor_top", + "y": 270 + }, + "facing=west,half=top,open=true": { + "model": "emeraldcraft:block/peach_trapdoor_open", + "x": 180, + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/peach_wall_sign.json b/src/main/resources/assets/emeraldcraft/blockstates/peach_wall_sign.json new file mode 100644 index 00000000..e5bcbc3c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/peach_wall_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/peach_sign" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/peach_wood.json b/src/main/resources/assets/emeraldcraft/blockstates/peach_wood.json new file mode 100644 index 00000000..e8be5a19 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/peach_wood.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/peach_wood", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/peach_wood" + }, + "axis=z": { + "model": "emeraldcraft:block/peach_wood", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/potted_cyan_petunia.json b/src/main/resources/assets/emeraldcraft/blockstates/potted_cyan_petunia.json new file mode 100644 index 00000000..279fa106 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/potted_cyan_petunia.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/potted_cyan_petunia" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/potted_ginkgo_sapling.json b/src/main/resources/assets/emeraldcraft/blockstates/potted_ginkgo_sapling.json new file mode 100644 index 00000000..53f17563 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/potted_ginkgo_sapling.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/potted_ginkgo_sapling" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/potted_higan_bana.json b/src/main/resources/assets/emeraldcraft/blockstates/potted_higan_bana.json new file mode 100644 index 00000000..8523744c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/potted_higan_bana.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/potted_higan_bana" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/potted_magenta_petunia.json b/src/main/resources/assets/emeraldcraft/blockstates/potted_magenta_petunia.json new file mode 100644 index 00000000..0754ab43 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/potted_magenta_petunia.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/potted_magenta_petunia" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/potted_palm_sapling.json b/src/main/resources/assets/emeraldcraft/blockstates/potted_palm_sapling.json new file mode 100644 index 00000000..6b5a7c7b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/potted_palm_sapling.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/potted_palm_sapling" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/potted_peach_sapling.json b/src/main/resources/assets/emeraldcraft/blockstates/potted_peach_sapling.json new file mode 100644 index 00000000..0e5c66ee --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/potted_peach_sapling.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/potted_peach_sapling" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/potted_purpuraceus_fungus.json b/src/main/resources/assets/emeraldcraft/blockstates/potted_purpuraceus_fungus.json new file mode 100644 index 00000000..b07a3159 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/potted_purpuraceus_fungus.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/potted_purpuraceus_fungus" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/potted_purpuraceus_roots.json b/src/main/resources/assets/emeraldcraft/blockstates/potted_purpuraceus_roots.json new file mode 100644 index 00000000..ad269430 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/potted_purpuraceus_roots.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/potted_purpuraceus_roots" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purple_nether_brick_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/purple_nether_brick_slab.json new file mode 100644 index 00000000..437e137e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purple_nether_brick_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/purple_nether_brick_slab" + }, + "type=double": { + "model": "emeraldcraft:block/purple_nether_bricks" + }, + "type=top": { + "model": "emeraldcraft:block/purple_nether_brick_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purple_nether_brick_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/purple_nether_brick_stairs.json new file mode 100644 index 00000000..8d7a75c3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purple_nether_brick_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/purple_nether_brick_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/purple_nether_brick_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/purple_nether_brick_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/purple_nether_brick_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/purple_nether_brick_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/purple_nether_brick_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/purple_nether_brick_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/purple_nether_brick_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/purple_nether_brick_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purple_nether_brick_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/purple_nether_brick_wall.json new file mode 100644 index 00000000..ddfb9896 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purple_nether_brick_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/purple_nether_brick_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/purple_nether_brick_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/purple_nether_brick_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/purple_nether_brick_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/purple_nether_brick_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/purple_nether_brick_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/purple_nether_brick_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/purple_nether_brick_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/purple_nether_brick_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purple_nether_bricks.json b/src/main/resources/assets/emeraldcraft/blockstates/purple_nether_bricks.json new file mode 100644 index 00000000..8fc1e07f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purple_nether_bricks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/purple_nether_bricks" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_button.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_button.json new file mode 100644 index 00000000..e3d47272 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "emeraldcraft:block/purpuraceus_button", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=east,powered=true": { + "model": "emeraldcraft:block/purpuraceus_button_pressed", + "y": 270, + "x": 180 + }, + "face=ceiling,facing=north,powered=false": { + "model": "emeraldcraft:block/purpuraceus_button", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "emeraldcraft:block/purpuraceus_button_pressed", + "y": 180, + "x": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "emeraldcraft:block/purpuraceus_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "emeraldcraft:block/purpuraceus_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "emeraldcraft:block/purpuraceus_button", + "y": 90, + "x": 180 + }, + "face=ceiling,facing=west,powered=true": { + "model": "emeraldcraft:block/purpuraceus_button_pressed", + "y": 90, + "x": 180 + }, + "face=floor,facing=east,powered=false": { + "model": "emeraldcraft:block/purpuraceus_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "emeraldcraft:block/purpuraceus_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "emeraldcraft:block/purpuraceus_button" + }, + "face=floor,facing=north,powered=true": { + "model": "emeraldcraft:block/purpuraceus_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "emeraldcraft:block/purpuraceus_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "emeraldcraft:block/purpuraceus_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "emeraldcraft:block/purpuraceus_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "emeraldcraft:block/purpuraceus_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "emeraldcraft:block/purpuraceus_button", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=east,powered=true": { + "model": "emeraldcraft:block/purpuraceus_button_pressed", + "y": 90, + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=false": { + "model": "emeraldcraft:block/purpuraceus_button", + "x": 90, + "uvlock": true + }, + "face=wall,facing=north,powered=true": { + "model": "emeraldcraft:block/purpuraceus_button_pressed", + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=false": { + "model": "emeraldcraft:block/purpuraceus_button", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=south,powered=true": { + "model": "emeraldcraft:block/purpuraceus_button_pressed", + "y": 180, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=false": { + "model": "emeraldcraft:block/purpuraceus_button", + "y": 270, + "x": 90, + "uvlock": true + }, + "face=wall,facing=west,powered=true": { + "model": "emeraldcraft:block/purpuraceus_button_pressed", + "y": 270, + "x": 90, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_door.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_door.json new file mode 100644 index 00000000..7a48c4a5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_door.json @@ -0,0 +1,124 @@ +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/purpuraceus_door_bottom_left" + }, + "facing=east,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/purpuraceus_door_bottom_left_open", + "y": 90 + }, + "facing=east,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/purpuraceus_door_bottom_right" + }, + "facing=east,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/purpuraceus_door_bottom_right_open", + "y": 270 + }, + "facing=east,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/purpuraceus_door_top_left" + }, + "facing=east,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/purpuraceus_door_top_left_open", + "y": 90 + }, + "facing=east,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/purpuraceus_door_top_right" + }, + "facing=east,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/purpuraceus_door_top_right_open", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/purpuraceus_door_bottom_left", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/purpuraceus_door_bottom_left_open" + }, + "facing=north,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/purpuraceus_door_bottom_right", + "y": 270 + }, + "facing=north,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/purpuraceus_door_bottom_right_open", + "y": 180 + }, + "facing=north,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/purpuraceus_door_top_left", + "y": 270 + }, + "facing=north,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/purpuraceus_door_top_left_open" + }, + "facing=north,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/purpuraceus_door_top_right", + "y": 270 + }, + "facing=north,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/purpuraceus_door_top_right_open", + "y": 180 + }, + "facing=south,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/purpuraceus_door_bottom_left", + "y": 90 + }, + "facing=south,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/purpuraceus_door_bottom_left_open", + "y": 180 + }, + "facing=south,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/purpuraceus_door_bottom_right", + "y": 90 + }, + "facing=south,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/purpuraceus_door_bottom_right_open" + }, + "facing=south,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/purpuraceus_door_top_left", + "y": 90 + }, + "facing=south,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/purpuraceus_door_top_left_open", + "y": 180 + }, + "facing=south,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/purpuraceus_door_top_right", + "y": 90 + }, + "facing=south,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/purpuraceus_door_top_right_open" + }, + "facing=west,half=lower,hinge=left,open=false": { + "model": "emeraldcraft:block/purpuraceus_door_bottom_left", + "y": 180 + }, + "facing=west,half=lower,hinge=left,open=true": { + "model": "emeraldcraft:block/purpuraceus_door_bottom_left_open", + "y": 270 + }, + "facing=west,half=lower,hinge=right,open=false": { + "model": "emeraldcraft:block/purpuraceus_door_bottom_right", + "y": 180 + }, + "facing=west,half=lower,hinge=right,open=true": { + "model": "emeraldcraft:block/purpuraceus_door_bottom_right_open", + "y": 90 + }, + "facing=west,half=upper,hinge=left,open=false": { + "model": "emeraldcraft:block/purpuraceus_door_top_left", + "y": 180 + }, + "facing=west,half=upper,hinge=left,open=true": { + "model": "emeraldcraft:block/purpuraceus_door_top_left_open", + "y": 270 + }, + "facing=west,half=upper,hinge=right,open=false": { + "model": "emeraldcraft:block/purpuraceus_door_top_right", + "y": 180 + }, + "facing=west,half=upper,hinge=right,open=true": { + "model": "emeraldcraft:block/purpuraceus_door_top_right_open", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_fence.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_fence.json new file mode 100644 index 00000000..40274a4f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_fence.json @@ -0,0 +1,48 @@ +{ + "multipart": [ + { + "apply": { + "model": "emeraldcraft:block/purpuraceus_fence_post" + } + }, + { + "when": { + "north": "true" + }, + "apply": { + "model": "emeraldcraft:block/purpuraceus_fence_side", + "uvlock": true + } + }, + { + "when": { + "east": "true" + }, + "apply": { + "model": "emeraldcraft:block/purpuraceus_fence_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "true" + }, + "apply": { + "model": "emeraldcraft:block/purpuraceus_fence_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "true" + }, + "apply": { + "model": "emeraldcraft:block/purpuraceus_fence_side", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_fence_gate.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_fence_gate.json new file mode 100644 index 00000000..af48f540 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_fence_gate.json @@ -0,0 +1,80 @@ +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/purpuraceus_fence_gate" + }, + "facing=east,in_wall=false,open=true": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/purpuraceus_fence_gate_open" + }, + "facing=east,in_wall=true,open=false": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/purpuraceus_fence_gate_wall" + }, + "facing=east,in_wall=true,open=true": { + "uvlock": true, + "y": 270, + "model": "emeraldcraft:block/purpuraceus_fence_gate_wall_open" + }, + "facing=north,in_wall=false,open=false": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/purpuraceus_fence_gate" + }, + "facing=north,in_wall=false,open=true": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/purpuraceus_fence_gate_open" + }, + "facing=north,in_wall=true,open=false": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/purpuraceus_fence_gate_wall" + }, + "facing=north,in_wall=true,open=true": { + "uvlock": true, + "y": 180, + "model": "emeraldcraft:block/purpuraceus_fence_gate_wall_open" + }, + "facing=south,in_wall=false,open=false": { + "uvlock": true, + "model": "emeraldcraft:block/purpuraceus_fence_gate" + }, + "facing=south,in_wall=false,open=true": { + "uvlock": true, + "model": "emeraldcraft:block/purpuraceus_fence_gate_open" + }, + "facing=south,in_wall=true,open=false": { + "uvlock": true, + "model": "emeraldcraft:block/purpuraceus_fence_gate_wall" + }, + "facing=south,in_wall=true,open=true": { + "uvlock": true, + "model": "emeraldcraft:block/purpuraceus_fence_gate_wall_open" + }, + "facing=west,in_wall=false,open=false": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/purpuraceus_fence_gate" + }, + "facing=west,in_wall=false,open=true": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/purpuraceus_fence_gate_open" + }, + "facing=west,in_wall=true,open=false": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/purpuraceus_fence_gate_wall" + }, + "facing=west,in_wall=true,open=true": { + "uvlock": true, + "y": 90, + "model": "emeraldcraft:block/purpuraceus_fence_gate_wall_open" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_fungus.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_fungus.json new file mode 100644 index 00000000..b8f016b7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_fungus.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/purpuraceus_fungus" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_hyphae.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_hyphae.json new file mode 100644 index 00000000..aa69a6b5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_hyphae.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/purpuraceus_hyphae", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/purpuraceus_hyphae" + }, + "axis=z": { + "model": "emeraldcraft:block/purpuraceus_hyphae", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_nylium.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_nylium.json new file mode 100644 index 00000000..ae594f65 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_nylium.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/purpuraceus_nylium" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_planks.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_planks.json new file mode 100644 index 00000000..3fc73496 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_planks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/purpuraceus_planks" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_pressure_plate.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_pressure_plate.json new file mode 100644 index 00000000..3f8085bd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_pressure_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "emeraldcraft:block/purpuraceus_pressure_plate" + }, + "powered=true": { + "model": "emeraldcraft:block/purpuraceus_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_roots.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_roots.json new file mode 100644 index 00000000..c38ab534 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_roots.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/purpuraceus_roots" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_sign.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_sign.json new file mode 100644 index 00000000..ca6c2647 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/purpuraceus_sign" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_slab.json new file mode 100644 index 00000000..898799c0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/purpuraceus_slab" + }, + "type=double": { + "model": "emeraldcraft:block/purpuraceus_planks" + }, + "type=top": { + "model": "emeraldcraft:block/purpuraceus_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_stairs.json new file mode 100644 index 00000000..540295d3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/purpuraceus_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/purpuraceus_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/purpuraceus_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/purpuraceus_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/purpuraceus_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/purpuraceus_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/purpuraceus_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/purpuraceus_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/purpuraceus_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/purpuraceus_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/purpuraceus_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/purpuraceus_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/purpuraceus_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/purpuraceus_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/purpuraceus_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/purpuraceus_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/purpuraceus_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/purpuraceus_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/purpuraceus_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/purpuraceus_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/purpuraceus_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/purpuraceus_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/purpuraceus_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/purpuraceus_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/purpuraceus_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/purpuraceus_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/purpuraceus_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/purpuraceus_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/purpuraceus_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/purpuraceus_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/purpuraceus_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/purpuraceus_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/purpuraceus_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/purpuraceus_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/purpuraceus_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/purpuraceus_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/purpuraceus_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/purpuraceus_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/purpuraceus_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/purpuraceus_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_stem.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_stem.json new file mode 100644 index 00000000..fa751ea3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_stem.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/purpuraceus_stem", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/purpuraceus_stem" + }, + "axis=z": { + "model": "emeraldcraft:block/purpuraceus_stem", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_trapdoor.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_trapdoor.json new file mode 100644 index 00000000..5c651594 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_trapdoor.json @@ -0,0 +1,69 @@ +{ + "variants": { + "facing=east,half=bottom,open=false": { + "model": "emeraldcraft:block/purpuraceus_trapdoor_bottom", + "y": 90 + }, + "facing=east,half=bottom,open=true": { + "model": "emeraldcraft:block/purpuraceus_trapdoor_open", + "y": 90 + }, + "facing=east,half=top,open=false": { + "model": "emeraldcraft:block/purpuraceus_trapdoor_top", + "y": 90 + }, + "facing=east,half=top,open=true": { + "model": "emeraldcraft:block/purpuraceus_trapdoor_open", + "x": 180, + "y": 270 + }, + "facing=north,half=bottom,open=false": { + "model": "emeraldcraft:block/purpuraceus_trapdoor_bottom" + }, + "facing=north,half=bottom,open=true": { + "model": "emeraldcraft:block/purpuraceus_trapdoor_open" + }, + "facing=north,half=top,open=false": { + "model": "emeraldcraft:block/purpuraceus_trapdoor_top" + }, + "facing=north,half=top,open=true": { + "model": "emeraldcraft:block/purpuraceus_trapdoor_open", + "x": 180, + "y": 180 + }, + "facing=south,half=bottom,open=false": { + "model": "emeraldcraft:block/purpuraceus_trapdoor_bottom", + "y": 180 + }, + "facing=south,half=bottom,open=true": { + "model": "emeraldcraft:block/purpuraceus_trapdoor_open", + "y": 180 + }, + "facing=south,half=top,open=false": { + "model": "emeraldcraft:block/purpuraceus_trapdoor_top", + "y": 180 + }, + "facing=south,half=top,open=true": { + "model": "emeraldcraft:block/purpuraceus_trapdoor_open", + "x": 180, + "y": 0 + }, + "facing=west,half=bottom,open=false": { + "model": "emeraldcraft:block/purpuraceus_trapdoor_bottom", + "y": 270 + }, + "facing=west,half=bottom,open=true": { + "model": "emeraldcraft:block/purpuraceus_trapdoor_open", + "y": 270 + }, + "facing=west,half=top,open=false": { + "model": "emeraldcraft:block/purpuraceus_trapdoor_top", + "y": 270 + }, + "facing=west,half=top,open=true": { + "model": "emeraldcraft:block/purpuraceus_trapdoor_open", + "x": 180, + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_wall_sign.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_wall_sign.json new file mode 100644 index 00000000..ca6c2647 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_wall_sign.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/purpuraceus_sign" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_wart_block.json b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_wart_block.json new file mode 100644 index 00000000..691580a8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/purpuraceus_wart_block.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/purpuraceus_wart_block" + } + } +} \ 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/silver_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/silver_stairs.json new file mode 100644 index 00000000..5643d30b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/silver_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/silver_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/silver_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/silver_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/silver_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/silver_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/silver_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/silver_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/silver_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/silver_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/silver_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/silver_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/silver_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/silver_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/silver_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/silver_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/silver_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/silver_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/silver_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/silver_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/silver_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/silver_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/silver_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/silver_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/silver_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/silver_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/silver_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/silver_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/silver_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/silver_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/silver_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/silver_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/silver_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/silver_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/silver_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/silver_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/silver_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/silver_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/silver_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/silver_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/silver_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/silver_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/silver_wall.json new file mode 100644 index 00000000..d69fe086 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/silver_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/silver_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/silver_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/silver_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/silver_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/silver_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/silver_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/silver_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/silver_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/silver_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_dark_sandstone.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone.json new file mode 100644 index 00000000..8fe73357 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "emeraldcraft:block/smooth_dark_sandstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone_slab.json new file mode 100644 index 00000000..f2d22772 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/smooth_dark_sandstone_slab" + }, + "type=double": { + "model": "emeraldcraft:block/smooth_dark_sandstone" + }, + "type=top": { + "model": "emeraldcraft:block/smooth_dark_sandstone_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone_stairs.json new file mode 100644 index 00000000..bace84c0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/smooth_dark_sandstone_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/smooth_dark_sandstone_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/smooth_dark_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/steel_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/steel_stairs.json new file mode 100644 index 00000000..b4c8ab45 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/steel_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/steel_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/steel_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/steel_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/steel_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/steel_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/steel_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/steel_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/steel_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/steel_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/steel_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/steel_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/steel_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/steel_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/steel_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/steel_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/steel_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/steel_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/steel_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/steel_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/steel_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/steel_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/steel_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/steel_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/steel_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/steel_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/steel_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/steel_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/steel_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/steel_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/steel_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/steel_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/steel_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/steel_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/steel_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/steel_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/steel_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/steel_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/steel_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/steel_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/steel_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/steel_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/steel_wall.json new file mode 100644 index 00000000..51d77b2a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/steel_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/steel_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/steel_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/steel_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/steel_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/steel_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/steel_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/steel_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/steel_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/steel_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/stripped_ginkgo_log.json b/src/main/resources/assets/emeraldcraft/blockstates/stripped_ginkgo_log.json new file mode 100644 index 00000000..7cbcf0f0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/stripped_ginkgo_log.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/stripped_ginkgo_log_horizontal", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/stripped_ginkgo_log" + }, + "axis=z": { + "model": "emeraldcraft:block/stripped_ginkgo_log_horizontal", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/stripped_ginkgo_wood.json b/src/main/resources/assets/emeraldcraft/blockstates/stripped_ginkgo_wood.json new file mode 100644 index 00000000..22ce74b6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/stripped_ginkgo_wood.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/stripped_ginkgo_wood", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/stripped_ginkgo_wood" + }, + "axis=z": { + "model": "emeraldcraft:block/stripped_ginkgo_wood", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/stripped_palm_log.json b/src/main/resources/assets/emeraldcraft/blockstates/stripped_palm_log.json new file mode 100644 index 00000000..473f3ff6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/stripped_palm_log.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/stripped_palm_log_horizontal", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/stripped_palm_log" + }, + "axis=z": { + "model": "emeraldcraft:block/stripped_palm_log_horizontal", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/stripped_palm_wood.json b/src/main/resources/assets/emeraldcraft/blockstates/stripped_palm_wood.json new file mode 100644 index 00000000..4a79315a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/stripped_palm_wood.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/stripped_palm_wood", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/stripped_palm_wood" + }, + "axis=z": { + "model": "emeraldcraft:block/stripped_palm_wood", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/stripped_peach_log.json b/src/main/resources/assets/emeraldcraft/blockstates/stripped_peach_log.json new file mode 100644 index 00000000..e1fc7e29 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/stripped_peach_log.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/stripped_peach_log_horizontal", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/stripped_peach_log" + }, + "axis=z": { + "model": "emeraldcraft:block/stripped_peach_log_horizontal", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/stripped_peach_wood.json b/src/main/resources/assets/emeraldcraft/blockstates/stripped_peach_wood.json new file mode 100644 index 00000000..91592455 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/stripped_peach_wood.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/stripped_peach_wood", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/stripped_peach_wood" + }, + "axis=z": { + "model": "emeraldcraft:block/stripped_peach_wood", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/stripped_purpuraceus_hyphae.json b/src/main/resources/assets/emeraldcraft/blockstates/stripped_purpuraceus_hyphae.json new file mode 100644 index 00000000..d25cb1e8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/stripped_purpuraceus_hyphae.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/stripped_purpuraceus_hyphae", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/stripped_purpuraceus_hyphae" + }, + "axis=z": { + "model": "emeraldcraft:block/stripped_purpuraceus_hyphae", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/stripped_purpuraceus_stem.json b/src/main/resources/assets/emeraldcraft/blockstates/stripped_purpuraceus_stem.json new file mode 100644 index 00000000..70495239 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/stripped_purpuraceus_stem.json @@ -0,0 +1,16 @@ +{ + "variants": { + "axis=x": { + "model": "emeraldcraft:block/stripped_purpuraceus_stem", + "x": 90, + "y": 90 + }, + "axis=y": { + "model": "emeraldcraft:block/stripped_purpuraceus_stem" + }, + "axis=z": { + "model": "emeraldcraft:block/stripped_purpuraceus_stem", + "x": 90 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/uranium_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/uranium_stairs.json new file mode 100644 index 00000000..6d03ac1e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/uranium_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/uranium_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/uranium_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/uranium_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/uranium_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/uranium_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/uranium_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/uranium_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/uranium_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/uranium_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/uranium_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/uranium_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/uranium_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/uranium_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/uranium_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/uranium_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/uranium_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/uranium_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/uranium_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/uranium_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/uranium_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/uranium_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/uranium_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/uranium_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/uranium_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/uranium_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/uranium_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/uranium_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/uranium_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/uranium_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/uranium_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/uranium_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/uranium_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/uranium_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/uranium_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/uranium_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/uranium_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/uranium_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/uranium_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/uranium_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/uranium_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/uranium_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/uranium_wall.json new file mode 100644 index 00000000..aa7748b6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/uranium_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/uranium_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/uranium_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/uranium_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/uranium_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/uranium_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/uranium_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/uranium_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/uranium_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/uranium_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/vitrified_sand.json b/src/main/resources/assets/emeraldcraft/blockstates/vitrified_sand.json new file mode 100644 index 00000000..2aca7a14 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/vitrified_sand.json @@ -0,0 +1,21 @@ +{ + "variants": { + "": [ + { + "model": "emeraldcraft:block/vitrified_sand" + }, + { + "model": "emeraldcraft:block/vitrified_sand", + "y": 90 + }, + { + "model": "emeraldcraft:block/vitrified_sand", + "y": 180 + }, + { + "model": "emeraldcraft:block/vitrified_sand", + "y": 270 + } + ] + } +} \ 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/blockstates/zinc_slab.json b/src/main/resources/assets/emeraldcraft/blockstates/zinc_slab.json new file mode 100644 index 00000000..f152c193 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/zinc_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "emeraldcraft:block/zinc_slab" + }, + "type=double": { + "model": "create:block/zinc_block" + }, + "type=top": { + "model": "emeraldcraft:block/zinc_slab_top" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/zinc_stairs.json b/src/main/resources/assets/emeraldcraft/blockstates/zinc_stairs.json new file mode 100644 index 00000000..864bcc09 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/zinc_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/zinc_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/zinc_stairs_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/zinc_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/zinc_stairs_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "emeraldcraft:block/zinc_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "emeraldcraft:block/zinc_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=inner_right": { + "model": "emeraldcraft:block/zinc_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=outer_left": { + "model": "emeraldcraft:block/zinc_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=east,half=top,shape=outer_right": { + "model": "emeraldcraft:block/zinc_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=east,half=top,shape=straight": { + "model": "emeraldcraft:block/zinc_stairs", + "x": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/zinc_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/zinc_stairs_inner", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/zinc_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/zinc_stairs_outer", + "y": 270, + "uvlock": true + }, + "facing=north,half=bottom,shape=straight": { + "model": "emeraldcraft:block/zinc_stairs", + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_left": { + "model": "emeraldcraft:block/zinc_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=inner_right": { + "model": "emeraldcraft:block/zinc_stairs_inner", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=outer_left": { + "model": "emeraldcraft:block/zinc_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=north,half=top,shape=outer_right": { + "model": "emeraldcraft:block/zinc_stairs_outer", + "x": 180, + "uvlock": true + }, + "facing=north,half=top,shape=straight": { + "model": "emeraldcraft:block/zinc_stairs", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/zinc_stairs_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/zinc_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/zinc_stairs_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/zinc_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=south,half=bottom,shape=straight": { + "model": "emeraldcraft:block/zinc_stairs", + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_left": { + "model": "emeraldcraft:block/zinc_stairs_inner", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=inner_right": { + "model": "emeraldcraft:block/zinc_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=outer_left": { + "model": "emeraldcraft:block/zinc_stairs_outer", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=south,half=top,shape=outer_right": { + "model": "emeraldcraft:block/zinc_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=south,half=top,shape=straight": { + "model": "emeraldcraft:block/zinc_stairs", + "x": 180, + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "emeraldcraft:block/zinc_stairs_inner", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "emeraldcraft:block/zinc_stairs_inner", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "emeraldcraft:block/zinc_stairs_outer", + "y": 90, + "uvlock": true + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "emeraldcraft:block/zinc_stairs_outer", + "y": 180, + "uvlock": true + }, + "facing=west,half=bottom,shape=straight": { + "model": "emeraldcraft:block/zinc_stairs", + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_left": { + "model": "emeraldcraft:block/zinc_stairs_inner", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=inner_right": { + "model": "emeraldcraft:block/zinc_stairs_inner", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=outer_left": { + "model": "emeraldcraft:block/zinc_stairs_outer", + "x": 180, + "y": 180, + "uvlock": true + }, + "facing=west,half=top,shape=outer_right": { + "model": "emeraldcraft:block/zinc_stairs_outer", + "x": 180, + "y": 270, + "uvlock": true + }, + "facing=west,half=top,shape=straight": { + "model": "emeraldcraft:block/zinc_stairs", + "x": 180, + "y": 180, + "uvlock": true + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/blockstates/zinc_wall.json b/src/main/resources/assets/emeraldcraft/blockstates/zinc_wall.json new file mode 100644 index 00000000..7f9fbc67 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/blockstates/zinc_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "emeraldcraft:block/zinc_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "emeraldcraft:block/zinc_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "emeraldcraft:block/zinc_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "emeraldcraft:block/zinc_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "emeraldcraft:block/zinc_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "emeraldcraft:block/zinc_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "emeraldcraft:block/zinc_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "emeraldcraft:block/zinc_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "emeraldcraft:block/zinc_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/lang/en_gb.json b/src/main/resources/assets/emeraldcraft/lang/en_gb.json new file mode 100644 index 00000000..3e1e5dec --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/lang/en_gb.json @@ -0,0 +1,538 @@ +{ + "language": "British English", + "language.code": "en_gb", + "language.region": "Great Britain", + "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.vitrified_sand": "Vitrified Sand", + "block.emeraldcraft.dark_sand": "Dark Sand", + "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.dark_sandstone": "Dark Sandstone", + "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_dark_sandstone": "Smooth Dark 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_dark_sandstone": "Cut Dark 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.dark_sandstone_slab": "Dark Sandstone Slab", + "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_dark_sandstone_slab": "Smooth Dark 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_dark_sandstone_slab": "Cut Dark 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.dark_sandstone_stairs": "Dark Sandstone Stairs", + "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_dark_sandstone_stairs": "Smooth Dark 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.dark_sandstone_wall": "Dark Sandstone Wall", + "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.purple_nether_brick_slab": "Purple Nether Brick Slab", + "block.emeraldcraft.purple_nether_brick_stairs": "Purple Nether Brick Stairs", + "block.emeraldcraft.purple_nether_brick_wall": "Purple Nether Brick Wall", + "block.emeraldcraft.purple_nether_bricks": "Purple 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", + "block.emeraldcraft.cyan_petunia": "Cyan Petunia", + "block.emeraldcraft.magenta_petunia": "Magenta Petunia", + "block.emeraldcraft.higan_bana": "Higan Bana", + "block.emeraldcraft.potted_cyan_petunia": "Potted Cyan Petunia", + "block.emeraldcraft.potted_magenta_petunia": "Potted Magenta Petunia", + "block.emeraldcraft.potted_higan_bana": "Potted Higan Bana", + "block.emeraldcraft.ginkgo_sapling": "Ginkgo Sapling", + "block.emeraldcraft.potted_ginkgo_sapling": "Potted Ginkgo Sapling", + "block.emeraldcraft.ginkgo_log": "Ginkgo Log", + "block.emeraldcraft.stripped_ginkgo_log": "Stripped Ginkgo Log", + "block.emeraldcraft.ginkgo_wood": "Ginkgo Wood", + "block.emeraldcraft.stripped_ginkgo_wood": "Stripped Ginkgo Wood", + "block.emeraldcraft.ginkgo_leaves": "Ginkgo Leaves", + "block.emeraldcraft.ginkgo_planks": "Ginkgo Planks", + "block.emeraldcraft.ginkgo_stairs": "Ginkgo Stairs", + "block.emeraldcraft.ginkgo_slab": "Ginkgo Slab", + "block.emeraldcraft.ginkgo_fence": "Ginkgo Fence", + "block.emeraldcraft.ginkgo_fence_gate": "Ginkgo Fence Gate", + "block.emeraldcraft.ginkgo_door": "Ginkgo Door", + "block.emeraldcraft.ginkgo_trapdoor": "Ginkgo Trapdoor", + "block.emeraldcraft.ginkgo_pressure_plate": "Ginkgo Pressure Plate", + "block.emeraldcraft.ginkgo_button": "Ginkgo Button", + "block.emeraldcraft.ginkgo_sign": "Ginkgo Sign", + "block.emeraldcraft.ginkgo_wall_sign": "Ginkgo Wall Sign", + "block.emeraldcraft.palm_sapling": "Palm Sapling", + "block.emeraldcraft.potted_palm_sapling": "Potted Palm Sapling", + "block.emeraldcraft.palm_log": "Palm Log", + "block.emeraldcraft.stripped_palm_log": "Stripped Palm Log", + "block.emeraldcraft.palm_wood": "Palm Wood", + "block.emeraldcraft.stripped_palm_wood": "Stripped Palm Wood", + "block.emeraldcraft.palm_leaves": "Palm Leaves", + "block.emeraldcraft.palm_planks": "Palm Planks", + "block.emeraldcraft.palm_stairs": "Palm Stairs", + "block.emeraldcraft.palm_slab": "Palm Slab", + "block.emeraldcraft.palm_fence": "Palm Fence", + "block.emeraldcraft.palm_fence_gate": "Palm Fence Gate", + "block.emeraldcraft.palm_door": "Palm Door", + "block.emeraldcraft.palm_trapdoor": "Palm Trapdoor", + "block.emeraldcraft.palm_pressure_plate": "Palm Pressure Plate", + "block.emeraldcraft.palm_button": "Palm Button", + "block.emeraldcraft.palm_sign": "Palm Sign", + "block.emeraldcraft.palm_wall_sign": "Palm Wall Sign", + "block.emeraldcraft.peach_sapling": "Peach Sapling", + "block.emeraldcraft.potted_peach_sapling": "Potted Peach Sapling", + "block.emeraldcraft.peach_log": "Peach Log", + "block.emeraldcraft.stripped_peach_log": "Stripped Peach Log", + "block.emeraldcraft.peach_wood": "Peach Wood", + "block.emeraldcraft.stripped_peach_wood": "Stripped Peach Wood", + "block.emeraldcraft.peach_leaves": "Peach Leaves", + "block.emeraldcraft.peach_planks": "Peach Planks", + "block.emeraldcraft.peach_stairs": "Peach Stairs", + "block.emeraldcraft.peach_slab": "Peach Slab", + "block.emeraldcraft.peach_fence": "Peach Fence", + "block.emeraldcraft.peach_fence_gate": "Peach Fence Gate", + "block.emeraldcraft.peach_door": "Peach Door", + "block.emeraldcraft.peach_trapdoor": "Peach Trapdoor", + "block.emeraldcraft.peach_pressure_plate": "Peach Pressure Plate", + "block.emeraldcraft.peach_button": "Peach Button", + "block.emeraldcraft.peach_sign": "Peach Sign", + "block.emeraldcraft.peach_wall_sign": "Peach Wall Sign", + "block.emeraldcraft.purpuraceus_roots": "Purpuraceus Roots", + "block.emeraldcraft.purpuraceus_fungus": "Purpuraceus Fungus", + "block.emeraldcraft.purpuraceus_nylium": "Purpuraceus Nylium", + "block.emeraldcraft.potted_purpuraceus_roots": "Potted Purpuraceus Roots", + "block.emeraldcraft.potted_purpuraceus_fungus": "Potted Purpuraceus Fungus", + "block.emeraldcraft.purpuraceus_stem": "Purpuraceus Stem", + "block.emeraldcraft.stripped_purpuraceus_stem": "Stripped Purpuraceus Stem", + "block.emeraldcraft.purpuraceus_hyphae": "Purpuraceus Hyphae", + "block.emeraldcraft.stripped_purpuraceus_hyphae": "Stripped Purpuraceus Hyphae", + "block.emeraldcraft.purpuraceus_wart_block": "Purpuraceus Wart Block", + "block.emeraldcraft.purpuraceus_planks": "Purpuraceus Planks", + "block.emeraldcraft.purpuraceus_stairs": "Purpuraceus Stairs", + "block.emeraldcraft.purpuraceus_slab": "Purpuraceus Slab", + "block.emeraldcraft.purpuraceus_fence": "Purpuraceus Fence", + "block.emeraldcraft.purpuraceus_fence_gate": "Purpuraceus Fence Gate", + "block.emeraldcraft.purpuraceus_door": "Purpuraceus Door", + "block.emeraldcraft.purpuraceus_trapdoor": "Purpuraceus Trapdoor", + "block.emeraldcraft.purpuraceus_pressure_plate": "Purpuraceus Pressure Plate", + "block.emeraldcraft.purpuraceus_button": "Purpuraceus Button", + "block.emeraldcraft.purpuraceus_sign": "Purpuraceus Sign", + "block.emeraldcraft.purpuraceus_wall_sign": "Purpuraceus Wall Sign", + + "block.emeraldcraft.zinc_slab": "Zinc Slab", + "block.emeraldcraft.zinc_stairs": "Zinc Stairs", + "block.emeraldcraft.zinc_wall": "Zinc Wall", + "block.emeraldcraft.aluminum_stairs": "Aluminum Stairs", + "block.emeraldcraft.aluminum_wall": "Aluminum Wall", + "block.emeraldcraft.lead_stairs": "Lead Stairs", + "block.emeraldcraft.lead_wall": "Lead Wall", + "block.emeraldcraft.silver_stairs": "Silver Stairs", + "block.emeraldcraft.silver_wall": "Silver Wall", + "block.emeraldcraft.nickel_stairs": "Nickel Stairs", + "block.emeraldcraft.nickel_wall": "Nickel Wall", + "block.emeraldcraft.uranium_stairs": "Uranium Stairs", + "block.emeraldcraft.uranium_wall": "Uranium Wall", + "block.emeraldcraft.constantan_stairs": "Constantan Stairs", + "block.emeraldcraft.constantan_wall": "Constantan Wall", + "block.emeraldcraft.electrum_stairs": "Electrum Stairs", + "block.emeraldcraft.electrum_wall": "Electrum Wall", + "block.emeraldcraft.steel_stairs": "Steel Stairs", + "block.emeraldcraft.steel_wall": "Steel Wall", + + "block.minecraft.banner.emeraldcraft.bee.black": "Black Bee", + "block.minecraft.banner.emeraldcraft.bee.blue": "Blue Bee", + "block.minecraft.banner.emeraldcraft.bee.brown": "Brown Bee", + "block.minecraft.banner.emeraldcraft.bee.cyan": "Cyan Bee", + "block.minecraft.banner.emeraldcraft.bee.gray": "Grey Bee", + "block.minecraft.banner.emeraldcraft.bee.green": "Green Bee", + "block.minecraft.banner.emeraldcraft.bee.lightBlue": "Light Blue Bee", + "block.minecraft.banner.emeraldcraft.bee.lime": "Lime Bee", + "block.minecraft.banner.emeraldcraft.bee.magenta": "Magenta Bee", + "block.minecraft.banner.emeraldcraft.bee.orange": "Orange Bee", + "block.minecraft.banner.emeraldcraft.bee.pink": "Pink Bee", + "block.minecraft.banner.emeraldcraft.bee.purple": "Purple Bee", + "block.minecraft.banner.emeraldcraft.bee.red": "Red Bee", + "block.minecraft.banner.emeraldcraft.bee.silver": "Light Grey Bee", + "block.minecraft.banner.emeraldcraft.bee.white": "White Bee", + "block.minecraft.banner.emeraldcraft.bee.yellow": "Yellow Bee", + "block.minecraft.banner.emeraldcraft.snow.black": "Black Snow", + "block.minecraft.banner.emeraldcraft.snow.blue": "Blue Snow", + "block.minecraft.banner.emeraldcraft.snow.brown": "Brown Snow", + "block.minecraft.banner.emeraldcraft.snow.cyan": "Cyan Snow", + "block.minecraft.banner.emeraldcraft.snow.gray": "Grey Snow", + "block.minecraft.banner.emeraldcraft.snow.green": "Green Snow", + "block.minecraft.banner.emeraldcraft.snow.lightBlue": "Light Blue Snow", + "block.minecraft.banner.emeraldcraft.snow.lime": "Lime Snow", + "block.minecraft.banner.emeraldcraft.snow.magenta": "Magenta Snow", + "block.minecraft.banner.emeraldcraft.snow.orange": "Orange Snow", + "block.minecraft.banner.emeraldcraft.snow.pink": "Pink Snow", + "block.minecraft.banner.emeraldcraft.snow.purple": "Purple Snow", + "block.minecraft.banner.emeraldcraft.snow.red": "Red Snow", + "block.minecraft.banner.emeraldcraft.snow.silver": "Light Grey Snow", + "block.minecraft.banner.emeraldcraft.snow.white": "White Snow", + "block.minecraft.banner.emeraldcraft.snow.yellow": "Yellow Snow", + "block.minecraft.banner.emeraldcraft.bottle.black": "Black Bottle", + "block.minecraft.banner.emeraldcraft.bottle.blue": "Blue Bottle", + "block.minecraft.banner.emeraldcraft.bottle.brown": "Brown Bottle", + "block.minecraft.banner.emeraldcraft.bottle.cyan": "Cyan Bottle", + "block.minecraft.banner.emeraldcraft.bottle.gray": "Grey Bottle", + "block.minecraft.banner.emeraldcraft.bottle.green": "Green Bottle", + "block.minecraft.banner.emeraldcraft.bottle.lightBlue": "Light Blue Bottle", + "block.minecraft.banner.emeraldcraft.bottle.lime": "Lime Bottle", + "block.minecraft.banner.emeraldcraft.bottle.magenta": "Magenta Bottle", + "block.minecraft.banner.emeraldcraft.bottle.orange": "Orange Bottle", + "block.minecraft.banner.emeraldcraft.bottle.pink": "Pink Bottle", + "block.minecraft.banner.emeraldcraft.bottle.purple": "Purple Bottle", + "block.minecraft.banner.emeraldcraft.bottle.red": "Red Bottle", + "block.minecraft.banner.emeraldcraft.bottle.silver": "Light Grey Bottle", + "block.minecraft.banner.emeraldcraft.bottle.white": "White Bottle", + "block.minecraft.banner.emeraldcraft.bottle.yellow": "Yellow Bottle", + "block.minecraft.banner.emeraldcraft.potion.black": "Black Potion", + "block.minecraft.banner.emeraldcraft.potion.blue": "Blue Potion", + "block.minecraft.banner.emeraldcraft.potion.brown": "Brown Potion", + "block.minecraft.banner.emeraldcraft.potion.cyan": "Cyan Potion", + "block.minecraft.banner.emeraldcraft.potion.gray": "Grey Potion", + "block.minecraft.banner.emeraldcraft.potion.green": "Green Potion", + "block.minecraft.banner.emeraldcraft.potion.lightBlue": "Light Blue Potion", + "block.minecraft.banner.emeraldcraft.potion.lime": "Lime Potion", + "block.minecraft.banner.emeraldcraft.potion.magenta": "Magenta Potion", + "block.minecraft.banner.emeraldcraft.potion.orange": "Orange Potion", + "block.minecraft.banner.emeraldcraft.potion.pink": "Pink Potion", + "block.minecraft.banner.emeraldcraft.potion.purple": "Purple Potion", + "block.minecraft.banner.emeraldcraft.potion.red": "Red Potion", + "block.minecraft.banner.emeraldcraft.potion.silver": "Light Grey Potion", + "block.minecraft.banner.emeraldcraft.potion.white": "White Potion", + "block.minecraft.banner.emeraldcraft.potion.yellow": "Yellow Potion", + + "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.bigeye_spawn_egg": "Purple Spotted Bigeye Spawn Egg", + "item.emeraldcraft.herring_spawn_egg": "Herring Spawn Egg", + "item.emeraldcraft.wraith_spawn_egg": "Wraith Spawn Egg", + "item.emeraldcraft.manta_spawn_egg": "Manta 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", + "item.emeraldcraft.ginkgo_nut": "Ginkgo nut", + "item.emeraldcraft.ginkgo_boat": "Ginkgo Boat", + "item.emeraldcraft.palm_boat": "Palm Boat", + "item.emeraldcraft.peach_boat": "Peach Boat", + "item.emeraldcraft.ginkgo_chest_boat": "Ginkgo Chest Boat", + "item.emeraldcraft.palm_chest_boat": "Palm Chest Boat", + "item.emeraldcraft.peach_chest_boat": "Peach Chest Boat", + "item.emeraldcraft.peach": "Peach", + "item.emeraldcraft.golden_peach": "Golden Peach", + "item.emeraldcraft.potion_cookie": "Cookie", + "item.emeraldcraft.cooked_tropical_fish": "Cooked Tropical Fish", + "item.emeraldcraft.cooked_purpuraceus_fungus": "Cooked Purpuraceus Fungus", + "item.emeraldcraft.boiled_egg": "Boiled Egg", + "item.emeraldcraft.chorus_flower_eggdrop_soup": "Chorus Flower Eggdrop Soup", + "item.emeraldcraft.herring": "Herring", + "item.emeraldcraft.cooked_herring": "Cooked Herring", + "item.emeraldcraft.purple_spotted_bigeye": "Purple Spotted Bigeye", + "item.emeraldcraft.cooked_purple_spotted_bigeye": "Cooked Purple Spotted Bigeye", + "item.emeraldcraft.caramelized_potato": "Caramelized Potato", + "item.emeraldcraft.rougamo": "Rougamo", + "item.emeraldcraft.beef_and_potato_stew": "Beef and Potato Stew", + "item.emeraldcraft.braised_chicken": "Braised Chicken", + "item.emeraldcraft.sausage": "Sausage", + "item.emeraldcraft.cooked_sausage": "Cooked Sausage", + "item.emeraldcraft.gluten": "Gluten", + "item.emeraldcraft.warden_heart": "Warden Heart", + "item.emeraldcraft.stir_fried_warden_heart": "Stir-Fried Warden Heart", + "item.emeraldcraft.chili": "Chili", + "item.emeraldcraft.chili_seed": "Chili Seed", + "item.emeraldcraft.apple_juice": "Apple Juice", + "item.emeraldcraft.beetroot_juice": "Beetroot Juice", + "item.emeraldcraft.carrot_juice": "Carrot Juice", + "item.emeraldcraft.melon_juice": "Melon Juice", + "item.emeraldcraft.peach_juice": "Peach Juice", + "item.emeraldcraft.pumpkin_juice": "Pumpkin Juice", + "item.emeraldcraft.herring_bucket": "Herring Bucket", + "item.emeraldcraft.bigeye_bucket": "Purple Spotted Bigeye Bucket", + + "item.emeraldcraft.melted_zinc_bucket": "Melted Zinc Bucket", + "item.emeraldcraft.zinc_concentrate": "Zinc Concentrate", + "item.emeraldcraft.melted_aluminum_bucket": "Melted Aluminum Bucket", + "item.emeraldcraft.aluminum_concentrate": "Aluminum Concentrate", + "item.emeraldcraft.melted_lead_bucket": "Melted Lead Bucket", + "item.emeraldcraft.lead_concentrate": "Lead Concentrate", + "item.emeraldcraft.melted_silver_bucket": "Melted Silver Bucket", + "item.emeraldcraft.silver_concentrate": "Silver Concentrate", + "item.emeraldcraft.melted_nickel_bucket": "Melted Nickel Bucket", + "item.emeraldcraft.nickel_concentrate": "Nickel Concentrate", + "item.emeraldcraft.melted_uranium_bucket": "Melted Uranium Bucket", + "item.emeraldcraft.uranium_concentrate": "Uranium Concentrate", + + "item.minecraft.potion.effect.absorption": "Absorption Potion", + "item.minecraft.splash_potion.effect.absorption": "Splash Absorption Potion", + "item.minecraft.lingering_potion.effect.absorption": "Lingering Absorption Potion", + "item.minecraft.potion.effect.blindness": "Blindness Potion", + "item.minecraft.splash_potion.effect.blindness": "Splash Blindness Potion", + "item.minecraft.lingering_potion.effect.blindness": "Lingering Blindness Potion", + "item.minecraft.potion.effect.hunger": "Hunger Potion", + "item.minecraft.splash_potion.effect.hunger": "Splash Hunger Potion", + "item.minecraft.lingering_potion.effect.hunger": "Lingering Hunger Potion", + "item.minecraft.potion.effect.saturation": "Saturation Potion", + "item.minecraft.splash_potion.effect.saturation": "Splash Saturation Potion", + "item.minecraft.lingering_potion.effect.saturation": "Lingering Saturation Potion", + "item.minecraft.potion.effect.wither": "Wither Potion", + "item.minecraft.splash_potion.effect.wither": "Splash Wither Potion", + "item.minecraft.lingering_potion.effect.wither": "Lingering Wither Potion", + "item.minecraft.potion.effect.glowing": "Glowing Potion", + "item.minecraft.splash_potion.effect.glowing": "Splash Glowing Potion", + "item.minecraft.lingering_potion.effect.glowing": "Lingering Glowing Potion", + + "item.minecraft.tipped_arrow.effect.absorption": "Arrow of Absorption", + "item.minecraft.tipped_arrow.effect.blindness": "Arrow of Blindness", + "item.minecraft.tipped_arrow.effect.hunger": "Arrow of Hunger", + "item.minecraft.tipped_arrow.effect.saturation": "Arrow of Saturation", + "item.minecraft.tipped_arrow.effect.wither": "Arrow of Wither", + "item.minecraft.tipped_arrow.effect.glowing": "Arrow of Glowing", + + "entity.emeraldcraft.piglin_cutey": "Piglin Cutey", + "entity.emeraldcraft.nether_pigman": "Nether Pigman", + "entity.emeraldcraft.nether_lambman": "Nether Lambman", + "entity.emeraldcraft.purple_spotted_bigeye": "Purple-spotted Bigeye", + "entity.emeraldcraft.herring": "Herring", + "entity.emeraldcraft.wraith": "Wraith", + "entity.emeraldcraft.manta": "Manta", + "entity.emeraldcraft.boat": "Boat", + "entity.emeraldcraft.chest_boat": "Chest Boat", + "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", + "subtitles.entity.herring.flop": "Herring flops", + "subtitles.entity.herring.hurt": "Herring hurts", + "subtitles.entity.herring.death": "Herring dies", + "subtitles.entity.purple_spotted_bigeye.flop": "Purple Spotted Bigeye flops", + "subtitles.entity.purple_spotted_bigeye.hurt": "Purple Spotted Bigeye hurts", + "subtitles.entity.purple_spotted_bigeye.death": "Purple Spotted Bigeye dies", + "subtitles.entity.wraith.ambient": "Wraith groans", + "subtitles.entity.wraith.hurt": "Wraith hurts", + "subtitles.entity.wraith.death": "Wraith dies", + "subtitles.entity.manta.ambient": "Manta flies", + "subtitles.entity.manta.hurt": "Manta hurts", + "subtitles.entity.manta.death": "Manta dies", + + "subtitles.block.flower.drop_leaves": "Higan Bana Drops Leaves", + + "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", + + "desc.emeraldcraft.carpentry_table": "Craft wood related blocks and items in smaller and more precise quantities, and even more efficient than crafting for certain recipes", + "desc.emeraldcraft.glass_kiln": "Cook glass and terracotta items and takes only half the time as a standard furnace takes", + "desc.emeraldcraft.mineral_table": "Smelt mineral nuggets from common blocks, which costs blaze powder", + "desc.emeraldcraft.crystalball_table": "Need XP?", + "desc.emeraldcraft.squeezer": "Get honey from honeycomb blocks", + "desc.emeraldcraft.continuous_miner": "An automated miner that cost melted emerald and need to be activated by redstone signal", + "desc.emeraldcraft.ice_maker": "Solidify liquid, which costs water", + "desc.emeraldcraft.melter": "Melt solid, which costs fuel", + + "biome.emeraldcraft.dead_crimson_ocean": "Dead Crimson Ocean", + "biome.emeraldcraft.dead_warped_ocean": "Dead Warped Ocean", + "biome.emeraldcraft.deep_dead_crimson_ocean": "Deep Dead Crimson Ocean", + "biome.emeraldcraft.deep_dead_warped_ocean": "Deep Dead Warped Ocean", + "biome.emeraldcraft.xanadu": "Xanadu", + "biome.emeraldcraft.ginkgo_forest": "Ginkgo Forest", + "biome.emeraldcraft.karst_hills": "Karst Hills", + "biome.emeraldcraft.petunia_plains": "Petunia Plains", + "biome.emeraldcraft.golden_beach": "Golden Beach", + "biome.emeraldcraft.palm_beach": "Palm Beach", + "biome.emeraldcraft.azure_desert": "Azure Desert", + "biome.emeraldcraft.jadeite_desert": "Jadeite Desert", + "biome.emeraldcraft.volcanic_caves": "Volcanic Caves", + "biome.emeraldcraft.quartz_desert": "Quartz Desert", + "biome.emeraldcraft.emery_desert": "Emery Desert", + "biome.emeraldcraft.purpuraceus_swamp": "Purpuraceus Swamp", + + "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 armour.", + "advancements.emeraldcraft.green_light.title": "Power of Money", + "advancements.emeraldcraft.green_light.description": "Obtain all emerald armours.", + "advancements.emeraldcraft.cure_phantom.title": "Phantom Doctor", + "advancements.emeraldcraft.cure_phantom.description": "Cure a phantom with spectral arrow or glowing splash potion, and a golden peach.", + "advancements.emeraldcraft.cure_zombified_piglin.title": "Zombified Piglin Doctor", + "advancements.emeraldcraft.cure_zombified_piglin.description": "Cure a zombified piglin with hunger splash potion and a golden carrot.", + "advancements.emeraldcraft.friend_from_the_nether.title": "Friend from the Nether", + "advancements.emeraldcraft.friend_from_the_nether.description": "Find a piglin cutey.", + "advancements.emeraldcraft.surely_see_each_other_again.title": "Surely See Each Other Again", + "advancements.emeraldcraft.surely_see_each_other_again.description": "Help piglin cutey achieve her desire.", + "advancements.emeraldcraft.a_horrible_entrenchment.title": "A Horrible Entrenchment", + "advancements.emeraldcraft.a_horrible_entrenchment.description": "Find a entrenchment. Watch out for the wraiths!", + "advancements.emeraldcraft.noisy_guy.title": "Noisy Guy", + "advancements.emeraldcraft.noisy_guy.description": "Obtain a continuous miner.", + "advancements.emeraldcraft.hotter_topic.title": "Hotter Topic", + "advancements.emeraldcraft.hotter_topic.description": "Obtain a melter.", + "advancements.emeraldcraft.more_effective_craft.title": "More Effective Craft", + "advancements.emeraldcraft.more_effective_craft.description": "Craft a concentrate from raw ores.", + "advancements.emeraldcraft.ice_cream_please.title": "Ice Cream Please", + "advancements.emeraldcraft.ice_cream_please.description": "Obtain a ice maker.", + + "filled_map.shelter": "Search & Rescue Explorer Map", + "filled_map.entrenchment": "Geocenter Explorer Map", + + "fluids.save.bucket": "Able to fill %s %s", + "fluids.name.water": "Water", + "fluids.name.lava": "Lava", + "fluids.name.melted_emerald": "Melted Emerald", + "fluids.name.melted_iron": "Melted Iron", + "fluids.name.melted_gold": "Melted Gold", + "fluids.name.melted_copper": "Melted Copper", + "fluids.name.melted_zinc": "Melted Zinc", + "fluids.name.melted_aluminum": "Melted Aluminum", + "fluids.name.melted_lead": "Melted Lead", + "fluids.name.melted_silver": "Melted Silver", + "fluids.name.melted_nickel": "Melted Nickel", + "fluids.name.melted_uranium": "Melted Uranium", + + "jei.emeraldcraft.villager_trade": "Trade with Villagers" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/lang/en_ud.json b/src/main/resources/assets/emeraldcraft/lang/en_ud.json new file mode 100644 index 00000000..de2bf79b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/lang/en_ud.json @@ -0,0 +1,538 @@ +{ + "language": "ɥsᴉꞁᵷuƎ (uʍoᗡ ǝpᴉsd∩)", + "language.code": "en_ud", + "language.region": "", + "itemGroup.emeraldcraft": "ʇɟɐɹƆ plɐɹǝɯƎ", + "emeraldcraft.config.title": "", + + "block.emeraldcraft.emerald_slab": "qɐlS plɐɹǝɯƎ", + "block.emeraldcraft.emerald_stairs": "sɹᴉɐʇS plɐɹǝɯƎ", + "block.emeraldcraft.emerald_wall": "llɐM plɐɹǝɯƎ", + "block.emeraldcraft.diamond_slab": "qɐlS puoɯɐᴉp", + "block.emeraldcraft.diamond_stairs": "sɹᴉɐʇS puoɯɐᴉp", + "block.emeraldcraft.diamond_wall": "llɐM puoɯɐᴉp", + "block.emeraldcraft.gold_slab": "qɐlS ploפ", + "block.emeraldcraft.gold_stairs": "sɹᴉɐʇS ploפ", + "block.emeraldcraft.gold_wall": "llɐM ploפ", + "block.emeraldcraft.iron_slab": "qɐlS uoɹI", + "block.emeraldcraft.iron_stairs": "sɹᴉɐʇS uoɹI", + "block.emeraldcraft.iron_wall": "llɐM uoɹI", + "block.emeraldcraft.lapis_slab": "qɐlS sᴉdɐ˥", + "block.emeraldcraft.lapis_stairs": "sɹᴉɐʇS sᴉdɐ˥", + "block.emeraldcraft.lapis_wall": "llɐM sᴉdɐ˥", + "block.emeraldcraft.netherite_slab": "qɐlS ǝʇᴉɹǝɥʇǝN", + "block.emeraldcraft.netherite_stairs": "sɹᴉɐʇS ǝʇᴉɹǝɥʇǝN", + "block.emeraldcraft.netherite_wall": "llɐM ǝʇᴉɹǝɥʇǝN", + "block.emeraldcraft.vitrified_sand": "puɐS pǝᴉɟᴉɹʇᴉΛ", + "block.emeraldcraft.dark_sand": "puɐS ʞɹɐp", + "block.emeraldcraft.azure_sand": "puɐS ǝɹnz∀", + "block.emeraldcraft.quartz_sand": "puɐS zʇɹɐnQ", + "block.emeraldcraft.jadeite_sand": "puɐS ǝʇᴉǝpɐſ", + "block.emeraldcraft.emery_sand": "puɐS ʎɹǝɯƎ", + "block.emeraldcraft.dark_sandstone": "ǝuoʇspuɐS ʞɹɐp", + "block.emeraldcraft.azure_sandstone": "ǝuoʇspuɐS ǝɹnz∀", + "block.emeraldcraft.quartz_sandstone": "ǝuoʇspuɐS zʇɹɐnQ", + "block.emeraldcraft.jadeite_sandstone": "ǝuoʇspuɐS ǝʇᴉǝpɐſ", + "block.emeraldcraft.emery_sandstone": "ǝuoʇspuɐS ʎɹǝɯƎ", + "block.emeraldcraft.smooth_dark_sandstone": "ǝuoʇspuɐS ʞɹɐp ɥʇooɯS", + "block.emeraldcraft.smooth_azure_sandstone": "ǝuoʇspuɐS ǝɹnz∀ ɥʇooɯS", + "block.emeraldcraft.smooth_quartz_sandstone": "ǝuoʇspuɐS zʇɹɐnQ ɥʇooɯS", + "block.emeraldcraft.smooth_jadeite_sandstone": "ǝuoʇspuɐS ǝʇᴉǝpɐſ ɥʇooɯS", + "block.emeraldcraft.smooth_emery_sandstone": "ǝuoʇspuɐS ʎɹǝɯƎ ɥʇooɯS", + "block.emeraldcraft.cut_dark_sandstone": "ǝuoʇspuɐS ʞɹɐp ʇnƆ", + "block.emeraldcraft.cut_azure_sandstone": "ǝuoʇspuɐS ǝɹnz∀ ʇnƆ", + "block.emeraldcraft.cut_quartz_sandstone": "ǝuoʇspuɐS zʇɹɐnQ ʇnƆ", + "block.emeraldcraft.cut_jadeite_sandstone": "ǝuoʇspuɐS ǝʇᴉǝpɐſ ʇnƆ", + "block.emeraldcraft.cut_emery_sandstone": "ǝuoʇspuɐS ʎɹǝɯƎ ʇnƆ", + "block.emeraldcraft.dark_sandstone_slab": "qɐlS ǝuoʇspuɐS ʞɹɐp", + "block.emeraldcraft.azure_sandstone_slab": "qɐlS ǝuoʇspuɐS ǝɹnz∀", + "block.emeraldcraft.quartz_sandstone_slab": "qɐlS ǝuoʇspuɐS zʇɹɐnQ", + "block.emeraldcraft.jadeite_sandstone_slab": "qɐlS ǝuoʇspuɐS ǝʇᴉǝpɐſ", + "block.emeraldcraft.emery_sandstone_slab": "qɐlS ǝuoʇspuɐS ʎɹǝɯƎ", + "block.emeraldcraft.smooth_dark_sandstone_slab": "qɐlS ǝuoʇspuɐS ʞɹɐp ɥʇooɯS", + "block.emeraldcraft.smooth_azure_sandstone_slab": "qɐlS ǝuoʇspuɐS ǝɹnz∀ ɥʇooɯS", + "block.emeraldcraft.smooth_quartz_sandstone_slab": "qɐlS ǝuoʇspuɐS zʇɹɐnQ ɥʇooɯS", + "block.emeraldcraft.smooth_jadeite_sandstone_slab": "qɐlS ǝuoʇspuɐS ǝʇᴉǝpɐſ ɥʇooɯS", + "block.emeraldcraft.smooth_emery_sandstone_slab": "qɐlS ǝuoʇspuɐS ʎɹǝɯƎ ɥʇooɯS", + "block.emeraldcraft.cut_dark_sandstone_slab": "qɐlS ǝuoʇspuɐS ʞɹɐp ʇnƆ", + "block.emeraldcraft.cut_azure_sandstone_slab": "qɐlS ǝuoʇspuɐS ǝɹnz∀ ʇnƆ", + "block.emeraldcraft.cut_quartz_sandstone_slab": "qɐlS ǝuoʇspuɐS zʇɹɐnQ ʇnƆ", + "block.emeraldcraft.cut_jadeite_sandstone_slab": "qɐlS ǝuoʇspuɐS ǝʇᴉǝpɐſ ʇnƆ", + "block.emeraldcraft.cut_emery_sandstone_slab": "qɐlS ǝuoʇspuɐS ʎɹǝɯƎ ʇnƆ", + "block.emeraldcraft.dark_sandstone_stairs": "sɹᴉɐʇS ǝuoʇspuɐS ʞɹɐp", + "block.emeraldcraft.azure_sandstone_stairs": "sɹᴉɐʇS ǝuoʇspuɐS ǝɹnz∀", + "block.emeraldcraft.quartz_sandstone_stairs": "sɹᴉɐʇS ǝuoʇspuɐS zʇɹɐnQ", + "block.emeraldcraft.jadeite_sandstone_stairs": "sɹᴉɐʇS ǝuoʇspuɐS ǝʇᴉǝpɐſ", + "block.emeraldcraft.emery_sandstone_stairs": "sɹᴉɐʇS ǝuoʇspuɐS ʎɹǝɯƎ", + "block.emeraldcraft.smooth_dark_sandstone_stairs": "sɹᴉɐʇS ǝuoʇspuɐS ʞɹɐp ɥʇooɯS", + "block.emeraldcraft.smooth_azure_sandstone_stairs": "sɹᴉɐʇS ǝuoʇspuɐS ǝɹnz∀ ɥʇooɯS", + "block.emeraldcraft.smooth_quartz_sandstone_stairs": "sɹᴉɐʇS ǝuoʇspuɐS zʇɹɐnQ ɥʇooɯS", + "block.emeraldcraft.smooth_jadeite_sandstone_stairs": "sɹᴉɐʇS ǝuoʇspuɐS ǝʇᴉǝpɐſ ɥʇooɯS", + "block.emeraldcraft.smooth_emery_sandstone_stairs": "sɹᴉɐʇS ǝuoʇspuɐS ʎɹǝɯƎ ɥʇooɯS", + "block.emeraldcraft.dark_sandstone_wall": "llɐM ǝuoʇspuɐS ʞɹɐp", + "block.emeraldcraft.azure_sandstone_wall": "llɐM ǝuoʇspuɐS ǝɹnz∀", + "block.emeraldcraft.quartz_sandstone_wall": "llɐM ǝuoʇspuɐS zʇɹɐnQ", + "block.emeraldcraft.jadeite_sandstone_wall": "llɐM ǝuoʇspuɐS ǝʇᴉǝpɐſ", + "block.emeraldcraft.emery_sandstone_wall": "llɐM ǝuoʇspuɐS ʎɹǝɯƎ", + "block.emeraldcraft.carpentry_table": "ǝlqɐ┴ ʎɹʇuǝdɹɐƆ", + "block.emeraldcraft.glass_kiln": "ulᴉʞ ssɐlפ", + "block.emeraldcraft.mineral_table": "ǝlqɐ┴ lɐɹǝuᴉW", + "block.emeraldcraft.crystalball_table": "ǝlqɐ┴ llɐqlɐʇsʎɹƆ", + "block.emeraldcraft.squeezer": "ɹǝzǝǝnbS", + "block.emeraldcraft.continuous_miner": "ɹǝuᴉW snonuᴉʇuoƆ", + "block.emeraldcraft.ice_maker": "ɹǝʞɐW ǝɔI", + "block.emeraldcraft.melter": "ɹǝʇlǝW", + "block.emeraldcraft.blue_nether_brick_slab": "qɐlS ʞɔᴉɹq ɹǝɥʇǝN ǝnlq", + "block.emeraldcraft.blue_nether_brick_stairs": "sɹᴉɐʇS ʞɔᴉɹq ɹǝɥʇǝN ǝnlq", + "block.emeraldcraft.blue_nether_brick_wall": "llɐM ʞɔᴉɹq ɹǝɥʇǝN ǝnlq", + "block.emeraldcraft.blue_nether_bricks": "sʞɔᴉɹq ɹǝɥʇǝN ǝnlq", + "block.emeraldcraft.purple_nether_brick_slab": "qɐlS ʞɔᴉɹq ɹǝɥʇǝN ǝldɹnԀ", + "block.emeraldcraft.purple_nether_brick_stairs": "sɹᴉɐʇS ʞɔᴉɹq ɹǝɥʇǝN ǝldɹnԀ", + "block.emeraldcraft.purple_nether_brick_wall": "llɐM ʞɔᴉɹq ɹǝɥʇǝN ǝldɹnԀ", + "block.emeraldcraft.purple_nether_bricks": "sʞɔᴉɹq ɹǝɥʇǝN ǝldɹnԀ", + "block.emeraldcraft.crimson_stone_slab": "qɐlS ǝuoʇS uosɯᴉɹƆ", + "block.emeraldcraft.crimson_stone_stairs": "sɹᴉɐʇS ǝuoʇS uosɯᴉɹƆ", + "block.emeraldcraft.crimson_stone_wall": "llɐM ǝuoʇS uosɯᴉɹƆ", + "block.emeraldcraft.crimson_stone": "ǝuoʇS uosɯᴉɹƆ", + "block.emeraldcraft.crimson_cobblestone_slab": "qɐlS ǝuoʇsǝlqqoƆ uosɯᴉɹƆ", + "block.emeraldcraft.crimson_cobblestone_stairs": "sɹᴉɐʇS ǝuoʇsǝlqqoƆ uosɯᴉɹƆ", + "block.emeraldcraft.crimson_cobblestone_wall": "llɐM ǝuoʇsǝlqqoƆ uosɯᴉɹƆ", + "block.emeraldcraft.crimson_cobblestone": "ǝuoʇsǝlqqoƆ uosɯᴉɹƆ", + "block.emeraldcraft.warped_stone_slab": "qɐlS ǝuoʇS pǝdɹɐM", + "block.emeraldcraft.warped_stone_stairs": "sɹᴉɐʇS ǝuoʇS pǝdɹɐM", + "block.emeraldcraft.warped_stone_wall": "llɐM ǝuoʇS pǝdɹɐM", + "block.emeraldcraft.warped_stone": "ǝuoʇS pǝdɹɐM", + "block.emeraldcraft.warped_cobblestone_slab": "qɐlS ǝuoʇsǝlqqoƆ pǝdɹɐM", + "block.emeraldcraft.warped_cobblestone_stairs": "sɹᴉɐʇS ǝuoʇsǝlqqoƆ pǝdɹɐM", + "block.emeraldcraft.warped_cobblestone_wall": "llɐM ǝuoʇsǝlqqoƆ pǝdɹɐM", + "block.emeraldcraft.warped_cobblestone": "ǝuoʇsǝlqqoƆ pǝdɹɐM", + "block.emeraldcraft.cyan_petunia": "ɐᴉunʇǝԀ uɐʎƆ", + "block.emeraldcraft.magenta_petunia": "ɐᴉunʇǝԀ ɐʇuǝƃɐW", + "block.emeraldcraft.higan_bana": "ɐuɐq uɐƃᴉH", + "block.emeraldcraft.potted_cyan_petunia": "ɐᴉunʇǝԀ uɐʎƆ pǝʇʇoԀ", + "block.emeraldcraft.potted_magenta_petunia": "ɐᴉunʇǝԀ ɐʇuǝƃɐW pǝʇʇoԀ", + "block.emeraldcraft.potted_higan_bana": "ɐuɐq uɐƃᴉH pǝʇʇoԀ", + "block.emeraldcraft.ginkgo_sapling": "ƃuᴉldɐS oƃʞuᴉפ", + "block.emeraldcraft.potted_ginkgo_sapling": "ƃuᴉldɐS oƃʞuᴉפ pǝʇʇoԀ", + "block.emeraldcraft.ginkgo_log": "ƃo˥ oƃʞuᴉפ", + "block.emeraldcraft.stripped_ginkgo_log": "ƃo˥ oƃʞuᴉפ pǝddᴉɹʇS", + "block.emeraldcraft.ginkgo_wood": "pooM oƃʞuᴉפ", + "block.emeraldcraft.stripped_ginkgo_wood": "pooM oƃʞuᴉפ pǝddᴉɹʇS", + "block.emeraldcraft.ginkgo_leaves": "sǝʌɐǝ˥ oƃʞuᴉפ", + "block.emeraldcraft.ginkgo_planks": "sʞuɐlԀ oƃʞuᴉפ", + "block.emeraldcraft.ginkgo_stairs": "sɹᴉɐʇS oƃʞuᴉפ", + "block.emeraldcraft.ginkgo_slab": "qɐlS oƃʞuᴉפ", + "block.emeraldcraft.ginkgo_fence": "ǝɔuǝℲ oƃʞuᴉפ", + "block.emeraldcraft.ginkgo_fence_gate": "ǝʇɐפ ǝɔuǝℲ oƃʞuᴉפ", + "block.emeraldcraft.ginkgo_door": "ɹoop oƃʞuᴉפ", + "block.emeraldcraft.ginkgo_trapdoor": "ɹoopdɐɹ┴ oƃʞuᴉפ", + "block.emeraldcraft.ginkgo_pressure_plate": "ǝʇɐlԀ ǝɹnssǝɹԀ oƃʞuᴉפ", + "block.emeraldcraft.ginkgo_button": "uoʇʇnq oƃʞuᴉפ", + "block.emeraldcraft.ginkgo_sign": "uƃᴉS oƃʞuᴉפ", + "block.emeraldcraft.ginkgo_wall_sign": "uƃᴉS llɐM oƃʞuᴉפ", + "block.emeraldcraft.palm_sapling": "ƃuᴉldɐS ɯlɐԀ", + "block.emeraldcraft.potted_palm_sapling": "ƃuᴉldɐS ɯlɐԀ pǝʇʇoԀ", + "block.emeraldcraft.palm_log": "ƃo˥ ɯlɐԀ", + "block.emeraldcraft.stripped_palm_log": "ƃo˥ ɯlɐԀ pǝddᴉɹʇS", + "block.emeraldcraft.palm_wood": "pooM ɯlɐԀ", + "block.emeraldcraft.stripped_palm_wood": "pooM ɯlɐԀ pǝddᴉɹʇS", + "block.emeraldcraft.palm_leaves": "sǝʌɐǝ˥ ɯlɐԀ", + "block.emeraldcraft.palm_planks": "sʞuɐlԀ ɯlɐԀ", + "block.emeraldcraft.palm_stairs": "sɹᴉɐʇS ɯlɐԀ", + "block.emeraldcraft.palm_slab": "qɐlS ɯlɐԀ", + "block.emeraldcraft.palm_fence": "ǝɔuǝℲ ɯlɐԀ", + "block.emeraldcraft.palm_fence_gate": "ǝʇɐפ ǝɔuǝℲ ɯlɐԀ", + "block.emeraldcraft.palm_door": "ɹoop ɯlɐԀ", + "block.emeraldcraft.palm_trapdoor": "ɹoopdɐɹ┴ ɯlɐԀ", + "block.emeraldcraft.palm_pressure_plate": "ǝʇɐlԀ ǝɹnssǝɹԀ ɯlɐԀ", + "block.emeraldcraft.palm_button": "uoʇʇnq ɯlɐԀ", + "block.emeraldcraft.palm_sign": "uƃᴉS ɯlɐԀ", + "block.emeraldcraft.palm_wall_sign": "uƃᴉS llɐM ɯlɐԀ", + "block.emeraldcraft.peach_sapling": "ƃuᴉldɐS ɥɔɐǝԀ", + "block.emeraldcraft.potted_peach_sapling": "ƃuᴉldɐS ɥɔɐǝԀ pǝʇʇoԀ", + "block.emeraldcraft.peach_log": "ƃo˥ ɥɔɐǝԀ", + "block.emeraldcraft.stripped_peach_log": "ƃo˥ ɥɔɐǝԀ pǝddᴉɹʇS", + "block.emeraldcraft.peach_wood": "pooM ɥɔɐǝԀ", + "block.emeraldcraft.stripped_peach_wood": "pooM ɥɔɐǝԀ pǝddᴉɹʇS", + "block.emeraldcraft.peach_leaves": "sǝʌɐǝ˥ ɥɔɐǝԀ", + "block.emeraldcraft.peach_planks": "sʞuɐlԀ ɥɔɐǝԀ", + "block.emeraldcraft.peach_stairs": "sɹᴉɐʇS ɥɔɐǝԀ", + "block.emeraldcraft.peach_slab": "qɐlS ɥɔɐǝԀ", + "block.emeraldcraft.peach_fence": "ǝɔuǝℲ ɥɔɐǝԀ", + "block.emeraldcraft.peach_fence_gate": "ǝʇɐפ ǝɔuǝℲ ɥɔɐǝԀ", + "block.emeraldcraft.peach_door": "ɹoop ɥɔɐǝԀ", + "block.emeraldcraft.peach_trapdoor": "ɹoopdɐɹ┴ ɥɔɐǝԀ", + "block.emeraldcraft.peach_pressure_plate": "ǝʇɐlԀ ǝɹnssǝɹԀ ɥɔɐǝԀ", + "block.emeraldcraft.peach_button": "uoʇʇnq ɥɔɐǝԀ", + "block.emeraldcraft.peach_sign": "uƃᴉS ɥɔɐǝԀ", + "block.emeraldcraft.peach_wall_sign": "uƃᴉS llɐM ɥɔɐǝԀ", + "block.emeraldcraft.purpuraceus_roots": "sʇooɹ snǝɔɐɹndɹnԀ", + "block.emeraldcraft.purpuraceus_fungus": "snƃunℲ snǝɔɐɹndɹnԀ", + "block.emeraldcraft.purpuraceus_nylium": "ɯnᴉlʎN snǝɔɐɹndɹnԀ", + "block.emeraldcraft.potted_purpuraceus_roots": "sʇooɹ snǝɔɐɹndɹnԀ pǝʇʇoԀ", + "block.emeraldcraft.potted_purpuraceus_fungus": "snƃunℲ snǝɔɐɹndɹnԀ pǝʇʇoԀ", + "block.emeraldcraft.purpuraceus_stem": "ɯǝʇS snǝɔɐɹndɹnԀ", + "block.emeraldcraft.stripped_purpuraceus_stem": "ɯǝʇS snǝɔɐɹndɹnԀ pǝddᴉɹʇS", + "block.emeraldcraft.purpuraceus_hyphae": "ǝɐɥdʎH snǝɔɐɹndɹnԀ", + "block.emeraldcraft.stripped_purpuraceus_hyphae": "ǝɐɥdʎH snǝɔɐɹndɹnԀ pǝddᴉɹʇS", + "block.emeraldcraft.purpuraceus_wart_block": "ʞɔolq ʇɹɐM snǝɔɐɹndɹnԀ", + "block.emeraldcraft.purpuraceus_planks": "sʞuɐlԀ snǝɔɐɹndɹnԀ", + "block.emeraldcraft.purpuraceus_stairs": "sɹᴉɐʇS snǝɔɐɹndɹnԀ", + "block.emeraldcraft.purpuraceus_slab": "qɐlS snǝɔɐɹndɹnԀ", + "block.emeraldcraft.purpuraceus_fence": "ǝɔuǝℲ snǝɔɐɹndɹnԀ", + "block.emeraldcraft.purpuraceus_fence_gate": "ǝʇɐפ ǝɔuǝℲ snǝɔɐɹndɹnԀ", + "block.emeraldcraft.purpuraceus_door": "ɹoop snǝɔɐɹndɹnԀ", + "block.emeraldcraft.purpuraceus_trapdoor": "ɹoopdɐɹ┴ snǝɔɐɹndɹnԀ", + "block.emeraldcraft.purpuraceus_pressure_plate": "ǝʇɐlԀ ǝɹnssǝɹԀ snǝɔɐɹndɹnԀ", + "block.emeraldcraft.purpuraceus_button": "uoʇʇnq snǝɔɐɹndɹnԀ", + "block.emeraldcraft.purpuraceus_sign": "uƃᴉS snǝɔɐɹndɹnԀ", + "block.emeraldcraft.purpuraceus_wall_sign": "uƃᴉS llɐM snǝɔɐɹndɹnԀ", + + "block.emeraldcraft.zinc_slab": "qɐlS ɔuᴉZ", + "block.emeraldcraft.zinc_stairs": "sɹᴉɐʇS ɔuᴉZ", + "block.emeraldcraft.zinc_wall": "llɐM ɔuᴉZ", + "block.emeraldcraft.aluminum_stairs": "sɹᴉɐʇS ɯnuᴉɯnl∀", + "block.emeraldcraft.aluminum_wall": "llɐM ɯnuᴉɯnl∀", + "block.emeraldcraft.lead_stairs": "sɹᴉɐʇS pɐǝ˥", + "block.emeraldcraft.lead_wall": "llɐM pɐǝ˥", + "block.emeraldcraft.silver_stairs": "sɹᴉɐʇS ɹǝʌlᴉS", + "block.emeraldcraft.silver_wall": "llɐM ɹǝʌlᴉS", + "block.emeraldcraft.nickel_stairs": "sɹᴉɐʇS lǝʞɔᴉN", + "block.emeraldcraft.nickel_wall": "llɐM lǝʞɔᴉN", + "block.emeraldcraft.uranium_stairs": "sɹᴉɐʇS ɯnᴉuɐɹ∩", + "block.emeraldcraft.uranium_wall": "llɐM ɯnᴉuɐɹ∩", + "block.emeraldcraft.constantan_stairs": "sɹᴉɐʇS uɐʇuɐʇsuoƆ", + "block.emeraldcraft.constantan_wall": "llɐM uɐʇuɐʇsuoƆ", + "block.emeraldcraft.electrum_stairs": "sɹᴉɐʇS ɯnɹʇɔǝlƎ", + "block.emeraldcraft.electrum_wall": "llɐM ɯnɹʇɔǝlƎ", + "block.emeraldcraft.steel_stairs": "sɹᴉɐʇS lǝǝʇS", + "block.emeraldcraft.steel_wall": "llɐM lǝǝʇS", + + "block.minecraft.banner.emeraldcraft.bee.black": "ǝǝq ʞɔɐlq", + "block.minecraft.banner.emeraldcraft.bee.blue": "ǝǝq ǝnlq", + "block.minecraft.banner.emeraldcraft.bee.brown": "ǝǝq uʍoɹq", + "block.minecraft.banner.emeraldcraft.bee.cyan": "ǝǝq uɐʎƆ", + "block.minecraft.banner.emeraldcraft.bee.gray": "ǝǝq ʎɐɹפ", + "block.minecraft.banner.emeraldcraft.bee.green": "ǝǝq uǝǝɹפ", + "block.minecraft.banner.emeraldcraft.bee.lightBlue": "ǝǝq ǝnlq ʇɥƃᴉ˥", + "block.minecraft.banner.emeraldcraft.bee.lime": "ǝǝq ǝɯᴉ˥", + "block.minecraft.banner.emeraldcraft.bee.magenta": "ǝǝq ɐʇuǝƃɐW", + "block.minecraft.banner.emeraldcraft.bee.orange": "ǝǝq ǝƃuɐɹO", + "block.minecraft.banner.emeraldcraft.bee.pink": "ǝǝq ʞuᴉԀ", + "block.minecraft.banner.emeraldcraft.bee.purple": "ǝǝq ǝldɹnԀ", + "block.minecraft.banner.emeraldcraft.bee.red": "ǝǝq pǝɹ", + "block.minecraft.banner.emeraldcraft.bee.silver": "ǝǝq ʎɐɹפ ʇɥƃᴉ˥", + "block.minecraft.banner.emeraldcraft.bee.white": "ǝǝq ǝʇᴉɥM", + "block.minecraft.banner.emeraldcraft.bee.yellow": "ǝǝq ʍollǝ⅄", + "block.minecraft.banner.emeraldcraft.snow.black": "ʍouS ʞɔɐlq", + "block.minecraft.banner.emeraldcraft.snow.blue": "ʍouS ǝnlq", + "block.minecraft.banner.emeraldcraft.snow.brown": "ʍouS uʍoɹq", + "block.minecraft.banner.emeraldcraft.snow.cyan": "ʍouS uɐʎƆ", + "block.minecraft.banner.emeraldcraft.snow.gray": "ʍouS ʎɐɹפ", + "block.minecraft.banner.emeraldcraft.snow.green": "ʍouS uǝǝɹפ", + "block.minecraft.banner.emeraldcraft.snow.lightBlue": "ʍouS ǝnlq ʇɥƃᴉ˥", + "block.minecraft.banner.emeraldcraft.snow.lime": "ʍouS ǝɯᴉ˥", + "block.minecraft.banner.emeraldcraft.snow.magenta": "ʍouS ɐʇuǝƃɐW", + "block.minecraft.banner.emeraldcraft.snow.orange": "ʍouS ǝƃuɐɹO", + "block.minecraft.banner.emeraldcraft.snow.pink": "ʍouS ʞuᴉԀ", + "block.minecraft.banner.emeraldcraft.snow.purple": "ʍouS ǝldɹnԀ", + "block.minecraft.banner.emeraldcraft.snow.red": "ʍouS pǝɹ", + "block.minecraft.banner.emeraldcraft.snow.silver": "ʍouS ʎɐɹפ ʇɥƃᴉ˥", + "block.minecraft.banner.emeraldcraft.snow.white": "ʍouS ǝʇᴉɥM", + "block.minecraft.banner.emeraldcraft.snow.yellow": "ʍouS ʍollǝ⅄", + "block.minecraft.banner.emeraldcraft.bottle.black": "ǝlʇʇoq ʞɔɐlq", + "block.minecraft.banner.emeraldcraft.bottle.blue": "ǝlʇʇoq ǝnlq", + "block.minecraft.banner.emeraldcraft.bottle.brown": "ǝlʇʇoq uʍoɹq", + "block.minecraft.banner.emeraldcraft.bottle.cyan": "ǝlʇʇoq uɐʎƆ", + "block.minecraft.banner.emeraldcraft.bottle.gray": "ǝlʇʇoq ʎɐɹפ", + "block.minecraft.banner.emeraldcraft.bottle.green": "ǝlʇʇoq uǝǝɹפ", + "block.minecraft.banner.emeraldcraft.bottle.lightBlue": "ǝlʇʇoq ǝnlq ʇɥƃᴉ˥", + "block.minecraft.banner.emeraldcraft.bottle.lime": "ǝlʇʇoq ǝɯᴉ˥", + "block.minecraft.banner.emeraldcraft.bottle.magenta": "ǝlʇʇoq ɐʇuǝƃɐW", + "block.minecraft.banner.emeraldcraft.bottle.orange": "ǝlʇʇoq ǝƃuɐɹO", + "block.minecraft.banner.emeraldcraft.bottle.pink": "ǝlʇʇoq ʞuᴉԀ", + "block.minecraft.banner.emeraldcraft.bottle.purple": "ǝlʇʇoq ǝldɹnԀ", + "block.minecraft.banner.emeraldcraft.bottle.red": "ǝlʇʇoq pǝɹ", + "block.minecraft.banner.emeraldcraft.bottle.silver": "ǝlʇʇoq ʎɐɹפ ʇɥƃᴉ˥", + "block.minecraft.banner.emeraldcraft.bottle.white": "ǝlʇʇoq ǝʇᴉɥM", + "block.minecraft.banner.emeraldcraft.bottle.yellow": "ǝlʇʇoq ʍollǝ⅄", + "block.minecraft.banner.emeraldcraft.potion.black": "uoᴉʇoԀ ʞɔɐlq", + "block.minecraft.banner.emeraldcraft.potion.blue": "uoᴉʇoԀ ǝnlq", + "block.minecraft.banner.emeraldcraft.potion.brown": "uoᴉʇoԀ uʍoɹq", + "block.minecraft.banner.emeraldcraft.potion.cyan": "uoᴉʇoԀ uɐʎƆ", + "block.minecraft.banner.emeraldcraft.potion.gray": "uoᴉʇoԀ ʎɐɹפ", + "block.minecraft.banner.emeraldcraft.potion.green": "uoᴉʇoԀ uǝǝɹפ", + "block.minecraft.banner.emeraldcraft.potion.lightBlue": "uoᴉʇoԀ ǝnlq ʇɥƃᴉ˥", + "block.minecraft.banner.emeraldcraft.potion.lime": "uoᴉʇoԀ ǝɯᴉ˥", + "block.minecraft.banner.emeraldcraft.potion.magenta": "uoᴉʇoԀ ɐʇuǝƃɐW", + "block.minecraft.banner.emeraldcraft.potion.orange": "uoᴉʇoԀ ǝƃuɐɹO", + "block.minecraft.banner.emeraldcraft.potion.pink": "uoᴉʇoԀ ʞuᴉԀ", + "block.minecraft.banner.emeraldcraft.potion.purple": "uoᴉʇoԀ ǝldɹnԀ", + "block.minecraft.banner.emeraldcraft.potion.red": "uoᴉʇoԀ pǝɹ", + "block.minecraft.banner.emeraldcraft.potion.silver": "uoᴉʇoԀ ʎɐɹפ ʇɥƃᴉ˥", + "block.minecraft.banner.emeraldcraft.potion.white": "uoᴉʇoԀ ǝʇᴉɥM", + "block.minecraft.banner.emeraldcraft.potion.yellow": "uoᴉʇoԀ ʍollǝ⅄", + + "item.emeraldcraft.emerald_head": "ʇǝɯlǝH plɐɹǝɯƎ", + "item.emeraldcraft.emerald_chest": "ǝʇɐldʇsǝɥƆ plɐɹǝɯƎ", + "item.emeraldcraft.emerald_legs": "sƃuᴉƃƃǝ˥ plɐɹǝɯƎ", + "item.emeraldcraft.emerald_feet": "sʇooq plɐɹǝɯƎ", + "item.emeraldcraft.lapis_head": "ʇǝɯlǝH sᴉdɐ˥", + "item.emeraldcraft.lapis_chest": "ǝʇɐldʇsǝɥƆ sᴉdɐ˥", + "item.emeraldcraft.lapis_legs": "sƃuᴉƃƃǝ˥ sᴉdɐ˥", + "item.emeraldcraft.lapis_feet": "sʇooq sᴉdɐ˥", + "item.emeraldcraft.warped_wart": "ʇɹɐM pǝdɹɐM", + "item.emeraldcraft.diamond_nugget": "ʇǝƃƃnN puoɯɐᴉp", + "item.emeraldcraft.emerald_nugget": "ʇǝƃƃnN plɐɹǝɯƎ", + "item.emeraldcraft.lapis_nugget": "ʇǝƃƃnN sᴉdɐ˥", + "item.emeraldcraft.piglin_cutey_spawn_egg": "ƃƃƎ uʍɐdS ʎǝʇnƆ uᴉlƃᴉԀ", + "item.emeraldcraft.nether_pigman_spawn_egg": "ƃƃƎ uʍɐdS uɐɯƃᴉԀ ɹǝɥʇǝN", + "item.emeraldcraft.nether_lambman_spawn_egg": "ƃƃƎ uʍɐdS uɐɯqɯɐ˥ ɹǝɥʇǝN", + "item.emeraldcraft.bigeye_spawn_egg": "ƃƃƎ uʍɐdS ǝʎǝƃᴉq pǝʇʇodS ǝldɹnԀ", + "item.emeraldcraft.herring_spawn_egg": "ƃƃƎ uʍɐdS ƃuᴉɹɹǝH", + "item.emeraldcraft.wraith_spawn_egg": "ƃƃƎ uʍɐdS ɥʇᴉɐɹM", + "item.emeraldcraft.manta_spawn_egg": "ƃƃƎ uʍɐdS ɐʇuɐW", + "item.emeraldcraft.agate_apple": "ǝldd∀ ǝʇɐƃ∀", + "item.emeraldcraft.jade_apple": "ǝldd∀ ǝpɐſ", + "item.emeraldcraft.bee_banner_pattern": "uɹǝʇʇɐԀ ɹǝuuɐq", + "item.emeraldcraft.bee_banner_pattern.desc": "ǝǝq", + "item.emeraldcraft.snow_banner_pattern": "uɹǝʇʇɐԀ ɹǝuuɐq", + "item.emeraldcraft.snow_banner_pattern.desc": "ʍouS", + "item.emeraldcraft.bottle_banner_pattern": "uɹǝʇʇɐԀ ɹǝuuɐq", + "item.emeraldcraft.bottle_banner_pattern.desc": "ǝlʇʇoq", + "item.emeraldcraft.potion_banner_pattern": "uɹǝʇʇɐԀ ɹǝuuɐq", + "item.emeraldcraft.potion_banner_pattern.desc": "uoᴉʇoԀ", + "item.emeraldcraft.rock_breaker": "ɹǝʞɐǝɹq ʞɔoɹ", + "item.emeraldcraft.melted_emerald_bucket": "ʇǝʞɔnq plɐɹǝɯƎ pǝʇlǝW", + "item.emeraldcraft.melted_iron_bucket": "ʇǝʞɔnq uoɹI pǝʇlǝW", + "item.emeraldcraft.melted_gold_bucket": "ʇǝʞɔnq ploפ pǝʇlǝW", + "item.emeraldcraft.melted_copper_bucket": "ʇǝʞɔnq ɹǝddoƆ pǝʇlǝW", + "item.emeraldcraft.iron_concentrate": "ǝʇɐɹʇuǝɔuoƆ uoɹI", + "item.emeraldcraft.gold_concentrate": "ǝʇɐɹʇuǝɔuoƆ ploפ", + "item.emeraldcraft.copper_concentrate": "ǝʇɐɹʇuǝɔuoƆ ɹǝddoƆ", + "item.emeraldcraft.ginkgo_nut": "ʇnu oƃʞuᴉפ", + "item.emeraldcraft.ginkgo_boat": "ʇɐoq oƃʞuᴉפ", + "item.emeraldcraft.palm_boat": "ʇɐoq ɯlɐԀ", + "item.emeraldcraft.peach_boat": "ʇɐoq ɥɔɐǝԀ", + "item.emeraldcraft.ginkgo_chest_boat": "ʇɐoq ʇsǝɥƆ oƃʞuᴉפ", + "item.emeraldcraft.palm_chest_boat": "ʇɐoq ʇsǝɥƆ ɯlɐԀ", + "item.emeraldcraft.peach_chest_boat": "ʇɐoq ʇsǝɥƆ ɥɔɐǝԀ", + "item.emeraldcraft.peach": "ɥɔɐǝԀ", + "item.emeraldcraft.golden_peach": "ɥɔɐǝԀ uǝploפ", + "item.emeraldcraft.potion_cookie": "ǝᴉʞooƆ", + "item.emeraldcraft.cooked_tropical_fish": "ɥsᴉℲ lɐɔᴉdoɹ┴ pǝʞooƆ", + "item.emeraldcraft.cooked_purpuraceus_fungus": "snƃunℲ snǝɔɐɹndɹnԀ pǝʞooƆ", + "item.emeraldcraft.boiled_egg": "ƃƃƎ pǝlᴉoq", + "item.emeraldcraft.chorus_flower_eggdrop_soup": "dnoS doɹpƃƃƎ ɹǝʍolℲ snɹoɥƆ", + "item.emeraldcraft.herring": "ƃuᴉɹɹǝH", + "item.emeraldcraft.cooked_herring": "ƃuᴉɹɹǝH pǝʞooƆ", + "item.emeraldcraft.purple_spotted_bigeye": "ǝʎǝƃᴉq pǝʇʇodS ǝldɹnԀ", + "item.emeraldcraft.cooked_purple_spotted_bigeye": "ǝʎǝƃᴉq pǝʇʇodS ǝldɹnԀ pǝʞooƆ", + "item.emeraldcraft.caramelized_potato": "oʇɐʇoԀ pǝzᴉlǝɯɐɹɐƆ", + "item.emeraldcraft.rougamo": "oɯɐƃnoɹ", + "item.emeraldcraft.beef_and_potato_stew": "ʍǝʇS oʇɐʇoԀ puɐ ɟǝǝq", + "item.emeraldcraft.braised_chicken": "uǝʞɔᴉɥƆ pǝsᴉɐɹq", + "item.emeraldcraft.sausage": "ǝƃɐsnɐS", + "item.emeraldcraft.cooked_sausage": "ǝƃɐsnɐS pǝʞooƆ", + "item.emeraldcraft.gluten": "uǝʇnlפ", + "item.emeraldcraft.warden_heart": "ʇɹɐǝH uǝpɹɐM", + "item.emeraldcraft.stir_fried_warden_heart": "ʇɹɐǝH uǝpɹɐM pǝᴉɹℲ-ɹᴉʇS", + "item.emeraldcraft.chili": "ᴉlᴉɥƆ", + "item.emeraldcraft.chili_seed": "pǝǝS ᴉlᴉɥƆ", + "item.emeraldcraft.apple_juice": "ǝɔᴉnſ ǝldd∀", + "item.emeraldcraft.beetroot_juice": "ǝɔᴉnſ ʇooɹʇǝǝq", + "item.emeraldcraft.carrot_juice": "ǝɔᴉnſ ʇoɹɹɐƆ", + "item.emeraldcraft.melon_juice": "ǝɔᴉnſ uolǝW", + "item.emeraldcraft.peach_juice": "ǝɔᴉnſ ɥɔɐǝԀ", + "item.emeraldcraft.pumpkin_juice": "ǝɔᴉnſ uᴉʞdɯnԀ", + "item.emeraldcraft.herring_bucket": "ʇǝʞɔnq ƃuᴉɹɹǝH", + "item.emeraldcraft.bigeye_bucket": "ʇǝʞɔnq ǝʎǝƃᴉq pǝʇʇodS ǝldɹnԀ", + + "item.emeraldcraft.melted_zinc_bucket": "ʇǝʞɔnq ɔuᴉZ pǝʇlǝW", + "item.emeraldcraft.zinc_concentrate": "ǝʇɐɹʇuǝɔuoƆ ɔuᴉZ", + "item.emeraldcraft.melted_aluminum_bucket": "ʇǝʞɔnq ɯnuᴉɯnl∀ pǝʇlǝW", + "item.emeraldcraft.aluminum_concentrate": "ǝʇɐɹʇuǝɔuoƆ ɯnuᴉɯnl∀", + "item.emeraldcraft.melted_lead_bucket": "ʇǝʞɔnq pɐǝ˥ pǝʇlǝW", + "item.emeraldcraft.lead_concentrate": "ǝʇɐɹʇuǝɔuoƆ pɐǝ˥", + "item.emeraldcraft.melted_silver_bucket": "ʇǝʞɔnq ɹǝʌlᴉS pǝʇlǝW", + "item.emeraldcraft.silver_concentrate": "ǝʇɐɹʇuǝɔuoƆ ɹǝʌlᴉS", + "item.emeraldcraft.melted_nickel_bucket": "ʇǝʞɔnq lǝʞɔᴉN pǝʇlǝW", + "item.emeraldcraft.nickel_concentrate": "ǝʇɐɹʇuǝɔuoƆ lǝʞɔᴉN", + "item.emeraldcraft.melted_uranium_bucket": "ʇǝʞɔnq ɯnᴉuɐɹ∩ pǝʇlǝW", + "item.emeraldcraft.uranium_concentrate": "ǝʇɐɹʇuǝɔuoƆ ɯnᴉuɐɹ∩", + + "item.minecraft.potion.effect.absorption": "uoᴉʇoԀ uoᴉʇdɹosq∀", + "item.minecraft.splash_potion.effect.absorption": "uoᴉʇoԀ uoᴉʇdɹosq∀ ɥsɐldS", + "item.minecraft.lingering_potion.effect.absorption": "uoᴉʇoԀ uoᴉʇdɹosq∀ ƃuᴉɹǝƃuᴉ˥", + "item.minecraft.potion.effect.blindness": "uoᴉʇoԀ ssǝupuᴉlq", + "item.minecraft.splash_potion.effect.blindness": "uoᴉʇoԀ ssǝupuᴉlq ɥsɐldS", + "item.minecraft.lingering_potion.effect.blindness": "uoᴉʇoԀ ssǝupuᴉlq ƃuᴉɹǝƃuᴉ˥", + "item.minecraft.potion.effect.hunger": "uoᴉʇoԀ ɹǝƃunH", + "item.minecraft.splash_potion.effect.hunger": "uoᴉʇoԀ ɹǝƃunH ɥsɐldS", + "item.minecraft.lingering_potion.effect.hunger": "uoᴉʇoԀ ɹǝƃunH ƃuᴉɹǝƃuᴉ˥", + "item.minecraft.potion.effect.saturation": "uoᴉʇoԀ uoᴉʇɐɹnʇɐS", + "item.minecraft.splash_potion.effect.saturation": "uoᴉʇoԀ uoᴉʇɐɹnʇɐS ɥsɐldS", + "item.minecraft.lingering_potion.effect.saturation": "uoᴉʇoԀ uoᴉʇɐɹnʇɐS ƃuᴉɹǝƃuᴉ˥", + "item.minecraft.potion.effect.wither": "uoᴉʇoԀ ɹǝɥʇᴉM", + "item.minecraft.splash_potion.effect.wither": "uoᴉʇoԀ ɹǝɥʇᴉM ɥsɐldS", + "item.minecraft.lingering_potion.effect.wither": "uoᴉʇoԀ ɹǝɥʇᴉM ƃuᴉɹǝƃuᴉ˥", + "item.minecraft.potion.effect.glowing": "uoᴉʇoԀ ƃuᴉʍolפ", + "item.minecraft.splash_potion.effect.glowing": "uoᴉʇoԀ ƃuᴉʍolפ ɥsɐldS", + "item.minecraft.lingering_potion.effect.glowing": "uoᴉʇoԀ ƃuᴉʍolפ ƃuᴉɹǝƃuᴉ˥", + + "item.minecraft.tipped_arrow.effect.absorption": "uoᴉʇdɹosq∀ ɟo ʍoɹɹ∀", + "item.minecraft.tipped_arrow.effect.blindness": "ssǝupuᴉlq ɟo ʍoɹɹ∀", + "item.minecraft.tipped_arrow.effect.hunger": "ɹǝƃunH ɟo ʍoɹɹ∀", + "item.minecraft.tipped_arrow.effect.saturation": "uoᴉʇɐɹnʇɐS ɟo ʍoɹɹ∀", + "item.minecraft.tipped_arrow.effect.wither": "ɹǝɥʇᴉM ɟo ʍoɹɹ∀", + "item.minecraft.tipped_arrow.effect.glowing": "ƃuᴉʍolפ ɟo ʍoɹɹ∀", + + "entity.emeraldcraft.piglin_cutey": "ʎǝʇnƆ uᴉlƃᴉԀ", + "entity.emeraldcraft.nether_pigman": "uɐɯƃᴉԀ ɹǝɥʇǝN", + "entity.emeraldcraft.nether_lambman": "uɐɯqɯɐ˥ ɹǝɥʇǝN", + "entity.emeraldcraft.purple_spotted_bigeye": "ǝʎǝƃᴉq pǝʇʇods-ǝldɹnԀ", + "entity.emeraldcraft.herring": "ƃuᴉɹɹǝH", + "entity.emeraldcraft.wraith": "ɥʇᴉɐɹM", + "entity.emeraldcraft.manta": "ɐʇuɐW", + "entity.emeraldcraft.boat": "ʇɐoq", + "entity.emeraldcraft.chest_boat": "ʇɐoq ʇsǝɥƆ", + "entity.minecraft.villager.emeraldcraft.carpenter": "ɹǝʇuǝdɹɐƆ", + "entity.minecraft.villager.emeraldcraft.glazier": "ɹǝᴉzɐlפ", + "entity.minecraft.villager.emeraldcraft.miner": "ɹǝuᴉW", + "entity.minecraft.villager.emeraldcraft.astrologist": "ʇsᴉƃoloɹʇs∀", + "entity.minecraft.villager.emeraldcraft.grower": "ɹǝʍoɹפ", + "entity.minecraft.villager.emeraldcraft.beekeeper": "ɹǝdǝǝʞǝǝq", + "entity.minecraft.villager.emeraldcraft.geologist": "ʇsᴉƃoloǝפ", + "entity.minecraft.villager.emeraldcraft.icer": "ɹǝɔI", + "entity.minecraft.villager.emeraldcraft.chemical_engineer": "ɹǝǝuᴉƃuƎ lɐɔᴉɯǝɥƆ", + + "subtitles.entity.piglin_cutey.ambient": "sǝlqɯnɯ ʎǝʇnƆ uᴉlƃᴉԀ", + "subtitles.entity.piglin_cutey.celebrate": "sǝʇɐɹqǝlǝɔ ʎǝʇnƆ uᴉlƃᴉԀ", + "subtitles.entity.piglin_cutey.death": "sǝᴉp ʎǝʇnƆ uᴉlƃᴉԀ", + "subtitles.entity.piglin_cutey.hurt": "sʇɹnɥ ʎǝʇnƆ uᴉlƃᴉԀ", + "subtitles.entity.piglin_cutey.no": "sǝǝɹƃɐsᴉp ʎǝʇnƆ uᴉlƃᴉԀ", + "subtitles.entity.piglin_cutey.trade": "sǝpɐɹʇ ʎǝʇnƆ uᴉlƃᴉԀ", + "subtitles.entity.piglin_cutey.yes": "sǝǝɹƃɐ ʎǝʇnƆ uᴉlƃᴉԀ", + "subtitles.entity.nether_pigman.ambient": "sʞuᴉo uɐɯƃᴉԀ ɹǝɥʇǝN", + "subtitles.entity.nether_pigman.death": "sǝᴉp uɐɯƃᴉԀ ɹǝɥʇǝN", + "subtitles.entity.nether_pigman.hurt": "sʇɹnɥ uɐɯƃᴉԀ ɹǝɥʇǝN", + "subtitles.entity.nether_pigman.no": "sǝǝɹƃɐsᴉp uɐɯƃᴉԀ ɹǝɥʇǝN", + "subtitles.entity.nether_pigman.trade": "sǝpɐɹʇ uɐɯƃᴉԀ ɹǝɥʇǝN", + "subtitles.entity.nether_pigman.yes": "sǝǝɹƃɐ uɐɯƃᴉԀ ɹǝɥʇǝN", + "subtitles.entity.nether_lambman.ambient": "sɥɐɐq uɐɯqɯɐ˥ ɹǝɥʇǝN", + "subtitles.entity.nether_lambman.death": "sǝᴉp uɐɯqɯɐ˥ ɹǝɥʇǝN", + "subtitles.entity.nether_lambman.hurt": "sʇɹnɥ uɐɯqɯɐ˥ ɹǝɥʇǝN", + "subtitles.entity.nether_lambman.no": "sǝǝɹƃɐsᴉp uɐɯqɯɐ˥ ɹǝɥʇǝN", + "subtitles.entity.nether_lambman.trade": "sǝpɐɹʇ uɐɯqɯɐ˥ ɹǝɥʇǝN", + "subtitles.entity.nether_lambman.yes": "sǝǝɹƃɐ uɐɯqɯɐ˥ ɹǝɥʇǝN", + "subtitles.entity.villager.work_carpenter": "sʞɹoʍ ɹǝʇuǝdɹɐƆ", + "subtitles.entity.villager.work_glazier": "sʞɹoʍ ɹǝᴉzɐlפ", + "subtitles.entity.villager.work_miner": "sʞɹoʍ ɹǝuᴉW", + "subtitles.entity.villager.work_astrologist": "sʞɹoʍ ʇsᴉƃoloɹʇs∀", + "subtitles.entity.villager.work_grower": "sʞɹoʍ ɹǝʍoɹפ", + "subtitles.entity.villager.work_beekeeper": "sʞɹoʍ ɹǝdǝǝʞǝǝq", + "subtitles.entity.villager.work_geologist": "sʞɹoʍ ʇsᴉƃoloǝפ", + "subtitles.entity.villager.work_icer": "sʞɹoʍ ɹǝɔI", + "subtitles.entity.villager.work_chemical_engineer": "sʞɹoʍ ɹǝǝuᴉƃuƎ lɐɔᴉɯǝɥƆ", + "subtitles.entity.herring.flop": "sdolɟ ƃuᴉɹɹǝH", + "subtitles.entity.herring.hurt": "sʇɹnɥ ƃuᴉɹɹǝH", + "subtitles.entity.herring.death": "sǝᴉp ƃuᴉɹɹǝH", + "subtitles.entity.purple_spotted_bigeye.flop": "sdolɟ ǝʎǝƃᴉq pǝʇʇodS ǝldɹnԀ", + "subtitles.entity.purple_spotted_bigeye.hurt": "sʇɹnɥ ǝʎǝƃᴉq pǝʇʇodS ǝldɹnԀ", + "subtitles.entity.purple_spotted_bigeye.death": "sǝᴉp ǝʎǝƃᴉq pǝʇʇodS ǝldɹnԀ", + "subtitles.entity.wraith.ambient": "suɐoɹƃ ɥʇᴉɐɹM", + "subtitles.entity.wraith.hurt": "sʇɹnɥ ɥʇᴉɐɹM", + "subtitles.entity.wraith.death": "sǝᴉp ɥʇᴉɐɹM", + "subtitles.entity.manta.ambient": "sǝᴉlɟ ɐʇuɐW", + "subtitles.entity.manta.hurt": "sʇɹnɥ ɐʇuɐW", + "subtitles.entity.manta.death": "sǝᴉp ɐʇuɐW", + + "subtitles.block.flower.drop_leaves": "sǝʌɐǝ˥ sdoɹp ɐuɐq uɐƃᴉH", + + "container.carpentry": "ǝlqɐ┴ ʎɹʇuǝdɹɐƆ", + "container.glass_kiln": "ulᴉʞ ssɐlפ", + "container.mineral_table": "ǝlqɐ┴ lɐɹǝuᴉW", + "container.continuous_miner": "ɹǝuᴉW snonuᴉʇuoƆ", + "container.ice_maker": "ɹǝʞɐW ǝɔI", + "container.melter": "ɹǝʇlǝW", + + "desc.emeraldcraft.carpentry_table": "sǝdᴉɔǝɹ uᴉɐʇɹǝɔ ɹoɟ ƃuᴉʇɟɐɹɔ uɐɥʇ ʇuǝᴉɔᴉɟɟǝ ǝɹoɯ uǝʌǝ puɐ 'sǝᴉʇᴉʇuɐnb ǝsᴉɔǝɹd ǝɹoɯ puɐ ɹǝllɐɯs uᴉ sɯǝʇᴉ puɐ sʞɔolq pǝʇɐlǝɹ pooʍ ʇɟɐɹƆ", + "desc.emeraldcraft.glass_kiln": "sǝʞɐʇ ǝɔɐuɹnɟ pɹɐpuɐʇs ɐ sɐ ǝɯᴉʇ ǝɥʇ ɟlɐɥ ʎluo sǝʞɐʇ puɐ sɯǝʇᴉ ɐʇʇoɔɐɹɹǝʇ puɐ ssɐlƃ ʞooƆ", + "desc.emeraldcraft.mineral_table": "ɹǝpʍod ǝzɐlq sʇsoɔ ɥɔᴉɥʍ 'sʞɔolq uoɯɯoɔ ɯoɹɟ sʇǝƃƃnu lɐɹǝuᴉɯ ʇlǝɯS", + "desc.emeraldcraft.crystalball_table": "¿ԀX pǝǝN", + "desc.emeraldcraft.squeezer": "sʞɔolq qɯoɔʎǝuoɥ ɯoɹɟ ʎǝuoɥ ʇǝפ", + "desc.emeraldcraft.continuous_miner": "lɐuƃᴉs ǝuoʇspǝɹ ʎq pǝʇɐʌᴉʇɔɐ ǝq oʇ pǝǝu puɐ plɐɹǝɯǝ pǝʇlǝɯ ʇsoɔ ʇɐɥʇ ɹǝuᴉɯ pǝʇɐɯoʇnɐ u∀", + "desc.emeraldcraft.ice_maker": "ɹǝʇɐʍ sʇsoɔ ɥɔᴉɥʍ 'pᴉnbᴉl ʎɟᴉpᴉloS", + "desc.emeraldcraft.melter": "lǝnɟ sʇsoɔ ɥɔᴉɥʍ 'pᴉlos ʇlǝW", + + "biome.emeraldcraft.dead_crimson_ocean": "uɐǝɔO uosɯᴉɹƆ pɐǝp", + "biome.emeraldcraft.dead_warped_ocean": "uɐǝɔO pǝdɹɐM pɐǝp", + "biome.emeraldcraft.deep_dead_crimson_ocean": "uɐǝɔO uosɯᴉɹƆ pɐǝp dǝǝp", + "biome.emeraldcraft.deep_dead_warped_ocean": "uɐǝɔO pǝdɹɐM pɐǝp dǝǝp", + "biome.emeraldcraft.xanadu": "npɐuɐX", + "biome.emeraldcraft.ginkgo_forest": "ʇsǝɹoℲ oƃʞuᴉפ", + "biome.emeraldcraft.karst_hills": "sllᴉH ʇsɹɐʞ", + "biome.emeraldcraft.petunia_plains": "suᴉɐlԀ ɐᴉunʇǝԀ", + "biome.emeraldcraft.golden_beach": "ɥɔɐǝq uǝploפ", + "biome.emeraldcraft.palm_beach": "ɥɔɐǝq ɯlɐԀ", + "biome.emeraldcraft.azure_desert": "ʇɹǝsǝp ǝɹnz∀", + "biome.emeraldcraft.jadeite_desert": "ʇɹǝsǝp ǝʇᴉǝpɐſ", + "biome.emeraldcraft.volcanic_caves": "sǝʌɐƆ ɔᴉuɐɔloΛ", + "biome.emeraldcraft.quartz_desert": "ʇɹǝsǝp zʇɹɐnQ", + "biome.emeraldcraft.emery_desert": "ʇɹǝsǝp ʎɹǝɯƎ", + "biome.emeraldcraft.purpuraceus_swamp": "dɯɐʍS snǝɔɐɹndɹnԀ", + + "gui.recipebook.toggleRecipes.kilnable": "ǝlqɐulᴉʞ ƃuᴉʍoɥS", + + "gui.emeraldcraft.glass_kiln.experience": "ԀX %s", + "gui.emeraldcraft.glass_kiln.time.seconds": "s%s", + "gui.emeraldcraft.melter.time.seconds": "s%s", + "gui.emeraldcraft.ice_maker.time.seconds": "s%s", + + "book.emeraldcraft.piglin_cutey.title": "pǝǝN I ƃuᴉɥ┴ ʇsɐ˥ ǝuO", + "book.emeraldcraft.piglin_cutey.content": "¿plɹoʍɹǝʌo ǝɥʇ oʇ ʞɔɐq ǝɯ dlǝɥ puᴉɯ noʎ plnoM ˙lɐʇɹod ɐ ǝʇɐʌᴉʇɔɐ oʇ uɐᴉpᴉsqo ɥƃnouǝ ǝʌɐɥ ʇ,uop I llᴉʇS ˙ɯǝɥʇ ɥʇᴉʍ ǝpɐɹʇ oʇ puɐ uᴉlƃᴉd ɐ ǝʞᴉl ʇɔɐ oʇ ʇnq ǝɔᴉoɥɔ ou ǝʌɐɥ I os 'lɐʇɹod ʎɯ ǝʞoɹq ʇsɐɥƃ ∀ ˙sʎɐp ɹoɟ ɹǝɥʇǝu ǝɥʇ uᴉ pǝddɐɹʇ sɐʍ I", + + "advancements.emeraldcraft.root.title": "ʇɟɐɹƆ ,uǝǝɹפ, ǝɥʇ ɟo ƃuᴉuuᴉƃǝq", + "advancements.emeraldcraft.root.description": "˙plɐɹǝɯǝ uɐ uᴉɐʇqO", + "advancements.emeraldcraft.hard_currency.title": "ʎɔuǝɹɹnƆ ,pɹɐH,", + "advancements.emeraldcraft.hard_currency.description": "˙ɹoɯɹɐ plɐɹǝɯǝ uɐ uᴉɐʇqO", + "advancements.emeraldcraft.green_light.title": "ʎǝuoW ɟo ɹǝʍoԀ", + "advancements.emeraldcraft.green_light.description": "˙sɹoɯɹɐ plɐɹǝɯǝ llɐ uᴉɐʇqO", + "advancements.emeraldcraft.cure_phantom.title": "ɹoʇɔop ɯoʇuɐɥԀ", + "advancements.emeraldcraft.cure_phantom.description": "˙ɥɔɐǝd uǝploƃ ɐ puɐ 'uoᴉʇod ɥsɐlds ƃuᴉʍolƃ ɹo ʍoɹɹɐ lɐɹʇɔǝds ɥʇᴉʍ ɯoʇuɐɥd ɐ ǝɹnƆ", + "advancements.emeraldcraft.cure_zombified_piglin.title": "ɹoʇɔop uᴉlƃᴉԀ pǝᴉɟᴉqɯoZ", + "advancements.emeraldcraft.cure_zombified_piglin.description": "˙ʇoɹɹɐɔ uǝploƃ ɐ puɐ uoᴉʇod ɥsɐlds ɹǝƃunɥ ɥʇᴉʍ uᴉlƃᴉd pǝᴉɟᴉqɯoz ɐ ǝɹnƆ", + "advancements.emeraldcraft.friend_from_the_nether.title": "ɹǝɥʇǝN ǝɥʇ ɯoɹɟ puǝᴉɹℲ", + "advancements.emeraldcraft.friend_from_the_nether.description": "˙ʎǝʇnɔ uᴉlƃᴉd ɐ puᴉℲ", + "advancements.emeraldcraft.surely_see_each_other_again.title": "uᴉɐƃ∀ ɹǝɥʇO ɥɔɐƎ ǝǝS ʎlǝɹnS", + "advancements.emeraldcraft.surely_see_each_other_again.description": "˙ǝɹᴉsǝp ɹǝɥ ǝʌǝᴉɥɔɐ ʎǝʇnɔ uᴉlƃᴉd dlǝH", + "advancements.emeraldcraft.a_horrible_entrenchment.title": "ʇuǝɯɥɔuǝɹʇuƎ ǝlqᴉɹɹoH ∀", + "advancements.emeraldcraft.a_horrible_entrenchment.description": "¡sɥʇᴉɐɹʍ ǝɥʇ ɹoɟ ʇno ɥɔʇɐM ˙ʇuǝɯɥɔuǝɹʇuǝ ɐ puᴉℲ", + "advancements.emeraldcraft.noisy_guy.title": "ʎnפ ʎsᴉoN", + "advancements.emeraldcraft.noisy_guy.description": "˙ɹǝuᴉɯ snonuᴉʇuoɔ ɐ uᴉɐʇqO", + "advancements.emeraldcraft.hotter_topic.title": "ɔᴉdo┴ ɹǝʇʇoH", + "advancements.emeraldcraft.hotter_topic.description": "˙ɹǝʇlǝɯ ɐ uᴉɐʇqO", + "advancements.emeraldcraft.more_effective_craft.title": "ʇɟɐɹƆ ǝʌᴉʇɔǝɟɟƎ ǝɹoW", + "advancements.emeraldcraft.more_effective_craft.description": "˙sǝɹo ʍɐɹ ɯoɹɟ ǝʇɐɹʇuǝɔuoɔ ɐ ʇɟɐɹƆ", + "advancements.emeraldcraft.ice_cream_please.title": "ǝsɐǝlԀ ɯɐǝɹƆ ǝɔI", + "advancements.emeraldcraft.ice_cream_please.description": "˙ɹǝʞɐɯ ǝɔᴉ ɐ uᴉɐʇqO", + + "filled_map.shelter": "dɐW ɹǝɹoldxƎ ǝnɔsǝɹ ⅋ ɥɔɹɐǝS", + "filled_map.entrenchment": "dɐW ɹǝɹoldxƎ ɹǝʇuǝɔoǝפ", + + "fluids.save.bucket": "llᴉɟ oʇ ǝlq∀ %s %s", + "fluids.name.water": "ɹǝʇɐM", + "fluids.name.lava": "ɐʌɐ˥", + "fluids.name.melted_emerald": "plɐɹǝɯƎ pǝʇlǝW", + "fluids.name.melted_iron": "uoɹI pǝʇlǝW", + "fluids.name.melted_gold": "ploפ pǝʇlǝW", + "fluids.name.melted_copper": "ɹǝddoƆ pǝʇlǝW", + "fluids.name.melted_zinc": "ɔuᴉZ pǝʇlǝW", + "fluids.name.melted_aluminum": "ɯnuᴉɯnl∀ pǝʇlǝW", + "fluids.name.melted_lead": "pɐǝ˥ pǝʇlǝW", + "fluids.name.melted_silver": "ɹǝʌlᴉS pǝʇlǝW", + "fluids.name.melted_nickel": "lǝʞɔᴉN pǝʇlǝW", + "fluids.name.melted_uranium": "ɯnᴉuɐɹ∩ pǝʇlǝW", + + "jei.emeraldcraft.villager_trade": "sɹǝƃɐllᴉΛ ɥʇᴉʍ ǝpɐɹ┴" +} \ 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..c5553b3b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/lang/en_us.json @@ -0,0 +1,538 @@ +{ + "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.vitrified_sand": "Vitrified Sand", + "block.emeraldcraft.dark_sand": "Dark Sand", + "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.dark_sandstone": "Dark Sandstone", + "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_dark_sandstone": "Smooth Dark 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_dark_sandstone": "Cut Dark 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.dark_sandstone_slab": "Dark Sandstone Slab", + "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_dark_sandstone_slab": "Smooth Dark 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_dark_sandstone_slab": "Cut Dark 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.dark_sandstone_stairs": "Dark Sandstone Stairs", + "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_dark_sandstone_stairs": "Smooth Dark 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.dark_sandstone_wall": "Dark Sandstone Wall", + "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.purple_nether_brick_slab": "Purple Nether Brick Slab", + "block.emeraldcraft.purple_nether_brick_stairs": "Purple Nether Brick Stairs", + "block.emeraldcraft.purple_nether_brick_wall": "Purple Nether Brick Wall", + "block.emeraldcraft.purple_nether_bricks": "Purple 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", + "block.emeraldcraft.cyan_petunia": "Cyan Petunia", + "block.emeraldcraft.magenta_petunia": "Magenta Petunia", + "block.emeraldcraft.higan_bana": "Higan Bana", + "block.emeraldcraft.potted_cyan_petunia": "Potted Cyan Petunia", + "block.emeraldcraft.potted_magenta_petunia": "Potted Magenta Petunia", + "block.emeraldcraft.potted_higan_bana": "Potted Higan Bana", + "block.emeraldcraft.ginkgo_sapling": "Ginkgo Sapling", + "block.emeraldcraft.potted_ginkgo_sapling": "Potted Ginkgo Sapling", + "block.emeraldcraft.ginkgo_log": "Ginkgo Log", + "block.emeraldcraft.stripped_ginkgo_log": "Stripped Ginkgo Log", + "block.emeraldcraft.ginkgo_wood": "Ginkgo Wood", + "block.emeraldcraft.stripped_ginkgo_wood": "Stripped Ginkgo Wood", + "block.emeraldcraft.ginkgo_leaves": "Ginkgo Leaves", + "block.emeraldcraft.ginkgo_planks": "Ginkgo Planks", + "block.emeraldcraft.ginkgo_stairs": "Ginkgo Stairs", + "block.emeraldcraft.ginkgo_slab": "Ginkgo Slab", + "block.emeraldcraft.ginkgo_fence": "Ginkgo Fence", + "block.emeraldcraft.ginkgo_fence_gate": "Ginkgo Fence Gate", + "block.emeraldcraft.ginkgo_door": "Ginkgo Door", + "block.emeraldcraft.ginkgo_trapdoor": "Ginkgo Trapdoor", + "block.emeraldcraft.ginkgo_pressure_plate": "Ginkgo Pressure Plate", + "block.emeraldcraft.ginkgo_button": "Ginkgo Button", + "block.emeraldcraft.ginkgo_sign": "Ginkgo Sign", + "block.emeraldcraft.ginkgo_wall_sign": "Ginkgo Wall Sign", + "block.emeraldcraft.palm_sapling": "Palm Sapling", + "block.emeraldcraft.potted_palm_sapling": "Potted Palm Sapling", + "block.emeraldcraft.palm_log": "Palm Log", + "block.emeraldcraft.stripped_palm_log": "Stripped Palm Log", + "block.emeraldcraft.palm_wood": "Palm Wood", + "block.emeraldcraft.stripped_palm_wood": "Stripped Palm Wood", + "block.emeraldcraft.palm_leaves": "Palm Leaves", + "block.emeraldcraft.palm_planks": "Palm Planks", + "block.emeraldcraft.palm_stairs": "Palm Stairs", + "block.emeraldcraft.palm_slab": "Palm Slab", + "block.emeraldcraft.palm_fence": "Palm Fence", + "block.emeraldcraft.palm_fence_gate": "Palm Fence Gate", + "block.emeraldcraft.palm_door": "Palm Door", + "block.emeraldcraft.palm_trapdoor": "Palm Trapdoor", + "block.emeraldcraft.palm_pressure_plate": "Palm Pressure Plate", + "block.emeraldcraft.palm_button": "Palm Button", + "block.emeraldcraft.palm_sign": "Palm Sign", + "block.emeraldcraft.palm_wall_sign": "Palm Wall Sign", + "block.emeraldcraft.peach_sapling": "Peach Sapling", + "block.emeraldcraft.potted_peach_sapling": "Potted Peach Sapling", + "block.emeraldcraft.peach_log": "Peach Log", + "block.emeraldcraft.stripped_peach_log": "Stripped Peach Log", + "block.emeraldcraft.peach_wood": "Peach Wood", + "block.emeraldcraft.stripped_peach_wood": "Stripped Peach Wood", + "block.emeraldcraft.peach_leaves": "Peach Leaves", + "block.emeraldcraft.peach_planks": "Peach Planks", + "block.emeraldcraft.peach_stairs": "Peach Stairs", + "block.emeraldcraft.peach_slab": "Peach Slab", + "block.emeraldcraft.peach_fence": "Peach Fence", + "block.emeraldcraft.peach_fence_gate": "Peach Fence Gate", + "block.emeraldcraft.peach_door": "Peach Door", + "block.emeraldcraft.peach_trapdoor": "Peach Trapdoor", + "block.emeraldcraft.peach_pressure_plate": "Peach Pressure Plate", + "block.emeraldcraft.peach_button": "Peach Button", + "block.emeraldcraft.peach_sign": "Peach Sign", + "block.emeraldcraft.peach_wall_sign": "Peach Wall Sign", + "block.emeraldcraft.purpuraceus_roots": "Purpuraceus Roots", + "block.emeraldcraft.purpuraceus_fungus": "Purpuraceus Fungus", + "block.emeraldcraft.purpuraceus_nylium": "Purpuraceus Nylium", + "block.emeraldcraft.potted_purpuraceus_roots": "Potted Purpuraceus Roots", + "block.emeraldcraft.potted_purpuraceus_fungus": "Potted Purpuraceus Fungus", + "block.emeraldcraft.purpuraceus_stem": "Purpuraceus Stem", + "block.emeraldcraft.stripped_purpuraceus_stem": "Stripped Purpuraceus Stem", + "block.emeraldcraft.purpuraceus_hyphae": "Purpuraceus Hyphae", + "block.emeraldcraft.stripped_purpuraceus_hyphae": "Stripped Purpuraceus Hyphae", + "block.emeraldcraft.purpuraceus_wart_block": "Purpuraceus Wart Block", + "block.emeraldcraft.purpuraceus_planks": "Purpuraceus Planks", + "block.emeraldcraft.purpuraceus_stairs": "Purpuraceus Stairs", + "block.emeraldcraft.purpuraceus_slab": "Purpuraceus Slab", + "block.emeraldcraft.purpuraceus_fence": "Purpuraceus Fence", + "block.emeraldcraft.purpuraceus_fence_gate": "Purpuraceus Fence Gate", + "block.emeraldcraft.purpuraceus_door": "Purpuraceus Door", + "block.emeraldcraft.purpuraceus_trapdoor": "Purpuraceus Trapdoor", + "block.emeraldcraft.purpuraceus_pressure_plate": "Purpuraceus Pressure Plate", + "block.emeraldcraft.purpuraceus_button": "Purpuraceus Button", + "block.emeraldcraft.purpuraceus_sign": "Purpuraceus Sign", + "block.emeraldcraft.purpuraceus_wall_sign": "Purpuraceus Wall Sign", + + "block.emeraldcraft.zinc_slab": "Zinc Slab", + "block.emeraldcraft.zinc_stairs": "Zinc Stairs", + "block.emeraldcraft.zinc_wall": "Zinc Wall", + "block.emeraldcraft.aluminum_stairs": "Aluminum Stairs", + "block.emeraldcraft.aluminum_wall": "Aluminum Wall", + "block.emeraldcraft.lead_stairs": "Lead Stairs", + "block.emeraldcraft.lead_wall": "Lead Wall", + "block.emeraldcraft.silver_stairs": "Silver Stairs", + "block.emeraldcraft.silver_wall": "Silver Wall", + "block.emeraldcraft.nickel_stairs": "Nickel Stairs", + "block.emeraldcraft.nickel_wall": "Nickel Wall", + "block.emeraldcraft.uranium_stairs": "Uranium Stairs", + "block.emeraldcraft.uranium_wall": "Uranium Wall", + "block.emeraldcraft.constantan_stairs": "Constantan Stairs", + "block.emeraldcraft.constantan_wall": "Constantan Wall", + "block.emeraldcraft.electrum_stairs": "Electrum Stairs", + "block.emeraldcraft.electrum_wall": "Electrum Wall", + "block.emeraldcraft.steel_stairs": "Steel Stairs", + "block.emeraldcraft.steel_wall": "Steel Wall", + + "block.minecraft.banner.emeraldcraft.bee.black": "Black Bee", + "block.minecraft.banner.emeraldcraft.bee.blue": "Blue Bee", + "block.minecraft.banner.emeraldcraft.bee.brown": "Brown Bee", + "block.minecraft.banner.emeraldcraft.bee.cyan": "Cyan Bee", + "block.minecraft.banner.emeraldcraft.bee.gray": "Gray Bee", + "block.minecraft.banner.emeraldcraft.bee.green": "Green Bee", + "block.minecraft.banner.emeraldcraft.bee.lightBlue": "Light Blue Bee", + "block.minecraft.banner.emeraldcraft.bee.lime": "Lime Bee", + "block.minecraft.banner.emeraldcraft.bee.magenta": "Magenta Bee", + "block.minecraft.banner.emeraldcraft.bee.orange": "Orange Bee", + "block.minecraft.banner.emeraldcraft.bee.pink": "Pink Bee", + "block.minecraft.banner.emeraldcraft.bee.purple": "Purple Bee", + "block.minecraft.banner.emeraldcraft.bee.red": "Red Bee", + "block.minecraft.banner.emeraldcraft.bee.silver": "Light Gray Bee", + "block.minecraft.banner.emeraldcraft.bee.white": "White Bee", + "block.minecraft.banner.emeraldcraft.bee.yellow": "Yellow Bee", + "block.minecraft.banner.emeraldcraft.snow.black": "Black Snow", + "block.minecraft.banner.emeraldcraft.snow.blue": "Blue Snow", + "block.minecraft.banner.emeraldcraft.snow.brown": "Brown Snow", + "block.minecraft.banner.emeraldcraft.snow.cyan": "Cyan Snow", + "block.minecraft.banner.emeraldcraft.snow.gray": "Gray Snow", + "block.minecraft.banner.emeraldcraft.snow.green": "Green Snow", + "block.minecraft.banner.emeraldcraft.snow.lightBlue": "Light Blue Snow", + "block.minecraft.banner.emeraldcraft.snow.lime": "Lime Snow", + "block.minecraft.banner.emeraldcraft.snow.magenta": "Magenta Snow", + "block.minecraft.banner.emeraldcraft.snow.orange": "Orange Snow", + "block.minecraft.banner.emeraldcraft.snow.pink": "Pink Snow", + "block.minecraft.banner.emeraldcraft.snow.purple": "Purple Snow", + "block.minecraft.banner.emeraldcraft.snow.red": "Red Snow", + "block.minecraft.banner.emeraldcraft.snow.silver": "Light Gray Snow", + "block.minecraft.banner.emeraldcraft.snow.white": "White Snow", + "block.minecraft.banner.emeraldcraft.snow.yellow": "Yellow Snow", + "block.minecraft.banner.emeraldcraft.bottle.black": "Black Bottle", + "block.minecraft.banner.emeraldcraft.bottle.blue": "Blue Bottle", + "block.minecraft.banner.emeraldcraft.bottle.brown": "Brown Bottle", + "block.minecraft.banner.emeraldcraft.bottle.cyan": "Cyan Bottle", + "block.minecraft.banner.emeraldcraft.bottle.gray": "Gray Bottle", + "block.minecraft.banner.emeraldcraft.bottle.green": "Green Bottle", + "block.minecraft.banner.emeraldcraft.bottle.lightBlue": "Light Blue Bottle", + "block.minecraft.banner.emeraldcraft.bottle.lime": "Lime Bottle", + "block.minecraft.banner.emeraldcraft.bottle.magenta": "Magenta Bottle", + "block.minecraft.banner.emeraldcraft.bottle.orange": "Orange Bottle", + "block.minecraft.banner.emeraldcraft.bottle.pink": "Pink Bottle", + "block.minecraft.banner.emeraldcraft.bottle.purple": "Purple Bottle", + "block.minecraft.banner.emeraldcraft.bottle.red": "Red Bottle", + "block.minecraft.banner.emeraldcraft.bottle.silver": "Light Gray Bottle", + "block.minecraft.banner.emeraldcraft.bottle.white": "White Bottle", + "block.minecraft.banner.emeraldcraft.bottle.yellow": "Yellow Bottle", + "block.minecraft.banner.emeraldcraft.potion.black": "Black Potion", + "block.minecraft.banner.emeraldcraft.potion.blue": "Blue Potion", + "block.minecraft.banner.emeraldcraft.potion.brown": "Brown Potion", + "block.minecraft.banner.emeraldcraft.potion.cyan": "Cyan Potion", + "block.minecraft.banner.emeraldcraft.potion.gray": "Gray Potion", + "block.minecraft.banner.emeraldcraft.potion.green": "Green Potion", + "block.minecraft.banner.emeraldcraft.potion.lightBlue": "Light Blue Potion", + "block.minecraft.banner.emeraldcraft.potion.lime": "Lime Potion", + "block.minecraft.banner.emeraldcraft.potion.magenta": "Magenta Potion", + "block.minecraft.banner.emeraldcraft.potion.orange": "Orange Potion", + "block.minecraft.banner.emeraldcraft.potion.pink": "Pink Potion", + "block.minecraft.banner.emeraldcraft.potion.purple": "Purple Potion", + "block.minecraft.banner.emeraldcraft.potion.red": "Red Potion", + "block.minecraft.banner.emeraldcraft.potion.silver": "Light Gray Potion", + "block.minecraft.banner.emeraldcraft.potion.white": "White Potion", + "block.minecraft.banner.emeraldcraft.potion.yellow": "Yellow Potion", + + "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.bigeye_spawn_egg": "Purple Spotted Bigeye Spawn Egg", + "item.emeraldcraft.herring_spawn_egg": "Herring Spawn Egg", + "item.emeraldcraft.wraith_spawn_egg": "Wraith Spawn Egg", + "item.emeraldcraft.manta_spawn_egg": "Manta 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", + "item.emeraldcraft.ginkgo_nut": "Ginkgo nut", + "item.emeraldcraft.ginkgo_boat": "Ginkgo Boat", + "item.emeraldcraft.palm_boat": "Palm Boat", + "item.emeraldcraft.peach_boat": "Peach Boat", + "item.emeraldcraft.ginkgo_chest_boat": "Ginkgo Chest Boat", + "item.emeraldcraft.palm_chest_boat": "Palm Chest Boat", + "item.emeraldcraft.peach_chest_boat": "Peach Chest Boat", + "item.emeraldcraft.peach": "Peach", + "item.emeraldcraft.golden_peach": "Golden Peach", + "item.emeraldcraft.potion_cookie": "Cookie", + "item.emeraldcraft.cooked_tropical_fish": "Cooked Tropical Fish", + "item.emeraldcraft.cooked_purpuraceus_fungus": "Cooked Purpuraceus Fungus", + "item.emeraldcraft.boiled_egg": "Boiled Egg", + "item.emeraldcraft.chorus_flower_eggdrop_soup": "Chorus Flower Eggdrop Soup", + "item.emeraldcraft.herring": "Herring", + "item.emeraldcraft.cooked_herring": "Cooked Herring", + "item.emeraldcraft.purple_spotted_bigeye": "Purple Spotted Bigeye", + "item.emeraldcraft.cooked_purple_spotted_bigeye": "Cooked Purple Spotted Bigeye", + "item.emeraldcraft.caramelized_potato": "Caramelized Potato", + "item.emeraldcraft.rougamo": "Rougamo", + "item.emeraldcraft.beef_and_potato_stew": "Beef and Potato Stew", + "item.emeraldcraft.braised_chicken": "Braised Chicken", + "item.emeraldcraft.sausage": "Sausage", + "item.emeraldcraft.cooked_sausage": "Cooked Sausage", + "item.emeraldcraft.gluten": "Gluten", + "item.emeraldcraft.warden_heart": "Warden Heart", + "item.emeraldcraft.stir_fried_warden_heart": "Stir-Fried Warden Heart", + "item.emeraldcraft.chili": "Chili", + "item.emeraldcraft.chili_seed": "Chili Seed", + "item.emeraldcraft.apple_juice": "Apple Juice", + "item.emeraldcraft.beetroot_juice": "Beetroot Juice", + "item.emeraldcraft.carrot_juice": "Carrot Juice", + "item.emeraldcraft.melon_juice": "Melon Juice", + "item.emeraldcraft.peach_juice": "Peach Juice", + "item.emeraldcraft.pumpkin_juice": "Pumpkin Juice", + "item.emeraldcraft.herring_bucket": "Herring Bucket", + "item.emeraldcraft.bigeye_bucket": "Purple Spotted Bigeye Bucket", + + "item.emeraldcraft.melted_zinc_bucket": "Melted Zinc Bucket", + "item.emeraldcraft.zinc_concentrate": "Zinc Concentrate", + "item.emeraldcraft.melted_aluminum_bucket": "Melted Aluminum Bucket", + "item.emeraldcraft.aluminum_concentrate": "Aluminum Concentrate", + "item.emeraldcraft.melted_lead_bucket": "Melted Lead Bucket", + "item.emeraldcraft.lead_concentrate": "Lead Concentrate", + "item.emeraldcraft.melted_silver_bucket": "Melted Silver Bucket", + "item.emeraldcraft.silver_concentrate": "Silver Concentrate", + "item.emeraldcraft.melted_nickel_bucket": "Melted Nickel Bucket", + "item.emeraldcraft.nickel_concentrate": "Nickel Concentrate", + "item.emeraldcraft.melted_uranium_bucket": "Melted Uranium Bucket", + "item.emeraldcraft.uranium_concentrate": "Uranium Concentrate", + + "item.minecraft.potion.effect.absorption": "Absorption Potion", + "item.minecraft.splash_potion.effect.absorption": "Splash Absorption Potion", + "item.minecraft.lingering_potion.effect.absorption": "Lingering Absorption Potion", + "item.minecraft.potion.effect.blindness": "Blindness Potion", + "item.minecraft.splash_potion.effect.blindness": "Splash Blindness Potion", + "item.minecraft.lingering_potion.effect.blindness": "Lingering Blindness Potion", + "item.minecraft.potion.effect.hunger": "Hunger Potion", + "item.minecraft.splash_potion.effect.hunger": "Splash Hunger Potion", + "item.minecraft.lingering_potion.effect.hunger": "Lingering Hunger Potion", + "item.minecraft.potion.effect.saturation": "Saturation Potion", + "item.minecraft.splash_potion.effect.saturation": "Splash Saturation Potion", + "item.minecraft.lingering_potion.effect.saturation": "Lingering Saturation Potion", + "item.minecraft.potion.effect.wither": "Wither Potion", + "item.minecraft.splash_potion.effect.wither": "Splash Wither Potion", + "item.minecraft.lingering_potion.effect.wither": "Lingering Wither Potion", + "item.minecraft.potion.effect.glowing": "Glowing Potion", + "item.minecraft.splash_potion.effect.glowing": "Splash Glowing Potion", + "item.minecraft.lingering_potion.effect.glowing": "Lingering Glowing Potion", + + "item.minecraft.tipped_arrow.effect.absorption": "Arrow of Absorption", + "item.minecraft.tipped_arrow.effect.blindness": "Arrow of Blindness", + "item.minecraft.tipped_arrow.effect.hunger": "Arrow of Hunger", + "item.minecraft.tipped_arrow.effect.saturation": "Arrow of Saturation", + "item.minecraft.tipped_arrow.effect.wither": "Arrow of Wither", + "item.minecraft.tipped_arrow.effect.glowing": "Arrow of Glowing", + + "entity.emeraldcraft.piglin_cutey": "Piglin Cutey", + "entity.emeraldcraft.nether_pigman": "Nether Pigman", + "entity.emeraldcraft.nether_lambman": "Nether Lambman", + "entity.emeraldcraft.purple_spotted_bigeye": "Purple-spotted Bigeye", + "entity.emeraldcraft.herring": "Herring", + "entity.emeraldcraft.wraith": "Wraith", + "entity.emeraldcraft.manta": "Manta", + "entity.emeraldcraft.boat": "Boat", + "entity.emeraldcraft.chest_boat": "Chest Boat", + "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", + "subtitles.entity.herring.flop": "Herring flops", + "subtitles.entity.herring.hurt": "Herring hurts", + "subtitles.entity.herring.death": "Herring dies", + "subtitles.entity.purple_spotted_bigeye.flop": "Purple Spotted Bigeye flops", + "subtitles.entity.purple_spotted_bigeye.hurt": "Purple Spotted Bigeye hurts", + "subtitles.entity.purple_spotted_bigeye.death": "Purple Spotted Bigeye dies", + "subtitles.entity.wraith.ambient": "Wraith groans", + "subtitles.entity.wraith.hurt": "Wraith hurts", + "subtitles.entity.wraith.death": "Wraith dies", + "subtitles.entity.manta.ambient": "Manta flies", + "subtitles.entity.manta.hurt": "Manta hurts", + "subtitles.entity.manta.death": "Manta dies", + + "subtitles.block.flower.drop_leaves": "Higan Bana Drops Leaves", + + "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", + + "desc.emeraldcraft.carpentry_table": "Craft wood related blocks and items in smaller and more precise quantities, and even more efficient than crafting for certain recipes", + "desc.emeraldcraft.glass_kiln": "Cook glass and terracotta items and takes only half the time as a standard furnace takes", + "desc.emeraldcraft.mineral_table": "Smelt mineral nuggets from common blocks, which costs blaze powder", + "desc.emeraldcraft.crystalball_table": "Need XP?", + "desc.emeraldcraft.squeezer": "Get honey from honeycomb blocks", + "desc.emeraldcraft.continuous_miner": "An automated miner that cost melted emerald and need to be activated by redstone signal", + "desc.emeraldcraft.ice_maker": "Solidify liquid, which costs water", + "desc.emeraldcraft.melter": "Melt solid, which costs fuel", + + "biome.emeraldcraft.dead_crimson_ocean": "Dead Crimson Ocean", + "biome.emeraldcraft.dead_warped_ocean": "Dead Warped Ocean", + "biome.emeraldcraft.deep_dead_crimson_ocean": "Deep Dead Crimson Ocean", + "biome.emeraldcraft.deep_dead_warped_ocean": "Deep Dead Warped Ocean", + "biome.emeraldcraft.xanadu": "Xanadu", + "biome.emeraldcraft.ginkgo_forest": "Ginkgo Forest", + "biome.emeraldcraft.karst_hills": "Karst Hills", + "biome.emeraldcraft.petunia_plains": "Petunia Plains", + "biome.emeraldcraft.golden_beach": "Golden Beach", + "biome.emeraldcraft.palm_beach": "Palm Beach", + "biome.emeraldcraft.azure_desert": "Azure Desert", + "biome.emeraldcraft.jadeite_desert": "Jadeite Desert", + "biome.emeraldcraft.volcanic_caves": "Volcanic Caves", + "biome.emeraldcraft.quartz_desert": "Quartz Desert", + "biome.emeraldcraft.emery_desert": "Emery Desert", + "biome.emeraldcraft.purpuraceus_swamp": "Purpuraceus Swamp", + + "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.", + "advancements.emeraldcraft.cure_phantom.title": "Phantom Doctor", + "advancements.emeraldcraft.cure_phantom.description": "Cure a phantom with spectral arrow or glowing splash potion, and a golden peach.", + "advancements.emeraldcraft.cure_zombified_piglin.title": "Zombified Piglin Doctor", + "advancements.emeraldcraft.cure_zombified_piglin.description": "Cure a zombified piglin with hunger splash potion and a golden carrot.", + "advancements.emeraldcraft.friend_from_the_nether.title": "Friend from the Nether", + "advancements.emeraldcraft.friend_from_the_nether.description": "Find a piglin cutey.", + "advancements.emeraldcraft.surely_see_each_other_again.title": "Surely See Each Other Again", + "advancements.emeraldcraft.surely_see_each_other_again.description": "Help piglin cutey achieve her desire.", + "advancements.emeraldcraft.a_horrible_entrenchment.title": "A Horrible Entrenchment", + "advancements.emeraldcraft.a_horrible_entrenchment.description": "Find a entrenchment. Watch out for the wraiths!", + "advancements.emeraldcraft.noisy_guy.title": "Noisy Guy", + "advancements.emeraldcraft.noisy_guy.description": "Obtain a continuous miner.", + "advancements.emeraldcraft.hotter_topic.title": "Hotter Topic", + "advancements.emeraldcraft.hotter_topic.description": "Obtain a melter.", + "advancements.emeraldcraft.more_effective_craft.title": "More Effective Craft", + "advancements.emeraldcraft.more_effective_craft.description": "Craft a concentrate from raw ores.", + "advancements.emeraldcraft.ice_cream_please.title": "Ice Cream Please", + "advancements.emeraldcraft.ice_cream_please.description": "Obtain a ice maker.", + + "filled_map.shelter": "Search & Rescue Explorer Map", + "filled_map.entrenchment": "Geocenter Explorer Map", + + "fluids.save.bucket": "Able to fill %s %s", + "fluids.name.water": "Water", + "fluids.name.lava": "Lava", + "fluids.name.melted_emerald": "Melted Emerald", + "fluids.name.melted_iron": "Melted Iron", + "fluids.name.melted_gold": "Melted Gold", + "fluids.name.melted_copper": "Melted Copper", + "fluids.name.melted_zinc": "Melted Zinc", + "fluids.name.melted_aluminum": "Melted Aluminum", + "fluids.name.melted_lead": "Melted Lead", + "fluids.name.melted_silver": "Melted Silver", + "fluids.name.melted_nickel": "Melted Nickel", + "fluids.name.melted_uranium": "Melted Uranium", + + "jei.emeraldcraft.villager_trade": "Trade with Villagers" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/lang/ja_jp.json b/src/main/resources/assets/emeraldcraft/lang/ja_jp.json new file mode 100644 index 00000000..ff7cdcc4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/lang/ja_jp.json @@ -0,0 +1,538 @@ +{ + "language": "Japanese", + "language.code": "ja_jp", + "language.region": "Japan", + "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.vitrified_sand": "ガラス化した砂", + "block.emeraldcraft.dark_sand": "暗い砂", + "block.emeraldcraft.azure_sand": "リウリ砂", + "block.emeraldcraft.quartz_sand": "石英砂", + "block.emeraldcraft.jadeite_sand": "ヒスイ砂", + "block.emeraldcraft.emery_sand": "エメリー砂", + "block.emeraldcraft.dark_sandstone": "暗い砂岩", + "block.emeraldcraft.azure_sandstone": "リウリ砂岩", + "block.emeraldcraft.quartz_sandstone": "石英砂岩", + "block.emeraldcraft.jadeite_sandstone": "ヒスイ砂岩", + "block.emeraldcraft.emery_sandstone": "エメリー砂岩", + "block.emeraldcraft.smooth_dark_sandstone": "滑らかな暗い砂岩", + "block.emeraldcraft.smooth_azure_sandstone": "滑らかなリウリ砂岩", + "block.emeraldcraft.smooth_quartz_sandstone": "滑らかな石英砂岩", + "block.emeraldcraft.smooth_jadeite_sandstone": "滑らかなヒスイ砂岩", + "block.emeraldcraft.smooth_emery_sandstone": "滑らかなエメリー砂岩", + "block.emeraldcraft.cut_dark_sandstone": "研がれた暗い砂岩", + "block.emeraldcraft.cut_azure_sandstone": "研がれたリウリ砂岩", + "block.emeraldcraft.cut_quartz_sandstone": "研がれた石英砂岩", + "block.emeraldcraft.cut_jadeite_sandstone": "研がれたヒスイ砂岩", + "block.emeraldcraft.cut_emery_sandstone": "研がれたエメリー砂岩", + "block.emeraldcraft.dark_sandstone_slab": "暗い砂岩のハーフブロック", + "block.emeraldcraft.azure_sandstone_slab": "リウリ砂岩のハーフブロック", + "block.emeraldcraft.quartz_sandstone_slab": "石英砂岩のハーフブロック", + "block.emeraldcraft.jadeite_sandstone_slab": "ヒスイ砂岩のハーフブロック", + "block.emeraldcraft.emery_sandstone_slab": "エメリー砂岩のハーフブロック", + "block.emeraldcraft.smooth_dark_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_dark_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.dark_sandstone_stairs": "暗い砂岩の階段", + "block.emeraldcraft.azure_sandstone_stairs": "リウリ砂岩の階段", + "block.emeraldcraft.quartz_sandstone_stairs": "石英砂岩の階段", + "block.emeraldcraft.jadeite_sandstone_stairs": "ヒスイ砂岩の階段", + "block.emeraldcraft.emery_sandstone_stairs": "エメリー砂岩の階段", + "block.emeraldcraft.smooth_dark_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.dark_sandstone_wall": "暗い砂岩の塀", + "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.purple_nether_brick_slab": "紫のネザーレンガのハーフブロック", + "block.emeraldcraft.purple_nether_brick_stairs": "紫のネザーレンガの階段", + "block.emeraldcraft.purple_nether_brick_wall": "紫のネザーレンガの塀", + "block.emeraldcraft.purple_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": "歪んだ丸石", + "block.emeraldcraft.cyan_petunia": "青緑色のペチュニア", + "block.emeraldcraft.magenta_petunia": "赤紫色のペチュニア", + "block.emeraldcraft.higan_bana": "彼岸花", + "block.emeraldcraft.potted_cyan_petunia": "植えられた青緑色のペチュニア", + "block.emeraldcraft.potted_magenta_petunia": "植えられた赤紫色のペチュニア", + "block.emeraldcraft.potted_higan_bana": "植えられた彼岸花", + "block.emeraldcraft.ginkgo_sapling": "銀杏の苗木", + "block.emeraldcraft.potted_ginkgo_sapling": "植えられた銀杏の苗木", + "block.emeraldcraft.ginkgo_log": "銀杏の原木", + "block.emeraldcraft.stripped_ginkgo_log": "樹皮を剥いだ銀杏の原木", + "block.emeraldcraft.ginkgo_wood": "銀杏の木", + "block.emeraldcraft.stripped_ginkgo_wood": "樹皮を剥いだ銀杏の木", + "block.emeraldcraft.ginkgo_leaves": "銀杏の葉", + "block.emeraldcraft.ginkgo_planks": "銀杏の板材", + "block.emeraldcraft.ginkgo_stairs": "銀杏の階段", + "block.emeraldcraft.ginkgo_slab": "銀杏のハーフブロック", + "block.emeraldcraft.ginkgo_fence": "銀杏のフェンス", + "block.emeraldcraft.ginkgo_fence_gate": "銀杏のフェンスゲート", + "block.emeraldcraft.ginkgo_door": "銀杏のドア", + "block.emeraldcraft.ginkgo_trapdoor": "銀杏のトラップドア", + "block.emeraldcraft.ginkgo_pressure_plate": "銀杏の感圧板", + "block.emeraldcraft.ginkgo_button": "銀杏のボタン", + "block.emeraldcraft.ginkgo_sign": "銀杏の看板", + "block.emeraldcraft.ginkgo_wall_sign": "壁に付けられた銀杏の看板", + "block.emeraldcraft.palm_sapling": "ヤシの苗木", + "block.emeraldcraft.potted_palm_sapling": "植えられたヤシの苗木", + "block.emeraldcraft.palm_log": "ヤシの原木", + "block.emeraldcraft.stripped_palm_log": "樹皮を剥いだヤシの原木", + "block.emeraldcraft.palm_wood": "ヤシの木", + "block.emeraldcraft.stripped_palm_wood": "樹皮を剥いだヤシの木", + "block.emeraldcraft.palm_leaves": "ヤシの葉", + "block.emeraldcraft.palm_planks": "ヤシの板材", + "block.emeraldcraft.palm_stairs": "ヤシの階段", + "block.emeraldcraft.palm_slab": "ヤシのハーフブロック", + "block.emeraldcraft.palm_fence": "ヤシのフェンス", + "block.emeraldcraft.palm_fence_gate": "ヤシのフェンスゲート", + "block.emeraldcraft.palm_door": "ヤシのドア", + "block.emeraldcraft.palm_trapdoor": "ヤシのトラップドア", + "block.emeraldcraft.palm_pressure_plate": "ヤシの感圧板", + "block.emeraldcraft.palm_button": "ヤシのボタン", + "block.emeraldcraft.palm_sign": "ヤシの看板", + "block.emeraldcraft.palm_wall_sign": "壁に付けられたヤシの看板", + "block.emeraldcraft.peach_sapling": "桃の苗木", + "block.emeraldcraft.potted_peach_sapling": "植えられた桃の苗木", + "block.emeraldcraft.peach_log": "桃の原木", + "block.emeraldcraft.stripped_peach_log": "樹皮を剥いだ桃の原木", + "block.emeraldcraft.peach_wood": "桃の木", + "block.emeraldcraft.stripped_peach_wood": "樹皮を剥いだ桃の木", + "block.emeraldcraft.peach_leaves": "桃の葉", + "block.emeraldcraft.peach_planks": "桃の板材", + "block.emeraldcraft.peach_stairs": "桃の階段", + "block.emeraldcraft.peach_slab": "桃のハーフブロック", + "block.emeraldcraft.peach_fence": "桃のフェンス", + "block.emeraldcraft.peach_fence_gate": "桃のフェンスゲート", + "block.emeraldcraft.peach_door": "桃のドア", + "block.emeraldcraft.peach_trapdoor": "桃のトラップドア", + "block.emeraldcraft.peach_pressure_plate": "桃の感圧板", + "block.emeraldcraft.peach_button": "桃のボタン", + "block.emeraldcraft.peach_sign": "桃の看板", + "block.emeraldcraft.peach_wall_sign": "壁に付けられた桃の看板", + "block.emeraldcraft.purpuraceus_roots": "紫斑の根", + "block.emeraldcraft.purpuraceus_fungus": "紫斑菌", + "block.emeraldcraft.purpuraceus_nylium": "紫斑のナイリウム", + "block.emeraldcraft.potted_purpuraceus_roots": "植えられた紫斑の根", + "block.emeraldcraft.potted_purpuraceus_fungus": "植えられた紫斑菌", + "block.emeraldcraft.purpuraceus_stem": "紫斑の幹", + "block.emeraldcraft.stripped_purpuraceus_stem": "樹皮を剥いだ紫斑の幹", + "block.emeraldcraft.purpuraceus_hyphae": "紫斑の菌糸", + "block.emeraldcraft.stripped_purpuraceus_hyphae": "樹皮を剥いだ紫斑の菌糸", + "block.emeraldcraft.purpuraceus_wart_block": "紫斑のウォートブロック", + "block.emeraldcraft.purpuraceus_planks": "紫斑の板材", + "block.emeraldcraft.purpuraceus_stairs": "紫斑の階段", + "block.emeraldcraft.purpuraceus_slab": "紫斑のハーフブロック", + "block.emeraldcraft.purpuraceus_fence": "紫斑のフェンス", + "block.emeraldcraft.purpuraceus_fence_gate": "紫斑のフェンスゲート", + "block.emeraldcraft.purpuraceus_door": "紫斑のドア", + "block.emeraldcraft.purpuraceus_trapdoor": "紫斑のトラップドア", + "block.emeraldcraft.purpuraceus_pressure_plate": "紫斑の感圧板", + "block.emeraldcraft.purpuraceus_button": "紫斑のボタン", + "block.emeraldcraft.purpuraceus_sign": "紫斑の看板", + "block.emeraldcraft.purpuraceus_wall_sign": "壁に付けられた紫斑の看板", + + "block.emeraldcraft.zinc_slab": "亜鉛のハーフブロック", + "block.emeraldcraft.zinc_stairs": "亜鉛の階段", + "block.emeraldcraft.zinc_wall": "亜鉛の塀", + "block.emeraldcraft.aluminum_stairs": "アルミニウムの階段", + "block.emeraldcraft.aluminum_wall": "アルミニウムの塀", + "block.emeraldcraft.lead_stairs": "鉛の階段", + "block.emeraldcraft.lead_wall": "鉛の塀", + "block.emeraldcraft.silver_stairs": "銀の階段", + "block.emeraldcraft.silver_wall": "銀の塀", + "block.emeraldcraft.nickel_stairs": "ニッケルの階段", + "block.emeraldcraft.nickel_wall": "ニッケルの塀", + "block.emeraldcraft.uranium_stairs": "ウランの階段", + "block.emeraldcraft.uranium_wall": "ウランの塀", + "block.emeraldcraft.constantan_stairs": "コンスタンタンの階段", + "block.emeraldcraft.constantan_wall": "コンスタンタンの塀", + "block.emeraldcraft.electrum_stairs": "エレクトラムの階段", + "block.emeraldcraft.electrum_wall": "エレクトラムの塀", + "block.emeraldcraft.steel_stairs": "鋼の階段", + "block.emeraldcraft.steel_wall": "鋼の塀", + + "block.minecraft.banner.emeraldcraft.bee.black": "黒色のミツバチ", + "block.minecraft.banner.emeraldcraft.bee.blue": "青色のミツバチ", + "block.minecraft.banner.emeraldcraft.bee.brown": "茶色のミツバチ", + "block.minecraft.banner.emeraldcraft.bee.cyan": "青緑色のミツバチ", + "block.minecraft.banner.emeraldcraft.bee.gray": "灰色のミツバチ", + "block.minecraft.banner.emeraldcraft.bee.green": "緑色のミツバチ", + "block.minecraft.banner.emeraldcraft.bee.lightBlue": "空色のミツバチ", + "block.minecraft.banner.emeraldcraft.bee.lime": "黄緑色のミツバチ", + "block.minecraft.banner.emeraldcraft.bee.magenta": "赤紫色のミツバチ", + "block.minecraft.banner.emeraldcraft.bee.orange": "橙色のミツバチ", + "block.minecraft.banner.emeraldcraft.bee.pink": "桃色のミツバチ", + "block.minecraft.banner.emeraldcraft.bee.purple": "紫色のミツバチ", + "block.minecraft.banner.emeraldcraft.bee.red": "赤色のミツバチ", + "block.minecraft.banner.emeraldcraft.bee.silver": "薄灰色のミツバチ", + "block.minecraft.banner.emeraldcraft.bee.white": "白色のミツバチ", + "block.minecraft.banner.emeraldcraft.bee.yellow": "黄色のミツバチ", + "block.minecraft.banner.emeraldcraft.snow.black": "黒色のスノーフレーク", + "block.minecraft.banner.emeraldcraft.snow.blue": "青色のスノーフレーク", + "block.minecraft.banner.emeraldcraft.snow.brown": "茶色のスノーフレーク", + "block.minecraft.banner.emeraldcraft.snow.cyan": "青緑色のスノーフレーク", + "block.minecraft.banner.emeraldcraft.snow.gray": "灰色のスノーフレーク", + "block.minecraft.banner.emeraldcraft.snow.green": "緑色のスノーフレーク", + "block.minecraft.banner.emeraldcraft.snow.lightBlue": "空色のスノーフレーク", + "block.minecraft.banner.emeraldcraft.snow.lime": "黄緑色のスノーフレーク", + "block.minecraft.banner.emeraldcraft.snow.magenta": "赤紫色のスノーフレーク", + "block.minecraft.banner.emeraldcraft.snow.orange": "橙色のスノーフレーク", + "block.minecraft.banner.emeraldcraft.snow.pink": "桃色のスノーフレーク", + "block.minecraft.banner.emeraldcraft.snow.purple": "紫色のスノーフレーク", + "block.minecraft.banner.emeraldcraft.snow.red": "赤色のスノーフレーク", + "block.minecraft.banner.emeraldcraft.snow.silver": "薄灰色のスノーフレーク", + "block.minecraft.banner.emeraldcraft.snow.white": "白色のスノーフレーク", + "block.minecraft.banner.emeraldcraft.snow.yellow": "黄色のスノーフレーク", + "block.minecraft.banner.emeraldcraft.bottle.black": "黒色のボトル", + "block.minecraft.banner.emeraldcraft.bottle.blue": "青色のボトル", + "block.minecraft.banner.emeraldcraft.bottle.brown": "茶色のボトル", + "block.minecraft.banner.emeraldcraft.bottle.cyan": "青緑色のボトル", + "block.minecraft.banner.emeraldcraft.bottle.gray": "灰色のボトル", + "block.minecraft.banner.emeraldcraft.bottle.green": "緑色のボトル", + "block.minecraft.banner.emeraldcraft.bottle.lightBlue": "空色のボトル", + "block.minecraft.banner.emeraldcraft.bottle.lime": "黄緑色のボトル", + "block.minecraft.banner.emeraldcraft.bottle.magenta": "赤紫色のボトル", + "block.minecraft.banner.emeraldcraft.bottle.orange": "橙色のボトル", + "block.minecraft.banner.emeraldcraft.bottle.pink": "桃色のボトル", + "block.minecraft.banner.emeraldcraft.bottle.purple": "紫色のボトル", + "block.minecraft.banner.emeraldcraft.bottle.red": "赤色のボトル", + "block.minecraft.banner.emeraldcraft.bottle.silver": "薄灰色のボトル", + "block.minecraft.banner.emeraldcraft.bottle.white": "白色のボトル", + "block.minecraft.banner.emeraldcraft.bottle.yellow": "黄色のボトル", + "block.minecraft.banner.emeraldcraft.potion.black": "黒色のポーション", + "block.minecraft.banner.emeraldcraft.potion.blue": "青色のポーション", + "block.minecraft.banner.emeraldcraft.potion.brown": "茶色のポーション", + "block.minecraft.banner.emeraldcraft.potion.cyan": "青緑色のポーション", + "block.minecraft.banner.emeraldcraft.potion.gray": "灰色のポーション", + "block.minecraft.banner.emeraldcraft.potion.green": "緑色のポーション", + "block.minecraft.banner.emeraldcraft.potion.lightBlue": "空色のポーション", + "block.minecraft.banner.emeraldcraft.potion.lime": "黄緑色のポーション", + "block.minecraft.banner.emeraldcraft.potion.magenta": "赤紫色のポーション", + "block.minecraft.banner.emeraldcraft.potion.orange": "橙色のポーション", + "block.minecraft.banner.emeraldcraft.potion.pink": "桃色のポーション", + "block.minecraft.banner.emeraldcraft.potion.purple": "紫色のポーション", + "block.minecraft.banner.emeraldcraft.potion.red": "赤色のポーション", + "block.minecraft.banner.emeraldcraft.potion.silver": "薄灰色のポーション", + "block.minecraft.banner.emeraldcraft.potion.white": "白色のポーション", + "block.minecraft.banner.emeraldcraft.potion.yellow": "黄色のポーション", + + "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.bigeye_spawn_egg": "キントキダイのスポーンエッグ", + "item.emeraldcraft.herring_spawn_egg": "ハーリングのスポーンエッグ", + "item.emeraldcraft.wraith_spawn_egg": "レイスのスポーンエッグ", + "item.emeraldcraft.manta_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": "銅精鉱", + "item.emeraldcraft.ginkgo_nut": "銀杏", + "item.emeraldcraft.ginkgo_boat": "銀杏のボート", + "item.emeraldcraft.palm_boat": "ヤシのボート", + "item.emeraldcraft.peach_boat": "桃のボート", + "item.emeraldcraft.ginkgo_chest_boat": "銀杏のチェスト付きのボート", + "item.emeraldcraft.palm_chest_boat": "ヤシのチェスト付きのボート", + "item.emeraldcraft.peach_chest_boat": "桃のチェスト付きのボート", + "item.emeraldcraft.peach": "桃の実", + "item.emeraldcraft.golden_peach": "金の桃の実", + "item.emeraldcraft.potion_cookie": "クッキー", + "item.emeraldcraft.cooked_tropical_fish": "焼き熱帯魚", + "item.emeraldcraft.cooked_purpuraceus_fungus": "焼き紫斑菌", + "item.emeraldcraft.boiled_egg": "ゆで卵", + "item.emeraldcraft.chorus_flower_eggdrop_soup": "コーラスフラワー卵スープ", + "item.emeraldcraft.herring": "ハーリング", + "item.emeraldcraft.cooked_herring": "焼きハーリング", + "item.emeraldcraft.purple_spotted_bigeye": "キントキダイ", + "item.emeraldcraft.cooked_purple_spotted_bigeye": "焼きキントキダイ", + "item.emeraldcraft.caramelized_potato": "カラメルポテト", + "item.emeraldcraft.rougamo": "ロージャーモー", + "item.emeraldcraft.beef_and_potato_stew": "肉じゃが", + "item.emeraldcraft.braised_chicken": "鶏公煲", + "item.emeraldcraft.sausage": "ソーセージ", + "item.emeraldcraft.cooked_sausage": "焼きソーセージ", + "item.emeraldcraft.gluten": "麩質", + "item.emeraldcraft.warden_heart": "ウォーデンの心臓", + "item.emeraldcraft.stir_fried_warden_heart": "ウォーデンの心臓の炒め", + "item.emeraldcraft.chili": "チリ", + "item.emeraldcraft.chili_seed": "チリの種", + "item.emeraldcraft.apple_juice": "りんごジュース", + "item.emeraldcraft.beetroot_juice": "ビートジュース", + "item.emeraldcraft.carrot_juice": "にんじんジュース", + "item.emeraldcraft.melon_juice": "メロンジュース", + "item.emeraldcraft.peach_juice": "ピーチジュース", + "item.emeraldcraft.pumpkin_juice": "かぼちゃジュース", + "item.emeraldcraft.herring_bucket": "ハーリング入りバケツ", + "item.emeraldcraft.bigeye_bucket": "キントキダイ入りバケツ", + + "item.emeraldcraft.melted_zinc_bucket": "溶けた亜鉛入りバケツ", + "item.emeraldcraft.zinc_concentrate": "亜鉛精鉱", + "item.emeraldcraft.melted_aluminum_bucket": "溶けたアルミニウム入りバケツ", + "item.emeraldcraft.aluminum_concentrate": "アルミニウム精鉱", + "item.emeraldcraft.melted_lead_bucket": "溶けた鉛入りバケツ", + "item.emeraldcraft.lead_concentrate": "鉛精鉱", + "item.emeraldcraft.melted_silver_bucket": "溶けた銀入りバケツ", + "item.emeraldcraft.silver_concentrate": "銀精鉱", + "item.emeraldcraft.melted_nickel_bucket": "溶けたニッケル入りバケツ", + "item.emeraldcraft.nickel_concentrate": "ニッケル精鉱", + "item.emeraldcraft.melted_uranium_bucket": "溶けたウラン入りバケツ", + "item.emeraldcraft.uranium_concentrate": "ウラン精鉱", + + "item.minecraft.potion.effect.absorption": "衝撃吸収のポーション", + "item.minecraft.splash_potion.effect.absorption": "スプラッシュ 衝撃吸収のポーション", + "item.minecraft.lingering_potion.effect.absorption": "衝撃吸収の残留ポーション", + "item.minecraft.potion.effect.blindness": "盲目のポーション", + "item.minecraft.splash_potion.effect.blindness": "スプラッシュ 盲目のポーション", + "item.minecraft.lingering_potion.effect.blindness": "盲目の残留ポーション", + "item.minecraft.potion.effect.hunger": "空腹のポーション", + "item.minecraft.splash_potion.effect.hunger": "スプラッシュ 空腹のポーション", + "item.minecraft.lingering_potion.effect.hunger": "空腹の残留ポーション", + "item.minecraft.potion.effect.saturation": "満腹度回復のポーション", + "item.minecraft.splash_potion.effect.saturation": "スプラッシュ 満腹度回復のポーション", + "item.minecraft.lingering_potion.effect.saturation": "満腹度回復の残留ポーション", + "item.minecraft.potion.effect.wither": "衰弱のポーション", + "item.minecraft.splash_potion.effect.wither": "スプラッシュ 衰弱のポーション", + "item.minecraft.lingering_potion.effect.wither": "衰弱の残留ポーション", + "item.minecraft.potion.effect.glowing": "発光のポーション", + "item.minecraft.splash_potion.effect.glowing": "スプラッシュ 発光のポーション", + "item.minecraft.lingering_potion.effect.glowing": "発光の残留ポーション", + + "item.minecraft.tipped_arrow.effect.absorption": "衝撃吸収の矢", + "item.minecraft.tipped_arrow.effect.blindness": "盲目の矢", + "item.minecraft.tipped_arrow.effect.hunger": "空腹の矢", + "item.minecraft.tipped_arrow.effect.saturation": "満腹度回復の矢", + "item.minecraft.tipped_arrow.effect.wither": "衰弱の矢", + "item.minecraft.tipped_arrow.effect.glowing": "発光の矢", + + "entity.emeraldcraft.piglin_cutey": "ピグリンガール", + "entity.emeraldcraft.nether_pigman": "ネザーピッグマン", + "entity.emeraldcraft.nether_lambman": "ネザーラムマン", + "entity.emeraldcraft.purple_spotted_bigeye": "キントキダイ", + "entity.emeraldcraft.herring": "ハーリング", + "entity.emeraldcraft.wraith": "レイス", + "entity.emeraldcraft.manta": "鰩鯤", + "entity.emeraldcraft.boat": "ボート", + "entity.emeraldcraft.chest_boat": "チェスト付きのボート", + "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": "化学エンジニアがアイテムを補充する", + "subtitles.entity.herring.flop": "ハーリングが跳ねる", + "subtitles.entity.herring.hurt": "ハーリングがダメージを受ける", + "subtitles.entity.herring.death": "ハーリングが死ぬ", + "subtitles.entity.purple_spotted_bigeye.flop": "キントキダイが跳ねる", + "subtitles.entity.purple_spotted_bigeye.hurt": "キントキダイがダメージを受ける", + "subtitles.entity.purple_spotted_bigeye.death": "キントキダイが死ぬ", + "subtitles.entity.wraith.ambient": "レイスがうめく", + "subtitles.entity.wraith.hurt": "レイスがダメージを受ける", + "subtitles.entity.wraith.death": "レイスが死ぬ", + "subtitles.entity.manta.ambient": "鰩鯤が飛ぶ", + "subtitles.entity.manta.hurt": "鰩鯤がダメージを受ける", + "subtitles.entity.manta.death": "鰩鯤が死ぬ", + + "subtitles.block.flower.drop_leaves": "彼岸花が葉を落とす", + + "container.carpentry": "木工用テーブル", + "container.glass_kiln": "ガラス窯", + "container.mineral_table": "冶金の机", + "container.continuous_miner": "連続採掘機", + "container.ice_maker": "製氷機", + "container.melter": "溶解炉", + + "desc.emeraldcraft.carpentry_table": "木材に関連するブロックをクラフトよりも少量かつ正確な量で作成できるブロックである", + "desc.emeraldcraft.glass_kiln": "通常のかまどの2倍の早さでガラスやテラコッタを焼成できる", + "desc.emeraldcraft.mineral_table": "ブレイズパウダーを消費し、一般的なブロックから鉱物の塊を精錬するブロックである", + "desc.emeraldcraft.crystalball_table": "経験値を欲しいですか?", + "desc.emeraldcraft.squeezer": "ハニカムブロックをハチミツとハニカムに変えるブロックである", + "desc.emeraldcraft.continuous_miner": "溶けたエメラルドを消費し、レッドストーンパルスを受け取ると鉱物を産出する機械である", + "desc.emeraldcraft.ice_maker": "水を消費し、液体を固める機械である", + "desc.emeraldcraft.melter": "精鉱と鉱物のブロックを溶かすかまどである", + + "biome.emeraldcraft.dead_crimson_ocean": "枯れた真紅の海洋", + "biome.emeraldcraft.dead_warped_ocean": "枯れた歪んだ海洋", + "biome.emeraldcraft.deep_dead_crimson_ocean": "枯れた真紅の深海", + "biome.emeraldcraft.deep_dead_warped_ocean": "枯れた歪んだ深海", + "biome.emeraldcraft.xanadu": "桃源郷", + "biome.emeraldcraft.ginkgo_forest": "銀杏の森", + "biome.emeraldcraft.karst_hills": "カルスト丘陵", + "biome.emeraldcraft.petunia_plains": "ペチュニア平原", + "biome.emeraldcraft.golden_beach": "金色の海岸", + "biome.emeraldcraft.palm_beach": "ヤシの海岸", + "biome.emeraldcraft.azure_desert": "リウリの砂漠", + "biome.emeraldcraft.jadeite_desert": "ヒスイの砂漠", + "biome.emeraldcraft.volcanic_caves": "火山洞窟", + "biome.emeraldcraft.quartz_desert": "石英の砂漠", + "biome.emeraldcraft.emery_desert": "エメリーの砂漠", + "biome.emeraldcraft.purpuraceus_swamp": "紫斑の沼地", + + "gui.recipebook.toggleRecipes.kilnable": "窯で焼く可能なアイテムを表示中", + + "gui.emeraldcraft.glass_kiln.experience": "%s EXP", + "gui.emeraldcraft.glass_kiln.time.seconds": "%s s", + "gui.emeraldcraft.melter.time.seconds": "%s s", + "gui.emeraldcraft.ice_maker.time.seconds": "%s 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": "全ての種類のエメラルドの防具を手に入れる", + "advancements.emeraldcraft.cure_phantom.title": "ファントムドクター", + "advancements.emeraldcraft.cure_phantom.description": "ファントムを発光させる、金の桃の実で治療する", + "advancements.emeraldcraft.cure_zombified_piglin.title": "ゾンビピグリンドクター", + "advancements.emeraldcraft.cure_zombified_piglin.description": "ゾンビピグリンを飢えさせる、金のニンジンで治療する", + "advancements.emeraldcraft.friend_from_the_nether.title": "ネザーからのフレンド", + "advancements.emeraldcraft.friend_from_the_nether.description": "ピグリンガールを見つける", + "advancements.emeraldcraft.surely_see_each_other_again.title": "また、会いましょう", + "advancements.emeraldcraft.surely_see_each_other_again.description": "ピグリンガールの願いを叶える", + "advancements.emeraldcraft.a_horrible_entrenchment.title": "凄まじい塹壕", + "advancements.emeraldcraft.a_horrible_entrenchment.description": "塹壕を見つける。レイスに気をつけなさい!", + "advancements.emeraldcraft.noisy_guy.title": "うるさいやつ", + "advancements.emeraldcraft.noisy_guy.description": "連続採掘機を手に入れる", + "advancements.emeraldcraft.hotter_topic.title": "もっとホットなトピック", + "advancements.emeraldcraft.hotter_topic.description": "溶解炉を手に入れる", + "advancements.emeraldcraft.more_effective_craft.title": "もっと効果的な工芸", + "advancements.emeraldcraft.more_effective_craft.description": "鉱の原石から精鉱を作る", + "advancements.emeraldcraft.ice_cream_please.title": "アイスクリームください", + "advancements.emeraldcraft.ice_cream_please.description": "製氷機を手に入れる", + + "filled_map.shelter": "救助探検家の地図", + "filled_map.entrenchment": "地心探検家の地図", + + "fluids.save.bucket": "%s %s入られる", + "fluids.name.water": "水", + "fluids.name.lava": "溶岩", + "fluids.name.melted_emerald": "溶けたエメラルド", + "fluids.name.melted_iron": "溶けた鉄", + "fluids.name.melted_gold": "溶けた金", + "fluids.name.melted_copper": "溶けた銅", + "fluids.name.melted_zinc": "溶けた亜鉛", + "fluids.name.melted_aluminum": "溶けたアルミニウム", + "fluids.name.melted_lead": "溶けた鉛", + "fluids.name.melted_silver": "溶けた銀", + "fluids.name.melted_nickel": "溶けたニッケル", + "fluids.name.melted_uranium": "溶けたウラン", + + "jei.emeraldcraft.villager_trade": "村人と取引する" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/lang/ru_ru.json b/src/main/resources/assets/emeraldcraft/lang/ru_ru.json new file mode 100644 index 00000000..689cd944 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/lang/ru_ru.json @@ -0,0 +1,514 @@ +{ + "language": "Русский язык", + "emeraldcraft.thanks.for.the.contributor": "grustno_kataem", + "language.code": "ru_ru", + "language.region": "Rus", + "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.vitrified_sand": "Витрифицированный песок", + "block.emeraldcraft.dark_sand": "Темный песок", + "block.emeraldcraft.azure_sand": "Лазурный песок", + "block.emeraldcraft.quartz_sand": "Кварцевый песок", + "block.emeraldcraft.jadeite_sand": "Жадеитовый песок", + "block.emeraldcraft.emery_sand": "Наждачный песок", + "block.emeraldcraft.dark_sandstone": "Темный песчаник", + "block.emeraldcraft.azure_sandstone": "Лазурный песчаник", + "block.emeraldcraft.quartz_sandstone": "Кварцевый песчаник", + "block.emeraldcraft.jadeite_sandstone": "Жадеитовый песчаник", + "block.emeraldcraft.emery_sandstone": "Наждачный песчаник", + "block.emeraldcraft.smooth_dark_sandstone": "Гладкий темный песчаник", + "block.emeraldcraft.smooth_azure_sandstone": "Гладкий лазурный песчаник", + "block.emeraldcraft.smooth_quartz_sandstone": "Гладкий кварцевый песчаник", + "block.emeraldcraft.smooth_jadeite_sandstone": "Гладкий жадеитовый песчаник", + "block.emeraldcraft.smooth_emery_sandstone": "Гладкий наждачный песчаник", + "block.emeraldcraft.cut_dark_sandstone": "Вырезать темный песчаник", + "block.emeraldcraft.cut_azure_sandstone": "Разрезать лазурный песчаник", + "block.emeraldcraft.cut_quartz_sandstone": "Разрезать кварцевый песчаник", + "block.emeraldcraft.cut_jadeite_sandstone": "Разрезать жадеитовый песчаник", + "block.emeraldcraft.cut_emery_sandstone": "Вырезать наждачный песчаник", + "block.emeraldcraft.dark_sandstone_slab": "Плита из темного песчаника", + "block.emeraldcraft.azure_sandstone_slab": "Плита из лазурного песчаника", + "block.emeraldcraft.quartz_sandstone_slab": "Плита из кварцевого песчаника", + "block.emeraldcraft.jadeite_sandstone_slab": "Плита из жадеитового песчаника", + "block.emeraldcraft.emery_sandstone_slab": "Плита из наждачного песчаника", + "block.emeraldcraft.smooth_dark_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_dark_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.dark_sandstone_stairs": "Ступеньки из темного песчаника", + "block.emeraldcraft.azure_sandstone_stairs": "Ступеньки из лазурного песчаника", + "block.emeraldcraft.quartz_sandstone_stairs": "Ступени из кварцевого песчаника", + "block.emeraldcraft.jadeite_sandstone_stairs": "Ступени из жадеитового песчаника", + "block.emeraldcraft.emery_sandstone_stairs": "Ступеньки из наждачного песчаника", + "block.emeraldcraft.smooth_dark_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.dark_sandstone_wall": "Стена из темного песчаника", + "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.purple_nether_brick_slab": "Фиолетовая кирпичная плита Пустоты", + "block.emeraldcraft.purple_nether_brick_stairs": "Ступеньки из фиолетового кирпича Пустоты", + "block.emeraldcraft.purple_nether_brick_wall": "Фиолетовая кирпичная стена Пустоты", + "block.emeraldcraft.purple_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": "Искривленный булыжник", + "block.emeraldcraft.cyan_petunia": "Голубая петуния", + "block.emeraldcraft.magenta_petunia": "Пурпурная петуния", + "block.emeraldcraft.higan_bana": "Хиган Бана", + "block.emeraldcraft.potted_cyan_petunia": "Голубая петуния в горшке", + "block.emeraldcraft.potted_magenta_petunia": "Пурпурная петуния в горшке", + "block.emeraldcraft.potted_higan_bana": "Хиган Бана в горшке", + "block.emeraldcraft.ginkgo_sapling": "Саженец гинкго", + "block.emeraldcraft.potted_ginkgo_sapling": "Саженец гинкго в горшке", + "block.emeraldcraft.ginkgo_log": "Журнал гинкго", + "block.emeraldcraft.stripped_ginkgo_log": "Раздетый бревно гинкго", + "block.emeraldcraft.ginkgo_wood": "Дерево гинкго", + "block.emeraldcraft.stripped_ginkgo_wood": "Очищенная древесина гинкго", + "block.emeraldcraft.ginkgo_leaves": "Листья гинкго", + "block.emeraldcraft.ginkgo_planks": "Доски гинкго", + "block.emeraldcraft.ginkgo_stairs": "Ступеньки гинкго", + "block.emeraldcraft.ginkgo_slab": "Плита гинкго", + "block.emeraldcraft.ginkgo_fence": "Забор из гинкго", + "block.emeraldcraft.ginkgo_fence_gate": "Ворота забора гинкго", + "block.emeraldcraft.ginkgo_door": "Дверь Гинкго", + "block.emeraldcraft.ginkgo_trapdoor": "Люк из гинкго", + "block.emeraldcraft.ginkgo_pressure_plate": "Нажимная пластина гинкго", + "block.emeraldcraft.ginkgo_button": "Кнопка гинкго", + "block.emeraldcraft.ginkgo_sign": "Знак гинкго", + "block.emeraldcraft.ginkgo_wall_sign": "Настенный знак гинкго", + "block.emeraldcraft.palm_sapling": "Саженец пальмы", + "block.emeraldcraft.potted_palm_sapling": "Саженец пальмы в горшке", + "block.emeraldcraft.palm_log": "Ладонь", + "block.emeraldcraft.stripped_palm_log": "Раздетое бревно ладони", + "block.emeraldcraft.palm_wood": "Пальмовое дерево", + "block.emeraldcraft.stripped_palm_wood": "Очищенная пальмовая древесина", + "block.emeraldcraft.palm_leaves": "Пальмовые листья", + "block.emeraldcraft.palm_planks": "Пальмовые доски", + "block.emeraldcraft.palm_stairs": "Пальмовая лестница", + "block.emeraldcraft.palm_slab": "Пальмовая плита", + "block.emeraldcraft.palm_fence": "Пальмовый забор", + "block.emeraldcraft.palm_fence_gate": "Ворота пальмового забора", + "block.emeraldcraft.palm_door": "Пальмовая дверь", + "block.emeraldcraft.palm_trapdoor": "Палмовый люк", + "block.emeraldcraft.palm_pressure_plate": "Нажимная пластина для ладони", + "block.emeraldcraft.palm_button": "Пальмовая кнопка", + "block.emeraldcraft.palm_sign": "Знак ладони", + "block.emeraldcraft.palm_wall_sign": "Знак пальмовой стены", + "block.emeraldcraft.peach_sapling": "Саженец персика", + "block.emeraldcraft.potted_peach_sapling": "Саженец персика в горшке", + "block.emeraldcraft.peach_log": "Персиковое бревно", + "block.emeraldcraft.stripped_peach_log": "Раздетое бревно персика", + "block.emeraldcraft.peach_wood": "Персиковое дерево", + "block.emeraldcraft.stripped_peach_wood": "Очищенное персиковое дерево", + "block.emeraldcraft.peach_leaves": "Листья персика", + "block.emeraldcraft.peach_planks": "Персиковые доски", + "block.emeraldcraft.peach_stairs": "Персиковая лестница", + "block.emeraldcraft.peach_slab": "Персиковая плита", + "block.emeraldcraft.peach_fence": "Персиковый забор", + "block.emeraldcraft.peach_fence_gate": "Ворота персикового забора", + "block.emeraldcraft.peach_door": "Персиковая дверь", + "block.emeraldcraft.peach_trapdoor": "Персиковый люк", + "block.emeraldcraft.peach_pressure_plate": "Персиковая нажимная пластина", + "block.emeraldcraft.peach_button": "Персиковая кнопка", + "block.emeraldcraft.peach_sign": "Знак персика", + "block.emeraldcraft.peach_wall_sign": "Персиковый настенный знак", + "block.emeraldcraft.purpuraceus_roots": "Корни пурпурного", + "block.emeraldcraft.purpuraceus_fungus": "Пурпурный грибок", + "block.emeraldcraft.purpuraceus_nylium": "Пурпурацеус Нилиум", + "block.emeraldcraft.potted_purpuraceus_roots": "Корни пурпурного в горшке", + "block.emeraldcraft.potted_purpuraceus_fungus": "Пурпурный гриб в горшке", + "block.emeraldcraft.purpuraceus_stem": "Ствол пурпурного", + "block.emeraldcraft.stripped_purpuraceus_stem": "Раздетый стебель пурпурного", + "block.emeraldcraft.purpuraceus_hyphae": "Гифы Purpuraceus", + "block.emeraldcraft.stripped_purpuraceus_hyphae": "Раздетые гифы Purpuraceus", + "block.emeraldcraft.purpuraceus_wart_block": "Блок пурпурных бородавок", + "block.emeraldcraft.purpuraceus_planks": "Доски пурпурного цвета", + "block.emeraldcraft.purpuraceus_stairs": "Лестница Пурпурацеус", + "block.emeraldcraft.purpuraceus_slab": "Плита пурпурного цвета", + "block.emeraldcraft.purpuraceus_fence": "Забор Пурпурацеус", + "block.emeraldcraft.purpuraceus_fence_gate": "Ворота забора Пурпурацеус", + "block.emeraldcraft.purpuraceus_door": "Дверь Пурпурацеуса", + "block.emeraldcraft.purpuraceus_trapdoor": "Люк Purpuraceus", + "block.emeraldcraft.purpuraceus_pressure_plate": "Нажимная пластина Purpuraceus", + "block.emeraldcraft.purpuraceus_button": "Пурпурная кнопка", + "block.emeraldcraft.purpuraceus_sign": "Знак Пурпурацеуса", + "block.emeraldcraft.purpuraceus_wall_sign": "Настенный знак Пурпурацеус", + + "block.emeraldcraft.zinc_slab": "Цинковая плита", + "block.emeraldcraft.zinc_stairs": "Цинковые лестницы", + "block.emeraldcraft.zinc_wall": "Цинковая стена", + "block.emeraldcraft.aluminum_stairs": "Алюминиевые лестницы", + "block.emeraldcraft.aluminum_wall": "Алюминиевая стена", + "block.emeraldcraft.lead_stairs": "Свинцовая лестница", + "block.emeraldcraft.lead_wall": "Свинцовая стена", + "block.emeraldcraft.silver_stairs": "Серебряная лестница", + "block.emeraldcraft.silver_wall": "Серебряная стена", + "block.emeraldcraft.nickel_stairs": "Никелевая лестница", + "block.emeraldcraft.nickel_wall": "Никелевая стена", + "block.emeraldcraft.uranium_stairs": "Урановая лестница", + "block.emeraldcraft.uranium_wall": "Урановая стена", + "block.emeraldcraft.constantan_stairs": "Константанская лестница", + "block.emeraldcraft.constantan_wall": "Стена Константана", + "block.emeraldcraft.electrum_stairs": "Ступеньки из Электрума", + "block.emeraldcraft.electrum_wall": "Электрумовая стена", + "block.emeraldcraft.steel_stairs": "Стальная лестница", + "block.emeraldcraft.steel_wall": "Стальная стена", + + "block.minecraft.banner.emeraldcraft.bee.black": "Черная пчела", + "block.minecraft.banner.emeraldcraft.bee.blue": "Синяя пчела", + "block.minecraft.banner.emeraldcraft.bee.brown": "Коричневая пчела", + "block.minecraft.banner.emeraldcraft.bee.cyan": "Голубая пчела", + "block.minecraft.banner.emeraldcraft.bee.gray": "Серая пчела", + "block.minecraft.banner.emeraldcraft.bee.green": "Зеленая пчела", + "block.minecraft.banner.emeraldcraft.bee.lightBlue": "Голубая пчела", + "block.minecraft.banner.emeraldcraft.bee.lime": "Лаймовая пчела", + "block.minecraft.banner.emeraldcraft.bee.magenta": "Пурпурная пчела", + "block.minecraft.banner.emeraldcraft.bee.orange": "Оранжевая пчела", + "block.minecraft.banner.emeraldcraft.bee.pink": "Розовая пчела", + "block.minecraft.banner.emeraldcraft.bee.purple": "Фиолетовая пчела", + "block.minecraft.banner.emeraldcraft.bee.red": "Красная пчела", + "block.minecraft.banner.emeraldcraft.bee.silver": "Светло-серая пчела", + "block.minecraft.banner.emeraldcraft.bee.white": "Белая пчела", + "block.minecraft.banner.emeraldcraft.bee.yellow": "Желтая пчела", + "block.minecraft.banner.emeraldcraft.snow.black": "Черный снег", + "block.minecraft.banner.emeraldcraft.snow.blue": "Синий снег", + "block.minecraft.banner.emeraldcraft.snow.brown": "Коричневый снег", + "block.minecraft.banner.emeraldcraft.snow.cyan": "Голубой снег", + "block.minecraft.banner.emeraldcraft.snow.gray": "Серый снег", + "block.minecraft.banner.emeraldcraft.snow.green": "Зеленый снег", + "block.minecraft.banner.emeraldcraft.snow.lightBlue": "Голубой снег", + "block.minecraft.banner.emeraldcraft.snow.lime": "Лаймовый снег", + "block.minecraft.banner.emeraldcraft.snow.magenta": "Пурпурный снег", + "block.minecraft.banner.emeraldcraft.snow.orange": "Оранжевый снег", + "block.minecraft.banner.emeraldcraft.snow.pink": "Розовый снег", + "block.minecraft.banner.emeraldcraft.snow.purple": "Фиолетовый снег", + "block.minecraft.banner.emeraldcraft.snow.red": "Красный снег", + "block.minecraft.banner.emeraldcraft.snow.silver": "Светло-серый снег", + "block.minecraft.banner.emeraldcraft.snow.white": "Белый снег", + "block.minecraft.banner.emeraldcraft.snow.yellow": "Желтый снег", + "block.minecraft.banner.emeraldcraft.bottle.black": "Черная бутылка", + "block.minecraft.banner.emeraldcraft.bottle.blue": "Синяя бутылка", + "block.minecraft.banner.emeraldcraft.bottle.brown": "Коричневая бутылка", + "block.minecraft.banner.emeraldcraft.bottle.cyan": "Голубая бутылка", + "block.minecraft.banner.emeraldcraft.bottle.gray": "Серая бутылка", + "block.minecraft.banner.emeraldcraft.bottle.green": "Зеленая бутылка", + "block.minecraft.banner.emeraldcraft.bottle.lightBlue": "Голубая бутылка", + "block.minecraft.banner.emeraldcraft.bottle.lime": "Бутылка извести", + "block.minecraft.banner.emeraldcraft.bottle.magenta": "Пурпурная бутылка", + "block.minecraft.banner.emeraldcraft.bottle.orange": "Оранжевая бутылка", + "block.minecraft.banner.emeraldcraft.bottle.pink": "Розовая бутылка", + "block.minecraft.banner.emeraldcraft.bottle.purple": "Фиолетовая бутылка", + "block.minecraft.banner.emeraldcraft.bottle.red": "Красная бутылка", + "block.minecraft.banner.emeraldcraft.bottle.silver": "Светло-серая бутылка", + "block.minecraft.banner.emeraldcraft.bottle.white": "Белая бутылка", + "block.minecraft.banner.emeraldcraft.bottle.yellow": "Желтая бутылка", + "block.minecraft.banner.emeraldcraft.potion.black": "Черное зелье", + "block.minecraft.banner.emeraldcraft.potion.blue": "Синее зелье", + "block.minecraft.banner.emeraldcraft.potion.brown": "Коричневое зелье", + "block.minecraft.banner.emeraldcraft.potion.cyan": "Голубое зелье", + "block.minecraft.banner.emeraldcraft.potion.gray": "Серое зелье", + "block.minecraft.banner.emeraldcraft.potion.green": "Зеленое зелье", + "block.minecraft.banner.emeraldcraft.potion.lightBlue": "Голубое зелье", + "block.minecraft.banner.emeraldcraft.potion.lime": "Лаймовое зелье", + "block.minecraft.banner.emeraldcraft.potion.magenta": "Пурпурное зелье", + "block.minecraft.banner.emeraldcraft.potion.orange": "Оранжевое зелье", + "block.minecraft.banner.emeraldcraft.potion.pink": "Розовое зелье", + "block.minecraft.banner.emeraldcraft.potion.purple": "Фиолетовое зелье", + "block.minecraft.banner.emeraldcraft.potion.red": "Красное зелье", + "block.minecraft.banner.emeraldcraft.potion.silver": "Светло-серое зелье", + "block.minecraft.banner.emeraldcraft.potion.white": "Белое зелье", + "block.minecraft.banner.emeraldcraft.potion.yellow": "Желтое зелье", + + "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.bigeye_spawn_egg": "Яйцо спауна большеглазого с фиолетовыми пятнами", + "item.emeraldcraft.herring_spawn_egg": "Яйцо призывания сельди", + "item.emeraldcraft.wraith_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": "Медный концентрат", + "item.emeraldcraft.ginkgo_nut": "Орех гинкго", + "item.emeraldcraft.ginkgo_boat": "Лодка из гинкго", + "item.emeraldcraft.palm_boat": "Пальмовая лодка", + "item.emeraldcraft.peach_boat": "Персиковая лодка", + "item.emeraldcraft.ginkgo_chest_boat": "Лодка-сундук с гинкго", + "item.emeraldcraft.palm_chest_boat": "Лодка из сундуков с пальмами", + "item.emeraldcraft.peach_chest_boat": "Лодка из персикового сундука", + "item.emeraldcraft.peach": "Персик", + "item.emeraldcraft.potion_cookie": "Куки", + "item.emeraldcraft.cooked_tropical_fish": "Приготовленная тропическая рыба", + "item.emeraldcraft.cooked_purpuraceus_fungus": "Приготовленный пурпурный гриб", + "item.emeraldcraft.boiled_egg": "Варёное яйцо", + "item.emeraldcraft.chorus_flower_eggdrop_soup": "Суп из яичных капель из цветов хора", + "item.emeraldcraft.herring": "Сельдь", + "item.emeraldcraft.cooked_herring": "Приготовленная сельдь", + "item.emeraldcraft.purple_spotted_bigeye": "Пурпурный пятнистый большеглазый", + "item.emeraldcraft.cooked_purple_spotted_bigeye": "Приготовленный фиолетово-пятнистый большеглазый", + "item.emeraldcraft.caramelized_potato": "Карофель в карамели", + "item.emeraldcraft.beef_and_potato_stew": "Рагу из говядины и картофеля", + "item.emeraldcraft.sausage": "Колбаса", + "item.emeraldcraft.cooked_sausage": "Приготовленная колбаса", + "item.emeraldcraft.gluten": "Глютен", + "item.emeraldcraft.warden_heart": "Сердце Стража", + "item.emeraldcraft.stir_fried_warden_heart": "Жареное сердце Стража", + "item.emeraldcraft.chili": "Чили", + "item.emeraldcraft.chili_seed": "Семя чили", + "item.emeraldcraft.apple_juice": "Яблочный сок", + "item.emeraldcraft.beetroot_juice": "Свекольный сок", + "item.emeraldcraft.carrot_juice": "Морковный сок", + "item.emeraldcraft.melon_juice": "Дынный сок", + "item.emeraldcraft.peach_juice": "Персиковый сок", + "item.emeraldcraft.pumpkin_juice": "Тыквенный сок", + "item.emeraldcraft.herring_bucket": "Ведро селедки", + "item.emeraldcraft.bigeye_bucket": "Пурпурное пятнистое большеглазое ведро", + + "item.emeraldcraft.melted_zinc_bucket": "Ведро из расплавленного цинка", + "item.emeraldcraft.zinc_concentrate": "Цинковый концентрат", + "item.emeraldcraft.melted_aluminum_bucket": "Ведро из расплавленного алюминия", + "item.emeraldcraft.aluminum_concentrate": "Концентрат алюминия", + "item.emeraldcraft.melted_lead_bucket": "Ведро расплавленного свинца", + "item.emeraldcraft.lead_concentrate": "Концентрат свинца", + "item.emeraldcraft.melted_silver_bucket": "Ведро расплавленного серебра", + "item.emeraldcraft.silver_concentrate": "Серебряный концентрат", + "item.emeraldcraft.melted_nickel_bucket": "Ведро из расплавленного никеля", + "item.emeraldcraft.nickel_concentrate": "Никелевый концентрат", + "item.emeraldcraft.melted_uranium_bucket": "Ведро с расплавленным ураном", + "item.emeraldcraft.uranium_concentrate": "Концентрат урана", + + "item.minecraft.potion.effect.absorption": "Зелье поглощения", + "item.minecraft.splash_potion.effect.absorption": "Зелье поглощения брызг", + "item.minecraft.lingering_potion.effect.absorption": "Зелье затяжного поглощения", + "item.minecraft.potion.effect.blindness": "Зелье слепоты", + "item.minecraft.splash_potion.effect.blindness": "Зелье брызг слепоты", + "item.minecraft.lingering_potion.effect.blindness": "Зелье длительной слепоты", + "item.minecraft.potion.effect.hunger": "Зелье голода", + "item.minecraft.splash_potion.effect.hunger": "Взрывное зелье голода", + "item.minecraft.lingering_potion.effect.hunger": "Зелье затяжного голода", + "item.minecraft.potion.effect.saturation": "Зелье насыщения", + "item.minecraft.splash_potion.effect.saturation": "Взрывное зелье насыщения", + "item.minecraft.lingering_potion.effect.saturation": "Зелье длительного насыщения", + "item.minecraft.potion.effect.wither": "Зелье увядания", + "item.minecraft.splash_potion.effect.wither": "Всплеск зелья увядания", + "item.minecraft.lingering_potion.effect.wither": "Зелье длительного увядания", + + "entity.emeraldcraft.piglin_cutey": "Милый поросенок", + "entity.emeraldcraft.nether_pigman": "Свиночеловек Пустоты", + "entity.emeraldcraft.nether_lambman": "Ягненок Пустоты", + "entity.emeraldcraft.purple_spotted_bigeye": "Пурпурно-пятнистый большеглазый", + "entity.emeraldcraft.herring": "Сельдь", + "entity.emeraldcraft.wraith": "Призрак", + "entity.emeraldcraft.boat": "Лодка", + "entity.emeraldcraft.chest_boat": "Лодка-сундук", + "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": "Инженер-химик работает", + "subtitles.entity.herring.flop": "Сельдь проваливается", + "subtitles.entity.herring.hurt": "Сельдь болит", + "subtitles.entity.herring.death": "Сельдь умирает", + "subtitles.entity.purple_spotted_bigeye.flop": "Фиолетовый пятнистый большеглазый провал", + "subtitles.entity.purple_spotted_bigeye.hurt": "Пурпурный пятнистый большеглазый больно", + "subtitles.entity.purple_spotted_bigeye.death": "Пурпурный пятнистый большеглазый умирает", + "subtitles.entity.wraith.ambient": "Призрак стонет", + "subtitles.entity.wraith.hurt": "Призрак болит", + "subtitles.entity.wraith.death": "Призрак умирает", + + "subtitles.block.flower.drop_leaves": "Хиган Бана сбрасывает листья", + + "container.carpentry": "Столярный стол", + "container.glass_kiln": "Печь для обжига стекла", + "container.mineral_table": "Таблица минералов", + "container.continuous_miner": "Непрерывный майнер", + "container.ice_maker": "Льдогенератор", + "container.melter": "Плавитель", + + "desc.emeraldcraft.carpentry_table": "Создавайте блоки и предметы, связанные с деревом, в меньших и более точных количествах, и даже более эффективно, чем создание по определенным рецептам", + "desc.emeraldcraft.glass_kiln": "Приготовление изделий из стекла и терракоты занимает вдвое меньше времени, чем в стандартной печи", + "desc.emeraldcraft.mineral_table": "Выплавить самородки минералов из обычных блоков, что стоит огненный порошок", + "desc.emeraldcraft.crystalball_table": "Нужен опыт?", + "desc.emeraldcraft.squeezer": "Получить мед из сотовых блоков", + "desc.emeraldcraft.continuous_miner": "Автоматический майнер, который стоит расплавленного изумруда и должен быть активирован сигналом красного камня", + "desc.emeraldcraft.ice_maker": "Затвердеть жидкость, которая стоит воды", + "desc.emeraldcraft.melter": "Расплавить твердое вещество, которое требует топлива", + + "biome.emeraldcraft.dead_crimson_ocean": "Мертвый багровый океан", + "biome.emeraldcraft.dead_warped_ocean": "Мертвый искривленный океан", + "biome.emeraldcraft.deep_dead_crimson_ocean": "Глубокий мертвый багровый океан", + "biome.emeraldcraft.deep_dead_warped_ocean": "Глубокий мертвый искривленный океан", + "biome.emeraldcraft.xanadu": "Занаду", + "biome.emeraldcraft.ginkgo_forest": "Лес гинкго", + "biome.emeraldcraft.karst_hills": "Карстовые холмы", + "biome.emeraldcraft.petunia_plains": "Равнины петунии", + "biome.emeraldcraft.golden_beach": "Золотой пляж", + "biome.emeraldcraft.palm_beach": "Палм-Бич", + "biome.emeraldcraft.azure_desert": "Лазурная пустыня", + "biome.emeraldcraft.jadeite_desert": "Жадеитовая пустыня", + "biome.emeraldcraft.volcanic_caves": "Вулканические пещеры", + "biome.emeraldcraft.quartz_desert": "Кварцевая пустыня", + "biome.emeraldcraft.emery_desert": "Эмери-пустыня", + "biome.emeraldcraft.purpuraceus_swamp": "Болото Пурпурацеус", + + "gui.recipebook.toggleRecipes.kilnable": "Отображается Kilnable", + + "gui.emeraldcraft.glass_kiln.experience": "%s опыта", + "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": "И последнее, что мне нужно", + "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": "Получите все изумрудные доспехи.", + "advancements.emeraldcraft.cure_zombified_piglin.title": "Доктор-зомби-свинья", + "advancements.emeraldcraft.cure_zombified_piglin.description": "Вылечить зомбированного поросенка с помощью зелья голода и золотой моркови.", + "advancements.emeraldcraft.friend_from_the_nether.title": "Друг из Пустоты", + "advancements.emeraldcraft.friend_from_the_nether.description": "Найди милого поросенка.", + "advancements.emeraldcraft.surely_see_each_other_again.title": "Конечно, мы снова увидимся", + "advancements.emeraldcraft.surely_see_each_other_again.description": "Помогите милой поросенку осуществить ее желание.", + "advancements.emeraldcraft.a_horrible_entrenchment.title": "Ужасное окоп", + "advancements.emeraldcraft.a_horrible_entrenchment.description": "Найдите окоп. Остерегайтесь призраков!", + "advancements.emeraldcraft.noisy_guy.title": "Шумный парень", + "advancements.emeraldcraft.noisy_guy.description": "Получите непрерывный майнер.", + "advancements.emeraldcraft.hotter_topic.title": "Горячая тема", + "advancements.emeraldcraft.hotter_topic.description": "Получить плавильню.", + "advancements.emeraldcraft.more_effective_craft.title": "Более эффективное ремесло", + "advancements.emeraldcraft.more_effective_craft.description": "Создайте концентрат из сырой руды.", + "advancements.emeraldcraft.ice_cream_please.title": "Мороженое, пожалуйста", + "advancements.emeraldcraft.ice_cream_please.description": "Получите льдогенератор.", + + "fluids.save.bucket": "Может заполнить %s %s", + "fluids.name.water": "Вода", + "fluids.name.lava": "Лава", + "fluids.name.melted_emerald": "Расплавленный изумруд", + "fluids.name.melted_iron": "Расплавленное железо", + "fluids.name.melted_gold": "Расплавленное золото", + "fluids.name.melted_copper": "Расплавленная медь", + "fluids.name.melted_zinc": "Расплавленный цинк", + "fluids.name.melted_aluminum": "Расплавленный алюминий", + "fluids.name.melted_lead": "Расплавленный свинец", + "fluids.name.melted_silver": "Расплавленное серебро", + "fluids.name.melted_nickel": "Расплавленный никель", + "fluids.name.melted_uranium": "Расплавленный уран" +} \ 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..a0897e67 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/lang/zh_cn.json @@ -0,0 +1,538 @@ +{ + "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.vitrified_sand": "玻璃化的沙子", + "block.emeraldcraft.dark_sand": "黑金沙", + "block.emeraldcraft.azure_sand": "琉璃沙", + "block.emeraldcraft.quartz_sand": "石英沙", + "block.emeraldcraft.jadeite_sand": "翡翠沙", + "block.emeraldcraft.emery_sand": "金刚沙", + "block.emeraldcraft.dark_sandstone": "黑金砂岩", + "block.emeraldcraft.azure_sandstone": "琉璃砂岩", + "block.emeraldcraft.quartz_sandstone": "石英砂岩", + "block.emeraldcraft.jadeite_sandstone": "翡翠砂岩", + "block.emeraldcraft.emery_sandstone": "金刚砂岩", + "block.emeraldcraft.smooth_dark_sandstone": "平滑黑金砂岩", + "block.emeraldcraft.smooth_azure_sandstone": "平滑琉璃砂岩", + "block.emeraldcraft.smooth_quartz_sandstone": "平滑石英砂岩", + "block.emeraldcraft.smooth_jadeite_sandstone": "平滑翡翠砂岩", + "block.emeraldcraft.smooth_emery_sandstone": "平滑金刚砂岩", + "block.emeraldcraft.cut_dark_sandstone": "切制黑金砂岩", + "block.emeraldcraft.cut_azure_sandstone": "切制琉璃砂岩", + "block.emeraldcraft.cut_quartz_sandstone": "切制石英砂岩", + "block.emeraldcraft.cut_jadeite_sandstone": "切制翡翠砂岩", + "block.emeraldcraft.cut_emery_sandstone": "切制金刚砂岩", + "block.emeraldcraft.dark_sandstone_slab": "黑金砂岩台阶", + "block.emeraldcraft.azure_sandstone_slab": "琉璃砂岩台阶", + "block.emeraldcraft.quartz_sandstone_slab": "石英砂岩台阶", + "block.emeraldcraft.jadeite_sandstone_slab": "翡翠砂岩台阶", + "block.emeraldcraft.emery_sandstone_slab": "金刚砂岩台阶", + "block.emeraldcraft.smooth_dark_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_dark_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.dark_sandstone_stairs": "黑金砂岩楼梯", + "block.emeraldcraft.azure_sandstone_stairs": "琉璃砂岩楼梯", + "block.emeraldcraft.quartz_sandstone_stairs": "石英砂岩楼梯", + "block.emeraldcraft.jadeite_sandstone_stairs": "翡翠砂岩楼梯", + "block.emeraldcraft.emery_sandstone_stairs": "金刚砂岩楼梯", + "block.emeraldcraft.smooth_dark_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.dark_sandstone_wall": "黑金砂岩墙", + "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.purple_nether_brick_slab": "紫色地狱砖台阶", + "block.emeraldcraft.purple_nether_brick_stairs": "紫色地狱砖楼梯", + "block.emeraldcraft.purple_nether_brick_wall": "紫色地狱砖墙", + "block.emeraldcraft.purple_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": "诡异圆石", + "block.emeraldcraft.cyan_petunia": "青色牵牛花", + "block.emeraldcraft.magenta_petunia": "洋红色牵牛花", + "block.emeraldcraft.higan_bana": "彼岸花", + "block.emeraldcraft.potted_cyan_petunia": "青色牵牛花盆栽", + "block.emeraldcraft.potted_magenta_petunia": "洋红色牵牛花盆栽", + "block.emeraldcraft.potted_higan_bana": "彼岸花盆栽", + "block.emeraldcraft.ginkgo_sapling": "银杏树苗", + "block.emeraldcraft.potted_ginkgo_sapling": "银杏树苗盆栽", + "block.emeraldcraft.ginkgo_log": "银杏原木", + "block.emeraldcraft.stripped_ginkgo_log": "去皮银杏原木", + "block.emeraldcraft.ginkgo_wood": "银杏木", + "block.emeraldcraft.stripped_ginkgo_wood": "去皮银杏木", + "block.emeraldcraft.ginkgo_leaves": "银杏树叶", + "block.emeraldcraft.ginkgo_planks": "银杏木板", + "block.emeraldcraft.ginkgo_stairs": "银杏木楼梯", + "block.emeraldcraft.ginkgo_slab": "银杏木台阶", + "block.emeraldcraft.ginkgo_fence": "银杏木栅栏", + "block.emeraldcraft.ginkgo_fence_gate": "银杏木栅栏门", + "block.emeraldcraft.ginkgo_door": "银杏木门", + "block.emeraldcraft.ginkgo_trapdoor": "银杏木活板门", + "block.emeraldcraft.ginkgo_pressure_plate": "银杏木质压力板", + "block.emeraldcraft.ginkgo_button": "银杏木按钮", + "block.emeraldcraft.ginkgo_sign": "银杏木告示牌", + "block.emeraldcraft.ginkgo_wall_sign": "墙上的银杏木告示牌", + "block.emeraldcraft.palm_sapling": "棕榈树苗", + "block.emeraldcraft.potted_palm_sapling": "棕榈树苗盆栽", + "block.emeraldcraft.palm_log": "棕榈原木", + "block.emeraldcraft.stripped_palm_log": "去皮棕榈原木", + "block.emeraldcraft.palm_wood": "棕榈木", + "block.emeraldcraft.stripped_palm_wood": "去皮棕榈木", + "block.emeraldcraft.palm_leaves": "棕榈树叶", + "block.emeraldcraft.palm_planks": "棕榈木板", + "block.emeraldcraft.palm_stairs": "棕榈木楼梯", + "block.emeraldcraft.palm_slab": "棕榈木台阶", + "block.emeraldcraft.palm_fence": "棕榈木栅栏", + "block.emeraldcraft.palm_fence_gate": "棕榈木栅栏门", + "block.emeraldcraft.palm_door": "棕榈木门", + "block.emeraldcraft.palm_trapdoor": "棕榈木活板门", + "block.emeraldcraft.palm_pressure_plate": "棕榈木质压力板", + "block.emeraldcraft.palm_button": "棕榈木按钮", + "block.emeraldcraft.palm_sign": "棕榈木告示牌", + "block.emeraldcraft.palm_wall_sign": "墙上的棕榈木告示牌", + "block.emeraldcraft.peach_sapling": "桃树苗", + "block.emeraldcraft.potted_peach_sapling": "桃树苗盆栽", + "block.emeraldcraft.peach_log": "桃木原木", + "block.emeraldcraft.stripped_peach_log": "去皮桃木原木", + "block.emeraldcraft.peach_wood": "桃木", + "block.emeraldcraft.stripped_peach_wood": "去皮桃木", + "block.emeraldcraft.peach_leaves": "桃树叶", + "block.emeraldcraft.peach_planks": "桃木板", + "block.emeraldcraft.peach_stairs": "桃木楼梯", + "block.emeraldcraft.peach_slab": "桃木台阶", + "block.emeraldcraft.peach_fence": "桃木栅栏", + "block.emeraldcraft.peach_fence_gate": "桃木栅栏门", + "block.emeraldcraft.peach_door": "桃木门", + "block.emeraldcraft.peach_trapdoor": "桃木活板门", + "block.emeraldcraft.peach_pressure_plate": "桃木质压力板", + "block.emeraldcraft.peach_button": "桃木按钮", + "block.emeraldcraft.peach_sign": "桃木告示牌", + "block.emeraldcraft.peach_wall_sign": "墙上的桃木告示牌", + "block.emeraldcraft.purpuraceus_roots": "紫陀螺菌索", + "block.emeraldcraft.purpuraceus_fungus": "紫陀螺菌", + "block.emeraldcraft.purpuraceus_nylium": "紫陀螺菌岩", + "block.emeraldcraft.potted_purpuraceus_roots": "紫陀螺菌索盆栽", + "block.emeraldcraft.potted_purpuraceus_fungus": "紫陀螺菌盆栽", + "block.emeraldcraft.purpuraceus_stem": "紫陀螺菌柄", + "block.emeraldcraft.stripped_purpuraceus_stem": "去皮紫陀螺菌柄", + "block.emeraldcraft.purpuraceus_hyphae": "紫陀螺菌核", + "block.emeraldcraft.stripped_purpuraceus_hyphae": "去皮紫陀螺菌核", + "block.emeraldcraft.purpuraceus_wart_block": "紫陀螺疣块", + "block.emeraldcraft.purpuraceus_planks": "紫陀螺木板", + "block.emeraldcraft.purpuraceus_stairs": "紫陀螺楼梯", + "block.emeraldcraft.purpuraceus_slab": "紫陀螺台阶", + "block.emeraldcraft.purpuraceus_fence": "紫陀螺栅栏", + "block.emeraldcraft.purpuraceus_fence_gate": "紫陀螺栅栏门", + "block.emeraldcraft.purpuraceus_door": "紫陀螺门", + "block.emeraldcraft.purpuraceus_trapdoor": "紫陀螺活板门", + "block.emeraldcraft.purpuraceus_pressure_plate": "紫陀螺压力板", + "block.emeraldcraft.purpuraceus_button": "紫陀螺按钮", + "block.emeraldcraft.purpuraceus_sign": "紫陀螺告示牌", + "block.emeraldcraft.purpuraceus_wall_sign": "墙上的紫陀螺告示牌", + + "block.emeraldcraft.zinc_slab": "锌台阶", + "block.emeraldcraft.zinc_stairs": "锌楼梯", + "block.emeraldcraft.zinc_wall": "锌墙", + "block.emeraldcraft.aluminum_stairs": "铝楼梯", + "block.emeraldcraft.aluminum_wall": "铝墙", + "block.emeraldcraft.lead_stairs": "铅楼梯", + "block.emeraldcraft.lead_wall": "铅墙", + "block.emeraldcraft.silver_stairs": "银楼梯", + "block.emeraldcraft.silver_wall": "银墙", + "block.emeraldcraft.nickel_stairs": "镍楼梯", + "block.emeraldcraft.nickel_wall": "镍墙", + "block.emeraldcraft.uranium_stairs": "铀楼梯", + "block.emeraldcraft.uranium_wall": "铀墙", + "block.emeraldcraft.constantan_stairs": "康铜楼梯", + "block.emeraldcraft.constantan_wall": "康铜墙", + "block.emeraldcraft.electrum_stairs": "琥珀金楼梯", + "block.emeraldcraft.electrum_wall": "琥珀金墙", + "block.emeraldcraft.steel_stairs": "钢楼梯", + "block.emeraldcraft.steel_wall": "钢墙", + + "block.minecraft.banner.emeraldcraft.bee.black": "黑色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.blue": "蓝色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.brown": "棕色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.cyan": "青色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.gray": "灰色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.green": "绿色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.lightBlue": "浅蓝色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.lime": "黄绿色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.magenta": "品红色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.orange": "橙色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.pink": "粉色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.purple": "紫色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.red": "红色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.silver": "浅灰色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.white": "白色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.yellow": "黄色蜜蜂", + "block.minecraft.banner.emeraldcraft.snow.black": "黑色雪花", + "block.minecraft.banner.emeraldcraft.snow.blue": "蓝色雪花", + "block.minecraft.banner.emeraldcraft.snow.brown": "棕色雪花", + "block.minecraft.banner.emeraldcraft.snow.cyan": "青色雪花", + "block.minecraft.banner.emeraldcraft.snow.gray": "灰色雪花", + "block.minecraft.banner.emeraldcraft.snow.green": "绿色雪花", + "block.minecraft.banner.emeraldcraft.snow.lightBlue": "浅蓝色雪花", + "block.minecraft.banner.emeraldcraft.snow.lime": "黄绿色雪花", + "block.minecraft.banner.emeraldcraft.snow.magenta": "品红色雪花", + "block.minecraft.banner.emeraldcraft.snow.orange": "橙色雪花", + "block.minecraft.banner.emeraldcraft.snow.pink": "粉色雪花", + "block.minecraft.banner.emeraldcraft.snow.purple": "紫色雪花", + "block.minecraft.banner.emeraldcraft.snow.red": "红色雪花", + "block.minecraft.banner.emeraldcraft.snow.silver": "浅灰色雪花", + "block.minecraft.banner.emeraldcraft.snow.white": "白色雪花", + "block.minecraft.banner.emeraldcraft.snow.yellow": "黄色雪花", + "block.minecraft.banner.emeraldcraft.bottle.black": "黑色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.blue": "蓝色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.brown": "棕色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.cyan": "青色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.gray": "灰色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.green": "绿色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.lightBlue": "浅蓝色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.lime": "黄绿色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.magenta": "品红色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.orange": "橙色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.pink": "粉色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.purple": "紫色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.red": "红色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.silver": "浅灰色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.white": "白色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.yellow": "黄色瓶子", + "block.minecraft.banner.emeraldcraft.potion.black": "黑色药水", + "block.minecraft.banner.emeraldcraft.potion.blue": "蓝色药水", + "block.minecraft.banner.emeraldcraft.potion.brown": "棕色药水", + "block.minecraft.banner.emeraldcraft.potion.cyan": "青色药水", + "block.minecraft.banner.emeraldcraft.potion.gray": "灰色药水", + "block.minecraft.banner.emeraldcraft.potion.green": "绿色药水", + "block.minecraft.banner.emeraldcraft.potion.lightBlue": "浅蓝色药水", + "block.minecraft.banner.emeraldcraft.potion.lime": "黄绿色药水", + "block.minecraft.banner.emeraldcraft.potion.magenta": "品红色药水", + "block.minecraft.banner.emeraldcraft.potion.orange": "橙色药水", + "block.minecraft.banner.emeraldcraft.potion.pink": "粉色药水", + "block.minecraft.banner.emeraldcraft.potion.purple": "紫色药水", + "block.minecraft.banner.emeraldcraft.potion.red": "红色药水", + "block.minecraft.banner.emeraldcraft.potion.silver": "浅灰色药水", + "block.minecraft.banner.emeraldcraft.potion.white": "白色药水", + "block.minecraft.banner.emeraldcraft.potion.yellow": "黄色药水", + + "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.bigeye_spawn_egg": "大眼鲷刷怪蛋", + "item.emeraldcraft.herring_spawn_egg": "鲱鱼刷怪蛋", + "item.emeraldcraft.wraith_spawn_egg": "死灵刷怪蛋", + "item.emeraldcraft.manta_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": "铜精矿", + "item.emeraldcraft.ginkgo_nut": "银杏果", + "item.emeraldcraft.ginkgo_boat": "银杏木船", + "item.emeraldcraft.palm_boat": "棕榈木船", + "item.emeraldcraft.peach_boat": "桃木船", + "item.emeraldcraft.ginkgo_chest_boat": "银杏木运输船", + "item.emeraldcraft.palm_chest_boat": "棕榈木运输船", + "item.emeraldcraft.peach_chest_boat": "桃木运输船", + "item.emeraldcraft.peach": "桃子", + "item.emeraldcraft.golden_peach": "金桃子", + "item.emeraldcraft.potion_cookie": "曲奇", + "item.emeraldcraft.cooked_tropical_fish": "熟热带鱼", + "item.emeraldcraft.cooked_purpuraceus_fungus": "熟紫陀螺菌", + "item.emeraldcraft.boiled_egg": "煮鸡蛋", + "item.emeraldcraft.chorus_flower_eggdrop_soup": "紫颂花蛋花汤", + "item.emeraldcraft.herring": "鲱鱼", + "item.emeraldcraft.cooked_herring": "熟鲱鱼", + "item.emeraldcraft.purple_spotted_bigeye": "大眼鲷", + "item.emeraldcraft.cooked_purple_spotted_bigeye": "熟大眼鲷", + "item.emeraldcraft.caramelized_potato": "拔丝土豆", + "item.emeraldcraft.rougamo": "肉夹馍", + "item.emeraldcraft.beef_and_potato_stew": "土豆炖牛腩", + "item.emeraldcraft.braised_chicken": "鸡公煲", + "item.emeraldcraft.sausage": "香肠", + "item.emeraldcraft.cooked_sausage": "熟香肠", + "item.emeraldcraft.gluten": "面筋", + "item.emeraldcraft.warden_heart": "监守者的心脏", + "item.emeraldcraft.stir_fried_warden_heart": "爆炒监守者的心脏", + "item.emeraldcraft.chili": "辣椒", + "item.emeraldcraft.chili_seed": "辣椒种子", + "item.emeraldcraft.apple_juice": "苹果汁", + "item.emeraldcraft.beetroot_juice": "甜菜汁", + "item.emeraldcraft.carrot_juice": "胡萝卜汁", + "item.emeraldcraft.melon_juice": "西瓜汁", + "item.emeraldcraft.peach_juice": "桃汁", + "item.emeraldcraft.pumpkin_juice": "南瓜汁", + "item.emeraldcraft.herring_bucket": "鲱鱼桶", + "item.emeraldcraft.bigeye_bucket": "大眼鲷桶", + + "item.emeraldcraft.melted_zinc_bucket": "熔融锌水桶", + "item.emeraldcraft.zinc_concentrate": "锌精矿", + "item.emeraldcraft.melted_aluminum_bucket": "熔融铝水桶", + "item.emeraldcraft.aluminum_concentrate": "铝精矿", + "item.emeraldcraft.melted_lead_bucket": "熔融铅水桶", + "item.emeraldcraft.lead_concentrate": "铅精矿", + "item.emeraldcraft.melted_silver_bucket": "熔融银水桶", + "item.emeraldcraft.silver_concentrate": "银精矿", + "item.emeraldcraft.melted_nickel_bucket": "熔融镍水桶", + "item.emeraldcraft.nickel_concentrate": "镍精矿", + "item.emeraldcraft.melted_uranium_bucket": "熔融铀水桶", + "item.emeraldcraft.uranium_concentrate": "铀精矿", + + "item.minecraft.potion.effect.absorption": "伤害吸收药水", + "item.minecraft.splash_potion.effect.absorption": "喷溅型伤害吸收药水", + "item.minecraft.lingering_potion.effect.absorption": "滞留型伤害吸收药水", + "item.minecraft.potion.effect.blindness": "失明药水", + "item.minecraft.splash_potion.effect.blindness": "喷溅型失明药水", + "item.minecraft.lingering_potion.effect.blindness": "滞留型失明药水", + "item.minecraft.potion.effect.hunger": "饥饿药水", + "item.minecraft.splash_potion.effect.hunger": "喷溅型饥饿药水", + "item.minecraft.lingering_potion.effect.hunger": "滞留型饥饿药水", + "item.minecraft.potion.effect.saturation": "饱和药水", + "item.minecraft.splash_potion.effect.saturation": "喷溅型饱和药水", + "item.minecraft.lingering_potion.effect.saturation": "滞留型饱和药水", + "item.minecraft.potion.effect.wither": "凋零药水", + "item.minecraft.splash_potion.effect.wither": "喷溅型凋零药水", + "item.minecraft.lingering_potion.effect.wither": "滞留型凋零药水", + "item.minecraft.potion.effect.glowing": "发光药水", + "item.minecraft.splash_potion.effect.glowing": "喷溅型发光药水", + "item.minecraft.lingering_potion.effect.glowing": "滞留型发光药水", + + "item.minecraft.tipped_arrow.effect.absorption": "伤害吸收之箭", + "item.minecraft.tipped_arrow.effect.blindness": "失明之箭", + "item.minecraft.tipped_arrow.effect.hunger": "饥饿之箭", + "item.minecraft.tipped_arrow.effect.saturation": "饱和之箭", + "item.minecraft.tipped_arrow.effect.wither": "凋零之箭", + "item.minecraft.tipped_arrow.effect.glowing": "发光之箭", + + "entity.emeraldcraft.piglin_cutey": "猪灵妹妹", + "entity.emeraldcraft.nether_pigman": "下界猪猪人", + "entity.emeraldcraft.nether_lambman": "下界小羊人", + "entity.emeraldcraft.purple_spotted_bigeye": "大眼鲷", + "entity.emeraldcraft.herring": "鲱鱼", + "entity.emeraldcraft.wraith": "死灵", + "entity.emeraldcraft.manta": "鳐鲲", + "entity.emeraldcraft.boat": "船", + "entity.emeraldcraft.chest_boat": "运输船", + "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": "化学工程师:工作", + "subtitles.entity.herring.flop": "鲱鱼:扑腾", + "subtitles.entity.herring.hurt": "鲱鱼:受伤", + "subtitles.entity.herring.death": "鲱鱼:死亡", + "subtitles.entity.purple_spotted_bigeye.flop": "大眼鲷:扑腾", + "subtitles.entity.purple_spotted_bigeye.hurt": "大眼鲷:受伤", + "subtitles.entity.purple_spotted_bigeye.death": "大眼鲷:死亡", + "subtitles.entity.wraith.ambient": "死灵:呻吟", + "subtitles.entity.wraith.hurt": "死灵:受伤", + "subtitles.entity.wraith.death": "死灵:死亡", + "subtitles.entity.manta.ambient": "鳐鲲:飞翔", + "subtitles.entity.manta.hurt": "鳐鲲:受伤", + "subtitles.entity.manta.death": "鳐鲲:死亡", + + "subtitles.block.flower.drop_leaves": "彼岸花:落叶", + + "container.carpentry": "木工桌", + "container.glass_kiln": "玻璃窑", + "container.mineral_table": "冶矿台", + "container.continuous_miner": "连续采矿机", + "container.ice_maker": "制冰机", + "container.melter": "熔化炉", + + "desc.emeraldcraft.carpentry_table": "更少而精确的数量制作与木材相关的方块和物品,甚至对于某些配方来说比直接合成更省原材料", + "desc.emeraldcraft.glass_kiln": "只消耗普通熔炉一半时间即可烧制玻璃和陶瓦制品", + "desc.emeraldcraft.mineral_table": "消耗烈焰粉,利用常见方块产出矿物颗粒", + "desc.emeraldcraft.crystalball_table": "需要经验吗?", + "desc.emeraldcraft.squeezer": "利用蜜脾块获得蜂蜜", + "desc.emeraldcraft.continuous_miner": "消耗熔融绿宝石,在红石的激活下可以自动挖矿的采矿机器", + "desc.emeraldcraft.ice_maker": "消耗水,将液体凝固", + "desc.emeraldcraft.melter": "消耗燃料将固体融化", + + "biome.emeraldcraft.dead_crimson_ocean": "死寂的绯红海洋", + "biome.emeraldcraft.dead_warped_ocean": "死寂的诡异海洋", + "biome.emeraldcraft.deep_dead_crimson_ocean": "死寂的绯红深海", + "biome.emeraldcraft.deep_dead_warped_ocean": "死寂的诡异深海", + "biome.emeraldcraft.xanadu": "世外桃源", + "biome.emeraldcraft.ginkgo_forest": "银杏森林", + "biome.emeraldcraft.karst_hills": "喀斯特山峦", + "biome.emeraldcraft.petunia_plains": "牵牛花平原", + "biome.emeraldcraft.golden_beach": "金沙滩", + "biome.emeraldcraft.palm_beach": "棕榈沙滩", + "biome.emeraldcraft.azure_desert": "琉璃沙漠", + "biome.emeraldcraft.jadeite_desert": "翡翠沙漠", + "biome.emeraldcraft.volcanic_caves": "火山洞穴", + "biome.emeraldcraft.quartz_desert": "石英沙漠", + "biome.emeraldcraft.emery_desert": "金刚沙漠", + "biome.emeraldcraft.purpuraceus_swamp": "紫陀螺沼泽", + + "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": "获得全套绿宝石盔甲", + "advancements.emeraldcraft.cure_phantom.title": "幻翼医生", + "advancements.emeraldcraft.cure_phantom.description": "使用光灵箭或喷溅型发光药水和金桃子治疗一只幻翼", + "advancements.emeraldcraft.cure_zombified_piglin.title": "僵尸猪灵医生", + "advancements.emeraldcraft.cure_zombified_piglin.description": "使用喷溅型饥饿药水和金胡萝卜治疗一只僵尸猪灵", + "advancements.emeraldcraft.friend_from_the_nether.title": "来自下界的朋友", + "advancements.emeraldcraft.friend_from_the_nether.description": "发现一个猪灵妹妹", + "advancements.emeraldcraft.surely_see_each_other_again.title": "一定会再见面的", + "advancements.emeraldcraft.surely_see_each_other_again.description": "帮助猪灵妹妹完成她的愿望", + "advancements.emeraldcraft.a_horrible_entrenchment.title": "骇人的堑壕", + "advancements.emeraldcraft.a_horrible_entrenchment.description": "找到一个堑壕。小心那些游荡的死灵!", + "advancements.emeraldcraft.noisy_guy.title": "吵闹的家伙", + "advancements.emeraldcraft.noisy_guy.description": "获得一台连续采矿机", + "advancements.emeraldcraft.hotter_topic.title": "更热门的话题", + "advancements.emeraldcraft.hotter_topic.description": "获得一个熔化炉", + "advancements.emeraldcraft.more_effective_craft.title": "更有效的工艺", + "advancements.emeraldcraft.more_effective_craft.description": "将粗矿合成为精矿", + "advancements.emeraldcraft.ice_cream_please.title": "请为我做一个冰淇淋", + "advancements.emeraldcraft.ice_cream_please.description": "获得一台制冰机", + + "filled_map.shelter": "救援探险家地图", + "filled_map.entrenchment": "地心探险家地图", + + "fluids.save.bucket": "可装满 %s %s", + "fluids.name.water": "水", + "fluids.name.lava": "熔岩", + "fluids.name.melted_emerald": "熔融绿宝石水", + "fluids.name.melted_iron": "熔融铁水", + "fluids.name.melted_gold": "熔融金水", + "fluids.name.melted_copper": "熔融铜水", + "fluids.name.melted_zinc": "熔融锌水", + "fluids.name.melted_aluminum": "熔融铝水", + "fluids.name.melted_lead": "熔融铅水", + "fluids.name.melted_silver": "熔融银水", + "fluids.name.melted_nickel": "熔融镍水", + "fluids.name.melted_uranium": "熔融铀水", + + "jei.emeraldcraft.villager_trade": "与村民交易" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/lang/zh_tw.json b/src/main/resources/assets/emeraldcraft/lang/zh_tw.json new file mode 100644 index 00000000..8224285c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/lang/zh_tw.json @@ -0,0 +1,538 @@ +{ + "language": "Traditional Chinese", + "language.code": "zh_tw", + "language.region": "Taiwan, 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.vitrified_sand": "玻璃化的沙子", + "block.emeraldcraft.dark_sand": "黑金沙", + "block.emeraldcraft.azure_sand": "琉璃沙", + "block.emeraldcraft.quartz_sand": "石英沙", + "block.emeraldcraft.jadeite_sand": "翡翠沙", + "block.emeraldcraft.emery_sand": "金剛沙", + "block.emeraldcraft.dark_sandstone": "黑金砂巖", + "block.emeraldcraft.azure_sandstone": "琉璃砂巖", + "block.emeraldcraft.quartz_sandstone": "石英砂巖", + "block.emeraldcraft.jadeite_sandstone": "翡翠砂巖", + "block.emeraldcraft.emery_sandstone": "金剛砂巖", + "block.emeraldcraft.smooth_dark_sandstone": "平滑黑金砂巖", + "block.emeraldcraft.smooth_azure_sandstone": "平滑琉璃砂巖", + "block.emeraldcraft.smooth_quartz_sandstone": "平滑石英砂巖", + "block.emeraldcraft.smooth_jadeite_sandstone": "平滑翡翠砂巖", + "block.emeraldcraft.smooth_emery_sandstone": "平滑金剛砂巖", + "block.emeraldcraft.cut_dark_sandstone": "切製黑金砂巖", + "block.emeraldcraft.cut_azure_sandstone": "切製琉璃砂巖", + "block.emeraldcraft.cut_quartz_sandstone": "切製石英砂巖", + "block.emeraldcraft.cut_jadeite_sandstone": "切製翡翠砂巖", + "block.emeraldcraft.cut_emery_sandstone": "切製金剛砂巖", + "block.emeraldcraft.dark_sandstone_slab": "黑金砂巖半磚", + "block.emeraldcraft.azure_sandstone_slab": "琉璃砂巖半磚", + "block.emeraldcraft.quartz_sandstone_slab": "石英砂巖半磚", + "block.emeraldcraft.jadeite_sandstone_slab": "翡翠砂巖半磚", + "block.emeraldcraft.emery_sandstone_slab": "金剛砂巖半磚", + "block.emeraldcraft.smooth_dark_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_dark_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.dark_sandstone_stairs": "黑金砂巖階梯", + "block.emeraldcraft.azure_sandstone_stairs": "琉璃砂巖階梯", + "block.emeraldcraft.quartz_sandstone_stairs": "石英砂巖階梯", + "block.emeraldcraft.jadeite_sandstone_stairs": "翡翠砂巖階梯", + "block.emeraldcraft.emery_sandstone_stairs": "金剛砂巖階梯", + "block.emeraldcraft.smooth_dark_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.dark_sandstone_wall": "黑金砂巖牆", + "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.purple_nether_brick_slab": "紫地獄磚半磚", + "block.emeraldcraft.purple_nether_brick_stairs": "紫地獄磚階梯", + "block.emeraldcraft.purple_nether_brick_wall": "紫地獄磚牆", + "block.emeraldcraft.purple_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": "詭異鵝卵石", + "block.emeraldcraft.cyan_petunia": "青色牽牛花", + "block.emeraldcraft.magenta_petunia": "洋紅色牽牛花", + "block.emeraldcraft.higan_bana": "彼岸花", + "block.emeraldcraft.potted_cyan_petunia": "青色牽牛花盆栽", + "block.emeraldcraft.potted_magenta_petunia": "洋紅色牽牛花盆栽", + "block.emeraldcraft.potted_higan_bana": "彼岸花盆栽", + "block.emeraldcraft.ginkgo_sapling": "銀杏樹苗", + "block.emeraldcraft.potted_ginkgo_sapling": "銀杏樹苗盆栽", + "block.emeraldcraft.ginkgo_log": "銀杏原木", + "block.emeraldcraft.stripped_ginkgo_log": "去皮銀杏原木塊", + "block.emeraldcraft.ginkgo_wood": "銀杏木", + "block.emeraldcraft.stripped_ginkgo_wood": "去皮銀杏木塊", + "block.emeraldcraft.ginkgo_leaves": "銀杏樹葉", + "block.emeraldcraft.ginkgo_planks": "銀杏木闆", + "block.emeraldcraft.ginkgo_stairs": "銀杏木階梯", + "block.emeraldcraft.ginkgo_slab": "銀杏木半磚", + "block.emeraldcraft.ginkgo_fence": "銀杏木柵欄", + "block.emeraldcraft.ginkgo_fence_gate": "銀杏木柵欄門", + "block.emeraldcraft.ginkgo_door": "銀杏木門", + "block.emeraldcraft.ginkgo_trapdoor": "銀杏木地板門", + "block.emeraldcraft.ginkgo_pressure_plate": "銀杏木質壓力板", + "block.emeraldcraft.ginkgo_button": "銀杏木按鈕", + "block.emeraldcraft.ginkgo_sign": "銀杏木告示牌", + "block.emeraldcraft.ginkgo_wall_sign": "牆上的銀杏木告示牌", + "block.emeraldcraft.palm_sapling": "棕櫚樹苗", + "block.emeraldcraft.potted_palm_sapling": "棕櫚樹苗盆栽", + "block.emeraldcraft.palm_log": "棕櫚原木", + "block.emeraldcraft.stripped_palm_log": "去皮棕櫚原木塊", + "block.emeraldcraft.palm_wood": "棕櫚木", + "block.emeraldcraft.stripped_palm_wood": "去皮棕櫚木塊", + "block.emeraldcraft.palm_leaves": "棕櫚樹葉", + "block.emeraldcraft.palm_planks": "棕櫚木闆", + "block.emeraldcraft.palm_stairs": "棕櫚木階梯", + "block.emeraldcraft.palm_slab": "棕櫚木半磚", + "block.emeraldcraft.palm_fence": "棕櫚木柵欄", + "block.emeraldcraft.palm_fence_gate": "棕櫚木柵欄門", + "block.emeraldcraft.palm_door": "棕櫚木門", + "block.emeraldcraft.palm_trapdoor": "棕櫚木地板門", + "block.emeraldcraft.palm_pressure_plate": "棕櫚木質壓力板", + "block.emeraldcraft.palm_button": "棕櫚木按鈕", + "block.emeraldcraft.palm_sign": "棕櫚木告示牌", + "block.emeraldcraft.palm_wall_sign": "牆上的棕櫚木告示牌", + "block.emeraldcraft.peach_sapling": "桃樹苗", + "block.emeraldcraft.potted_peach_sapling": "桃樹苗盆栽", + "block.emeraldcraft.peach_log": "桃木原木", + "block.emeraldcraft.stripped_peach_log": "去皮桃木原木塊", + "block.emeraldcraft.peach_wood": "桃木", + "block.emeraldcraft.stripped_peach_wood": "去皮桃木塊", + "block.emeraldcraft.peach_leaves": "桃樹葉", + "block.emeraldcraft.peach_planks": "桃木闆", + "block.emeraldcraft.peach_stairs": "桃木階梯", + "block.emeraldcraft.peach_slab": "桃木半磚", + "block.emeraldcraft.peach_fence": "桃木柵欄", + "block.emeraldcraft.peach_fence_gate": "桃木柵欄門", + "block.emeraldcraft.peach_door": "桃木門", + "block.emeraldcraft.peach_trapdoor": "桃木地板門", + "block.emeraldcraft.peach_pressure_plate": "桃木質壓力板", + "block.emeraldcraft.peach_button": "桃木按鈕", + "block.emeraldcraft.peach_sign": "桃木告示牌", + "block.emeraldcraft.peach_wall_sign": "牆上的桃木告示牌", + "block.emeraldcraft.purpuraceus_roots": "紫陀螺蕈根", + "block.emeraldcraft.purpuraceus_fungus": "紫陀螺蕈菇", + "block.emeraldcraft.purpuraceus_nylium": "紫陀螺菌絲石", + "block.emeraldcraft.potted_purpuraceus_roots": "紫陀螺蕈根盆栽", + "block.emeraldcraft.potted_purpuraceus_fungus": "紫陀螺蕈菇盆栽", + "block.emeraldcraft.purpuraceus_stem": "紫陀螺蕈柄", + "block.emeraldcraft.stripped_purpuraceus_stem": "去皮紫陀螺蕈柄", + "block.emeraldcraft.purpuraceus_hyphae": "紫陀螺菌絲體", + "block.emeraldcraft.stripped_purpuraceus_hyphae": "去皮紫陀螺菌絲體", + "block.emeraldcraft.purpuraceus_wart_block": "紫陀螺疙瘩塊", + "block.emeraldcraft.purpuraceus_planks": "紫陀螺闆", + "block.emeraldcraft.purpuraceus_stairs": "紫陀螺階梯", + "block.emeraldcraft.purpuraceus_slab": "紫陀螺半磚", + "block.emeraldcraft.purpuraceus_fence": "紫陀螺柵欄", + "block.emeraldcraft.purpuraceus_fence_gate": "紫陀螺柵欄門", + "block.emeraldcraft.purpuraceus_door": "紫陀螺門", + "block.emeraldcraft.purpuraceus_trapdoor": "紫陀螺地板門", + "block.emeraldcraft.purpuraceus_pressure_plate": "紫陀螺壓力板", + "block.emeraldcraft.purpuraceus_button": "紫陀螺按鈕", + "block.emeraldcraft.purpuraceus_sign": "紫陀螺告示牌", + "block.emeraldcraft.purpuraceus_wall_sign": "牆上的紫陀螺告示牌", + + "block.emeraldcraft.zinc_slab": "鋅半磚", + "block.emeraldcraft.zinc_stairs": "鋅階梯", + "block.emeraldcraft.zinc_wall": "鋅牆", + "block.emeraldcraft.aluminum_stairs": "鋁階梯", + "block.emeraldcraft.aluminum_wall": "鋁牆", + "block.emeraldcraft.lead_stairs": "鉛階梯", + "block.emeraldcraft.lead_wall": "鉛牆", + "block.emeraldcraft.silver_stairs": "銀階梯", + "block.emeraldcraft.silver_wall": "銀牆", + "block.emeraldcraft.nickel_stairs": "鎳階梯", + "block.emeraldcraft.nickel_wall": "鎳牆", + "block.emeraldcraft.uranium_stairs": "鈾階梯", + "block.emeraldcraft.uranium_wall": "鈾牆", + "block.emeraldcraft.constantan_stairs": "康铜階梯", + "block.emeraldcraft.constantan_wall": "康铜牆", + "block.emeraldcraft.electrum_stairs": "琥珀金階梯", + "block.emeraldcraft.electrum_wall": "琥珀金牆", + "block.emeraldcraft.steel_stairs": "钢階梯", + "block.emeraldcraft.steel_wall": "钢牆", + + "block.minecraft.banner.emeraldcraft.bee.black": "黑色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.blue": "藍色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.brown": "棕色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.cyan": "青色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.gray": "灰色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.green": "綠色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.lightBlue": "淺藍色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.lime": "黃綠色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.magenta": "品紅色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.orange": "橙色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.pink": "粉色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.purple": "紫色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.red": "紅色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.silver": "淺灰色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.white": "白色蜜蜂", + "block.minecraft.banner.emeraldcraft.bee.yellow": "黃色蜜蜂", + "block.minecraft.banner.emeraldcraft.snow.black": "黑色雪花", + "block.minecraft.banner.emeraldcraft.snow.blue": "藍色雪花", + "block.minecraft.banner.emeraldcraft.snow.brown": "棕色雪花", + "block.minecraft.banner.emeraldcraft.snow.cyan": "青色雪花", + "block.minecraft.banner.emeraldcraft.snow.gray": "灰色雪花", + "block.minecraft.banner.emeraldcraft.snow.green": "綠色雪花", + "block.minecraft.banner.emeraldcraft.snow.lightBlue": "淺藍色雪花", + "block.minecraft.banner.emeraldcraft.snow.lime": "黃綠色雪花", + "block.minecraft.banner.emeraldcraft.snow.magenta": "品紅色雪花", + "block.minecraft.banner.emeraldcraft.snow.orange": "橙色雪花", + "block.minecraft.banner.emeraldcraft.snow.pink": "粉色雪花", + "block.minecraft.banner.emeraldcraft.snow.purple": "紫色雪花", + "block.minecraft.banner.emeraldcraft.snow.red": "紅色雪花", + "block.minecraft.banner.emeraldcraft.snow.silver": "淺灰色雪花", + "block.minecraft.banner.emeraldcraft.snow.white": "白色雪花", + "block.minecraft.banner.emeraldcraft.snow.yellow": "黃色雪花", + "block.minecraft.banner.emeraldcraft.bottle.black": "黑色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.blue": "藍色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.brown": "棕色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.cyan": "青色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.gray": "灰色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.green": "綠色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.lightBlue": "淺藍色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.lime": "黃綠色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.magenta": "品紅色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.orange": "橙色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.pink": "粉色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.purple": "紫色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.red": "紅色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.silver": "淺灰色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.white": "白色瓶子", + "block.minecraft.banner.emeraldcraft.bottle.yellow": "黃色瓶子", + "block.minecraft.banner.emeraldcraft.potion.black": "黑色藥水", + "block.minecraft.banner.emeraldcraft.potion.blue": "藍色藥水", + "block.minecraft.banner.emeraldcraft.potion.brown": "棕色藥水", + "block.minecraft.banner.emeraldcraft.potion.cyan": "青色藥水", + "block.minecraft.banner.emeraldcraft.potion.gray": "灰色藥水", + "block.minecraft.banner.emeraldcraft.potion.green": "綠色藥水", + "block.minecraft.banner.emeraldcraft.potion.lightBlue": "淺藍色藥水", + "block.minecraft.banner.emeraldcraft.potion.lime": "黃綠色藥水", + "block.minecraft.banner.emeraldcraft.potion.magenta": "品紅色藥水", + "block.minecraft.banner.emeraldcraft.potion.orange": "橙色藥水", + "block.minecraft.banner.emeraldcraft.potion.pink": "粉色藥水", + "block.minecraft.banner.emeraldcraft.potion.purple": "紫色藥水", + "block.minecraft.banner.emeraldcraft.potion.red": "紅色藥水", + "block.minecraft.banner.emeraldcraft.potion.silver": "淺灰色藥水", + "block.minecraft.banner.emeraldcraft.potion.white": "白色藥水", + "block.minecraft.banner.emeraldcraft.potion.yellow": "黃色藥水", + + "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.bigeye_spawn_egg": "紅目鰱生怪蛋", + "item.emeraldcraft.herring_spawn_egg": "鯡魚生怪蛋", + "item.emeraldcraft.wraith_spawn_egg": "死靈生怪蛋", + "item.emeraldcraft.manta_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": "銅精礦", + "item.emeraldcraft.ginkgo_nut": "銀杏果", + "item.emeraldcraft.ginkgo_boat": "銀杏木船", + "item.emeraldcraft.palm_boat": "棕櫚木船", + "item.emeraldcraft.peach_boat": "桃木船", + "item.emeraldcraft.ginkgo_chest_boat": "銀杏木儲物箱船", + "item.emeraldcraft.palm_chest_boat": "棕櫚木儲物箱船", + "item.emeraldcraft.peach_chest_boat": "桃木儲物箱船", + "item.emeraldcraft.peach": "桃子", + "item.emeraldcraft.golden_peach": "金桃子", + "item.emeraldcraft.potion_cookie": "餅乾", + "item.emeraldcraft.cooked_tropical_fish": "烤熱帶魚", + "item.emeraldcraft.cooked_purpuraceus_fungus": "烤紫陀螺蕈菇", + "item.emeraldcraft.boiled_egg": "煮鷄蛋", + "item.emeraldcraft.chorus_flower_eggdrop_soup": "歌萊花蛋花湯", + "item.emeraldcraft.herring": "鯡鱼", + "item.emeraldcraft.cooked_herring": "烤鯡鱼", + "item.emeraldcraft.purple_spotted_bigeye": "紅目鰱", + "item.emeraldcraft.cooked_purple_spotted_bigeye": "烤紅目鰱", + "item.emeraldcraft.caramelized_potato": "拔絲土豆", + "item.emeraldcraft.rougamo": "肉夾饃", + "item.emeraldcraft.beef_and_potato_stew": "土豆燉牛腩", + "item.emeraldcraft.braised_chicken": "鷄公煲", + "item.emeraldcraft.sausage": "香腸", + "item.emeraldcraft.cooked_sausage": "烤香腸", + "item.emeraldcraft.gluten": "麵筋", + "item.emeraldcraft.warden_heart": "伏守者的心臟", + "item.emeraldcraft.stir_fried_warden_heart": "爆炒伏守者的心臟", + "item.emeraldcraft.chili": "辣椒", + "item.emeraldcraft.chili_seed": "辣椒種子", + "item.emeraldcraft.apple_juice": "蘋果汁", + "item.emeraldcraft.beetroot_juice": "甜菜汁", + "item.emeraldcraft.carrot_juice": "胡蘿蔔汁", + "item.emeraldcraft.melon_juice": "西瓜汁", + "item.emeraldcraft.peach_juice": "桃汁", + "item.emeraldcraft.pumpkin_juice": "南瓜汁", + "item.emeraldcraft.herring_bucket": "鯡魚桶", + "item.emeraldcraft.bigeye_bucket": "紅目鰱桶", + + "item.emeraldcraft.melted_zinc_bucket": "熔融鋅水桶", + "item.emeraldcraft.zinc_concentrate": "鋅精礦", + "item.emeraldcraft.melted_aluminum_bucket": "熔融鋁水桶", + "item.emeraldcraft.aluminum_concentrate": "鋁精礦", + "item.emeraldcraft.melted_lead_bucket": "熔融鉛水桶", + "item.emeraldcraft.lead_concentrate": "鉛精礦", + "item.emeraldcraft.melted_silver_bucket": "熔融銀水桶", + "item.emeraldcraft.silver_concentrate": "銀精礦", + "item.emeraldcraft.melted_nickel_bucket": "熔融鎳水桶", + "item.emeraldcraft.nickel_concentrate": "鎳精礦", + "item.emeraldcraft.melted_uranium_bucket": "熔融鈾水桶", + "item.emeraldcraft.uranium_concentrate": "鈾精礦", + + "item.minecraft.potion.effect.absorption": "吸收藥水", + "item.minecraft.splash_potion.effect.absorption": "飛濺型吸收藥水", + "item.minecraft.lingering_potion.effect.absorption": "滯留型吸收藥水", + "item.minecraft.potion.effect.blindness": "失明藥水", + "item.minecraft.splash_potion.effect.blindness": "飛濺型失明藥水", + "item.minecraft.lingering_potion.effect.blindness": "滯留型失明藥水", + "item.minecraft.potion.effect.hunger": "飢餓藥水", + "item.minecraft.splash_potion.effect.hunger": "飛濺型飢餓藥水", + "item.minecraft.lingering_potion.effect.hunger": "滯留型飢餓藥水", + "item.minecraft.potion.effect.saturation": "飽食藥水", + "item.minecraft.splash_potion.effect.saturation": "飛濺型飽食藥水", + "item.minecraft.lingering_potion.effect.saturation": "滯留型飽食藥水", + "item.minecraft.potion.effect.wither": "凋零藥水", + "item.minecraft.splash_potion.effect.wither": "飛濺型凋零藥水", + "item.minecraft.lingering_potion.effect.wither": "滯留型凋零藥水", + "item.minecraft.potion.effect.glowing": "發光藥水", + "item.minecraft.splash_potion.effect.glowing": "飛濺型發光藥水", + "item.minecraft.lingering_potion.effect.glowing": "滯留型發光藥水", + + "item.minecraft.tipped_arrow.effect.absorption": "吸收之箭", + "item.minecraft.tipped_arrow.effect.blindness": "失明之箭", + "item.minecraft.tipped_arrow.effect.hunger": "飢餓之箭", + "item.minecraft.tipped_arrow.effect.saturation": "飽食之箭", + "item.minecraft.tipped_arrow.effect.wither": "凋零之箭", + "item.minecraft.tipped_arrow.effect.glowing": "發光之箭", + + "entity.emeraldcraft.piglin_cutey": "豬布林妹妹", + "entity.emeraldcraft.nether_pigman": "下界豬豬人", + "entity.emeraldcraft.nether_lambman": "下界小羊人", + "entity.emeraldcraft.purple_spotted_bigeye": "紅目鰱", + "entity.emeraldcraft.herring": "鯡魚", + "entity.emeraldcraft.wraith": "死靈", + "entity.emeraldcraft.manta": "鰩鯤", + "entity.emeraldcraft.boat": "船", + "entity.emeraldcraft.chest_boat": "儲物箱船", + "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": "化學專案師:工作", + "subtitles.entity.herring.flop": "鯡魚拍打", + "subtitles.entity.herring.hurt": "鯡魚受傷", + "subtitles.entity.herring.death": "鯡魚死亡", + "subtitles.entity.purple_spotted_bigeye.flop": "紅目鰱拍打", + "subtitles.entity.purple_spotted_bigeye.hurt": "紅目鰱受傷", + "subtitles.entity.purple_spotted_bigeye.death": "紅目鰱死亡", + "subtitles.entity.wraith.ambient": "死靈呻吟聲", + "subtitles.entity.wraith.hurt": "死靈受傷", + "subtitles.entity.wraith.death": "死靈死亡", + "subtitles.entity.manta.ambient": "鰩鯤飛翔", + "subtitles.entity.manta.hurt": "鰩鯤受傷", + "subtitles.entity.manta.death": "鰩鯤死亡", + + "subtitles.block.flower.drop_leaves": "彼岸花:落葉", + + "container.carpentry": "木工桌", + "container.glass_kiln": "玻璃窯", + "container.mineral_table": "冶礦臺", + "container.continuous_miner": "連續採礦機", + "container.ice_maker": "制冰機", + "container.melter": "熔化爐", + + "desc.emeraldcraft.carpentry_table": "更少而精確的數量制作與木材相關的方塊和物品,甚至對於某些配方來說比直接合成更省原材料", + "desc.emeraldcraft.glass_kiln": "只消耗普通熔爐一半時間即可燒制玻璃和陶瓦制品", + "desc.emeraldcraft.mineral_table": "消耗烈焰粉,利用常見方塊產出礦物顆粒", + "desc.emeraldcraft.crystalball_table": "需要經驗嗎?", + "desc.emeraldcraft.squeezer": "利用蜜脾塊獲得蜂蜜", + "desc.emeraldcraft.continuous_miner": "消耗熔融綠寶石,在紅石的激活下可以自動挖礦的採礦機器", + "desc.emeraldcraft.ice_maker": "消耗水,將液體凝固", + "desc.emeraldcraft.melter": "消耗燃料將固體融化", + + "biome.emeraldcraft.dead_crimson_ocean": "死寂的緋紅海洋", + "biome.emeraldcraft.dead_warped_ocean": "死寂的詭異海洋", + "biome.emeraldcraft.deep_dead_crimson_ocean": "死寂的緋紅深海", + "biome.emeraldcraft.deep_dead_warped_ocean": "死寂的詭異深海", + "biome.emeraldcraft.xanadu": "世外桃源", + "biome.emeraldcraft.ginkgo_forest": "銀杏森林", + "biome.emeraldcraft.karst_hills": "喀斯特山巒", + "biome.emeraldcraft.petunia_plains": "牽牛花平原", + "biome.emeraldcraft.golden_beach": "金沙灘", + "biome.emeraldcraft.palm_beach": "棕櫚沙灘", + "biome.emeraldcraft.azure_desert": "琉璃沙漠", + "biome.emeraldcraft.jadeite_desert": "翡翠沙漠", + "biome.emeraldcraft.volcanic_caves": "火山洞穴", + "biome.emeraldcraft.quartz_desert": "石英沙漠", + "biome.emeraldcraft.emery_desert": "金剛沙漠", + "biome.emeraldcraft.purpuraceus_swamp": "紫陀螺沼澤", + + "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": "獲得全套綠寶石盔甲", + "advancements.emeraldcraft.cure_phantom.title": "夜魅醫生", + "advancements.emeraldcraft.cure_phantom.description": "使用追跡之箭或飛濺型發光藥水和金桃子治療一隻夜魅", + "advancements.emeraldcraft.cure_zombified_piglin.title": "殭屍化豬布林醫生", + "advancements.emeraldcraft.cure_zombified_piglin.description": "使用飛濺型飢餓藥水和金胡蘿蔔治療一隻殭屍化豬布林", + "advancements.emeraldcraft.friend_from_the_nether.title": "來自下界的朋友", + "advancements.emeraldcraft.friend_from_the_nether.description": "發現一個豬布林妹妹", + "advancements.emeraldcraft.surely_see_each_other_again.title": "一定會再見面的", + "advancements.emeraldcraft.surely_see_each_other_again.description": "幫助豬布林妹妹完成她的願望", + "advancements.emeraldcraft.a_horrible_entrenchment.title": "駭人的塹壕", + "advancements.emeraldcraft.a_horrible_entrenchment.description": "找到一個塹壕。當心那些游蕩的死靈!", + "advancements.emeraldcraft.noisy_guy.title": "吵鬧的家夥", + "advancements.emeraldcraft.noisy_guy.description": "獲得一臺連續採礦機", + "advancements.emeraldcraft.hotter_topic.title": "更熱門的焦點", + "advancements.emeraldcraft.hotter_topic.description": "獲得一個熔化爐", + "advancements.emeraldcraft.more_effective_craft.title": "更有效的工藝", + "advancements.emeraldcraft.more_effective_craft.description": "將原礦合成為精礦", + "advancements.emeraldcraft.ice_cream_please.title": "請爲我做一個冰淇淋", + "advancements.emeraldcraft.ice_cream_please.description": "獲得一臺製冰機", + + "filled_map.shelter": "救援探險家地圖", + "filled_map.entrenchment": "地心探險家地圖", + + "fluids.save.bucket": "可裝滿 %s %s", + "fluids.name.water": "水", + "fluids.name.lava": "熔岩", + "fluids.name.melted_emerald": "熔融綠寶石水", + "fluids.name.melted_iron": "熔融鉄水", + "fluids.name.melted_gold": "熔融金水", + "fluids.name.melted_copper": "熔融銅水", + "fluids.name.melted_zinc": "熔融鋅水", + "fluids.name.melted_aluminum": "熔融鋁水", + "fluids.name.melted_lead": "熔融鉛水", + "fluids.name.melted_silver": "熔融銀水", + "fluids.name.melted_nickel": "熔融鎳水", + "fluids.name.melted_uranium": "熔融鈾水", + + "jei.emeraldcraft.villager_trade": "和村民交易" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/aluminum_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/aluminum_stairs.json new file mode 100644 index 00000000..0bcf49fb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/aluminum_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_aluminum", + "top": "immersiveengineering:block/metal/storage_aluminum", + "side": "immersiveengineering:block/metal/storage_aluminum" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/aluminum_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/aluminum_stairs_inner.json new file mode 100644 index 00000000..87ba1b99 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/aluminum_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_aluminum", + "top": "immersiveengineering:block/metal/storage_aluminum", + "side": "immersiveengineering:block/metal/storage_aluminum" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/aluminum_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/aluminum_stairs_outer.json new file mode 100644 index 00000000..9129b5d4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/aluminum_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_aluminum", + "top": "immersiveengineering:block/metal/storage_aluminum", + "side": "immersiveengineering:block/metal/storage_aluminum" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/aluminum_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/aluminum_wall_inventory.json new file mode 100644 index 00000000..c71079fe --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/aluminum_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "immersiveengineering:block/metal/storage_aluminum" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/aluminum_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/aluminum_wall_post.json new file mode 100644 index 00000000..b6aab11d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/aluminum_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "immersiveengineering:block/metal/storage_aluminum" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/aluminum_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/aluminum_wall_side.json new file mode 100644 index 00000000..35c5cdf3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/aluminum_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "immersiveengineering:block/metal/storage_aluminum" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/aluminum_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/aluminum_wall_side_tall.json new file mode 100644 index 00000000..b80b2212 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/aluminum_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "immersiveengineering:block/metal/storage_aluminum" + } +} \ 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..e095fdf6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/carpentry_table.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:block/block", + "render_type": "cutout", + "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/chili_stage0.json b/src/main/resources/assets/emeraldcraft/models/block/chili_stage0.json new file mode 100644 index 00000000..9635878d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/chili_stage0.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "cutout", + "textures": { + "crop": "emeraldcraft:block/chili_stage0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/chili_stage1.json b/src/main/resources/assets/emeraldcraft/models/block/chili_stage1.json new file mode 100644 index 00000000..7f106a41 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/chili_stage1.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "cutout", + "textures": { + "crop": "emeraldcraft:block/chili_stage1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/chili_stage2.json b/src/main/resources/assets/emeraldcraft/models/block/chili_stage2.json new file mode 100644 index 00000000..cb529e27 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/chili_stage2.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "cutout", + "textures": { + "crop": "emeraldcraft:block/chili_stage2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/chili_stage3.json b/src/main/resources/assets/emeraldcraft/models/block/chili_stage3.json new file mode 100644 index 00000000..68104fd4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/chili_stage3.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "cutout", + "textures": { + "crop": "emeraldcraft:block/chili_stage3" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/constantan_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/constantan_stairs.json new file mode 100644 index 00000000..8db3276e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/constantan_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_constantan", + "top": "immersiveengineering:block/metal/storage_constantan", + "side": "immersiveengineering:block/metal/storage_constantan" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/constantan_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/constantan_stairs_inner.json new file mode 100644 index 00000000..b25c34b5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/constantan_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_constantan", + "top": "immersiveengineering:block/metal/storage_constantan", + "side": "immersiveengineering:block/metal/storage_constantan" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/constantan_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/constantan_stairs_outer.json new file mode 100644 index 00000000..d47dc913 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/constantan_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_constantan", + "top": "immersiveengineering:block/metal/storage_constantan", + "side": "immersiveengineering:block/metal/storage_constantan" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/constantan_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/constantan_wall_inventory.json new file mode 100644 index 00000000..27d78558 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/constantan_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "immersiveengineering:block/metal/storage_constantan" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/constantan_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/constantan_wall_post.json new file mode 100644 index 00000000..bf6ca72a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/constantan_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "immersiveengineering:block/metal/storage_constantan" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/constantan_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/constantan_wall_side.json new file mode 100644 index 00000000..b9c501dc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/constantan_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "immersiveengineering:block/metal/storage_constantan" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/constantan_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/constantan_wall_side_tall.json new file mode 100644 index 00000000..a07726be --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/constantan_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "immersiveengineering:block/metal/storage_constantan" + } +} \ No newline at end of file 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..78b07474 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/crystalball_table.json @@ -0,0 +1,38 @@ +{ + "parent": "minecraft:block/block", + "render_type": "translucent", + "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_dark_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone.json new file mode 100644 index 00000000..8ed0bf81 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/cut_dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone_slab.json new file mode 100644 index 00000000..23997997 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_top", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/cut_dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone_slab_top.json new file mode 100644 index 00000000..b376a94a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cut_dark_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_top", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/cut_dark_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/cyan_petunia.json b/src/main/resources/assets/emeraldcraft/models/block/cyan_petunia.json new file mode 100644 index 00000000..96d41643 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/cyan_petunia.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cross", + "render_type": "cutout", + "textures": { + "cross": "emeraldcraft:block/cyan_petunia" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sand.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sand.json new file mode 100644 index 00000000..1cf2085a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/dark_sand" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone.json new file mode 100644 index 00000000..7e29f4c7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/dark_sandstone_top", + "bottom": "emeraldcraft:block/dark_sandstone_bottom", + "side": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_slab.json new file mode 100644 index 00000000..1034e710 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_bottom", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_slab_top.json new file mode 100644 index 00000000..1c693008 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_bottom", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs.json new file mode 100644 index 00000000..93e13683 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_bottom", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs_inner.json new file mode 100644 index 00000000..22ac77b5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_bottom", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs_outer.json new file mode 100644 index 00000000..debde99e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_bottom", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_inventory.json new file mode 100644 index 00000000..cb0d1521 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_post.json new file mode 100644 index 00000000..524b7009 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_side.json new file mode 100644 index 00000000..bc81a44b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_side_tall.json new file mode 100644 index 00000000..fd4782df --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/dark_sandstone_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/dark_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/electrum_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/electrum_stairs.json new file mode 100644 index 00000000..0dbb88a1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/electrum_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_electrum", + "top": "immersiveengineering:block/metal/storage_electrum", + "side": "immersiveengineering:block/metal/storage_electrum" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/electrum_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/electrum_stairs_inner.json new file mode 100644 index 00000000..bdea9865 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/electrum_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_electrum", + "top": "immersiveengineering:block/metal/storage_electrum", + "side": "immersiveengineering:block/metal/storage_electrum" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/electrum_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/electrum_stairs_outer.json new file mode 100644 index 00000000..7cf12d46 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/electrum_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_electrum", + "top": "immersiveengineering:block/metal/storage_electrum", + "side": "immersiveengineering:block/metal/storage_electrum" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/electrum_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/electrum_wall_inventory.json new file mode 100644 index 00000000..842c23e6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/electrum_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "immersiveengineering:block/metal/storage_electrum" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/electrum_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/electrum_wall_post.json new file mode 100644 index 00000000..4e3d013a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/electrum_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "immersiveengineering:block/metal/storage_electrum" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/electrum_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/electrum_wall_side.json new file mode 100644 index 00000000..eda69c24 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/electrum_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "immersiveengineering:block/metal/storage_electrum" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/electrum_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/electrum_wall_side_tall.json new file mode 100644 index 00000000..6a6bf2e2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/electrum_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "immersiveengineering:block/metal/storage_electrum" + } +} \ 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/ginkgo_button.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button.json new file mode 100644 index 00000000..c8e65ad7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button_inventory.json new file mode 100644 index 00000000..53fe8c1e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button_inventory", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button_pressed.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button_pressed.json new file mode 100644 index 00000000..5a705b45 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button_pressed", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_left.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_left.json new file mode 100644 index 00000000..c516d4fa --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_left.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_bottom_left", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_door_bottom", + "top": "emeraldcraft:block/ginkgo_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_left_open.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_left_open.json new file mode 100644 index 00000000..da2ec209 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_left_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_bottom_left_open", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_door_bottom", + "top": "emeraldcraft:block/ginkgo_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_right.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_right.json new file mode 100644 index 00000000..af408a9d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_right.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_bottom_right", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_door_bottom", + "top": "emeraldcraft:block/ginkgo_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_right_open.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_right_open.json new file mode 100644 index 00000000..165f8e1e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_bottom_right_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_bottom_right_open", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_door_bottom", + "top": "emeraldcraft:block/ginkgo_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_left.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_left.json new file mode 100644 index 00000000..7505d2ce --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_left.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_top_left", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_door_bottom", + "top": "emeraldcraft:block/ginkgo_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_left_open.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_left_open.json new file mode 100644 index 00000000..b0a96e38 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_left_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_top_left_open", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_door_bottom", + "top": "emeraldcraft:block/ginkgo_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_right.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_right.json new file mode 100644 index 00000000..f126a0c9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_right.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_top_right", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_door_bottom", + "top": "emeraldcraft:block/ginkgo_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_right_open.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_right_open.json new file mode 100644 index 00000000..ac7933b8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_door_top_right_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_top_right_open", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_door_bottom", + "top": "emeraldcraft:block/ginkgo_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate.json new file mode 100644 index 00000000..87c03b9b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_open.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_open.json new file mode 100644 index 00000000..cf4fce3d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate_open", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_wall.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_wall.json new file mode 100644 index 00000000..2586b081 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate_wall", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_wall_open.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_wall_open.json new file mode 100644 index 00000000..4510aaf8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate_wall_open", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_inventory.json new file mode 100644 index 00000000..52f9aa42 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_inventory", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_post.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_post.json new file mode 100644 index 00000000..734f7020 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_post", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_side.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_side.json new file mode 100644 index 00000000..68ca05e1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_side", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_leaves.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_leaves.json new file mode 100644 index 00000000..acd8122e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_leaves.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/leaves", + "render_type": "cutout_mipped", + "textures": { + "all": "emeraldcraft:block/ginkgo_leaves" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_log.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_log.json new file mode 100644 index 00000000..e634556f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_log.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/ginkgo_log_top", + "side": "emeraldcraft:block/ginkgo_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_log_horizontal.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_log_horizontal.json new file mode 100644 index 00000000..b6de2129 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_log_horizontal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column_horizontal", + "textures": { + "end": "emeraldcraft:block/ginkgo_log_top", + "side": "emeraldcraft:block/ginkgo_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_planks.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_planks.json new file mode 100644 index 00000000..74689b1d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_pressure_plate.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_pressure_plate.json new file mode 100644 index 00000000..19e98bb1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate_up", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_pressure_plate_down.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_pressure_plate_down.json new file mode 100644 index 00000000..31a5ad2c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate_down", + "textures": { + "texture": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_sapling.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_sapling.json new file mode 100644 index 00000000..8c89804f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_sapling.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cross", + "render_type": "cutout", + "textures": { + "cross": "emeraldcraft:block/ginkgo_sapling" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_sign.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_sign.json new file mode 100644 index 00000000..4189883c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_slab.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_slab.json new file mode 100644 index 00000000..615d233a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_planks", + "top": "emeraldcraft:block/ginkgo_planks", + "side": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_slab_top.json new file mode 100644 index 00000000..80f95a3a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_planks", + "top": "emeraldcraft:block/ginkgo_planks", + "side": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs.json new file mode 100644 index 00000000..7f55d71c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_planks", + "top": "emeraldcraft:block/ginkgo_planks", + "side": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs_inner.json new file mode 100644 index 00000000..d8975f63 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_planks", + "top": "emeraldcraft:block/ginkgo_planks", + "side": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs_outer.json new file mode 100644 index 00000000..5cf048e0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/ginkgo_planks", + "top": "emeraldcraft:block/ginkgo_planks", + "side": "emeraldcraft:block/ginkgo_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_bottom.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_bottom.json new file mode 100644 index 00000000..afef0e7b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/template_orientable_trapdoor_bottom", + "render_type": "cutout", + "textures": { + "texture": "emeraldcraft:block/ginkgo_trapdoor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_open.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_open.json new file mode 100644 index 00000000..9738f115 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/template_orientable_trapdoor_open", + "render_type": "cutout", + "textures": { + "texture": "emeraldcraft:block/ginkgo_trapdoor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_top.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_top.json new file mode 100644 index 00000000..440165b4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_trapdoor_top.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/template_orientable_trapdoor_top", + "render_type": "cutout", + "textures": { + "texture": "emeraldcraft:block/ginkgo_trapdoor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/ginkgo_wood.json b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_wood.json new file mode 100644 index 00000000..422d8698 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/ginkgo_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/ginkgo_log", + "side": "emeraldcraft:block/ginkgo_log" + } +} \ 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/higan_bana.json b/src/main/resources/assets/emeraldcraft/models/block/higan_bana.json new file mode 100644 index 00000000..f02e15ae --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/higan_bana.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cross", + "render_type": "cutout", + "textures": { + "cross": "emeraldcraft:block/higan_bana" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/higan_bana_no_leaf.json b/src/main/resources/assets/emeraldcraft/models/block/higan_bana_no_leaf.json new file mode 100644 index 00000000..072c9a12 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/higan_bana_no_leaf.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cross", + "render_type": "cutout", + "textures": { + "cross": "emeraldcraft:block/higan_bana_no_leaf" + } +} \ 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/lead_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/lead_stairs.json new file mode 100644 index 00000000..7ec6aabc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lead_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_lead", + "top": "immersiveengineering:block/metal/storage_lead", + "side": "immersiveengineering:block/metal/storage_lead" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lead_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/lead_stairs_inner.json new file mode 100644 index 00000000..3f868db1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lead_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_lead", + "top": "immersiveengineering:block/metal/storage_lead", + "side": "immersiveengineering:block/metal/storage_lead" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lead_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/lead_stairs_outer.json new file mode 100644 index 00000000..c1895ed3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lead_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_lead", + "top": "immersiveengineering:block/metal/storage_lead", + "side": "immersiveengineering:block/metal/storage_lead" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lead_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/lead_wall_inventory.json new file mode 100644 index 00000000..91e34b45 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lead_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "immersiveengineering:block/metal/storage_lead" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lead_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/lead_wall_post.json new file mode 100644 index 00000000..c3ea27a4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lead_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "immersiveengineering:block/metal/storage_lead" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lead_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/lead_wall_side.json new file mode 100644 index 00000000..1dda0ad1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lead_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "immersiveengineering:block/metal/storage_lead" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/lead_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/lead_wall_side_tall.json new file mode 100644 index 00000000..0d576e5b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/lead_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "immersiveengineering:block/metal/storage_lead" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/magenta_petunia.json b/src/main/resources/assets/emeraldcraft/models/block/magenta_petunia.json new file mode 100644 index 00000000..46ea7585 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/magenta_petunia.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cross", + "render_type": "cutout", + "textures": { + "cross": "emeraldcraft:block/magenta_petunia" + } +} \ 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/nickel_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/nickel_stairs.json new file mode 100644 index 00000000..7bf786f6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/nickel_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_nickel", + "top": "immersiveengineering:block/metal/storage_nickel", + "side": "immersiveengineering:block/metal/storage_nickel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/nickel_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/nickel_stairs_inner.json new file mode 100644 index 00000000..4c8b251f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/nickel_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_nickel", + "top": "immersiveengineering:block/metal/storage_nickel", + "side": "immersiveengineering:block/metal/storage_nickel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/nickel_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/nickel_stairs_outer.json new file mode 100644 index 00000000..1f748b5b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/nickel_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_nickel", + "top": "immersiveengineering:block/metal/storage_nickel", + "side": "immersiveengineering:block/metal/storage_nickel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/nickel_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/nickel_wall_inventory.json new file mode 100644 index 00000000..1fd24ab9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/nickel_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "immersiveengineering:block/metal/storage_nickel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/nickel_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/nickel_wall_post.json new file mode 100644 index 00000000..864fb308 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/nickel_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "immersiveengineering:block/metal/storage_nickel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/nickel_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/nickel_wall_side.json new file mode 100644 index 00000000..5daea2d3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/nickel_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "immersiveengineering:block/metal/storage_nickel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/nickel_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/nickel_wall_side_tall.json new file mode 100644 index 00000000..e895897a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/nickel_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "immersiveengineering:block/metal/storage_nickel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_button.json b/src/main/resources/assets/emeraldcraft/models/block/palm_button.json new file mode 100644 index 00000000..41cc405c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_button.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button", + "textures": { + "texture": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_button_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/palm_button_inventory.json new file mode 100644 index 00000000..609bd4d9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button_inventory", + "textures": { + "texture": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_button_pressed.json b/src/main/resources/assets/emeraldcraft/models/block/palm_button_pressed.json new file mode 100644 index 00000000..bb4d1826 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button_pressed", + "textures": { + "texture": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_door_bottom_left.json b/src/main/resources/assets/emeraldcraft/models/block/palm_door_bottom_left.json new file mode 100644 index 00000000..b6f6ada6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_door_bottom_left.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_bottom_left", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/palm_door_bottom", + "top": "emeraldcraft:block/palm_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_door_bottom_left_open.json b/src/main/resources/assets/emeraldcraft/models/block/palm_door_bottom_left_open.json new file mode 100644 index 00000000..140115df --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_door_bottom_left_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_bottom_left_open", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/palm_door_bottom", + "top": "emeraldcraft:block/palm_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_door_bottom_right.json b/src/main/resources/assets/emeraldcraft/models/block/palm_door_bottom_right.json new file mode 100644 index 00000000..9411fddc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_door_bottom_right.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_bottom_right", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/palm_door_bottom", + "top": "emeraldcraft:block/palm_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_door_bottom_right_open.json b/src/main/resources/assets/emeraldcraft/models/block/palm_door_bottom_right_open.json new file mode 100644 index 00000000..9406531b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_door_bottom_right_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_bottom_right_open", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/palm_door_bottom", + "top": "emeraldcraft:block/palm_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_door_top_left.json b/src/main/resources/assets/emeraldcraft/models/block/palm_door_top_left.json new file mode 100644 index 00000000..353b2715 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_door_top_left.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_top_left", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/palm_door_bottom", + "top": "emeraldcraft:block/palm_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_door_top_left_open.json b/src/main/resources/assets/emeraldcraft/models/block/palm_door_top_left_open.json new file mode 100644 index 00000000..877588de --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_door_top_left_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_top_left_open", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/palm_door_bottom", + "top": "emeraldcraft:block/palm_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_door_top_right.json b/src/main/resources/assets/emeraldcraft/models/block/palm_door_top_right.json new file mode 100644 index 00000000..251468bf --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_door_top_right.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_top_right", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/palm_door_bottom", + "top": "emeraldcraft:block/palm_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_door_top_right_open.json b/src/main/resources/assets/emeraldcraft/models/block/palm_door_top_right_open.json new file mode 100644 index 00000000..11cc2fcf --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_door_top_right_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_top_right_open", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/palm_door_bottom", + "top": "emeraldcraft:block/palm_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_fence_gate.json b/src/main/resources/assets/emeraldcraft/models/block/palm_fence_gate.json new file mode 100644 index 00000000..a011034f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate", + "textures": { + "texture": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_fence_gate_open.json b/src/main/resources/assets/emeraldcraft/models/block/palm_fence_gate_open.json new file mode 100644 index 00000000..01ee7133 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate_open", + "textures": { + "texture": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_fence_gate_wall.json b/src/main/resources/assets/emeraldcraft/models/block/palm_fence_gate_wall.json new file mode 100644 index 00000000..f596b082 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate_wall", + "textures": { + "texture": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_fence_gate_wall_open.json b/src/main/resources/assets/emeraldcraft/models/block/palm_fence_gate_wall_open.json new file mode 100644 index 00000000..343e49f5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate_wall_open", + "textures": { + "texture": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_fence_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/palm_fence_inventory.json new file mode 100644 index 00000000..db3ec88d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_inventory", + "textures": { + "texture": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_fence_post.json b/src/main/resources/assets/emeraldcraft/models/block/palm_fence_post.json new file mode 100644 index 00000000..33946f63 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_post", + "textures": { + "texture": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_fence_side.json b/src/main/resources/assets/emeraldcraft/models/block/palm_fence_side.json new file mode 100644 index 00000000..62d94c02 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_side", + "textures": { + "texture": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_leaves.json b/src/main/resources/assets/emeraldcraft/models/block/palm_leaves.json new file mode 100644 index 00000000..3b998fc4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_leaves.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/leaves", + "render_type": "cutout_mipped", + "textures": { + "all": "emeraldcraft:block/palm_leaves" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_log.json b/src/main/resources/assets/emeraldcraft/models/block/palm_log.json new file mode 100644 index 00000000..61c14b87 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_log.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/palm_log_top", + "side": "emeraldcraft:block/palm_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_log_horizontal.json b/src/main/resources/assets/emeraldcraft/models/block/palm_log_horizontal.json new file mode 100644 index 00000000..3d4c0b7e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_log_horizontal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column_horizontal", + "textures": { + "end": "emeraldcraft:block/palm_log_top", + "side": "emeraldcraft:block/palm_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_planks.json b/src/main/resources/assets/emeraldcraft/models/block/palm_planks.json new file mode 100644 index 00000000..c5a36b5f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_pressure_plate.json b/src/main/resources/assets/emeraldcraft/models/block/palm_pressure_plate.json new file mode 100644 index 00000000..1f787257 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate_up", + "textures": { + "texture": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_pressure_plate_down.json b/src/main/resources/assets/emeraldcraft/models/block/palm_pressure_plate_down.json new file mode 100644 index 00000000..ee792d57 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate_down", + "textures": { + "texture": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_sapling.json b/src/main/resources/assets/emeraldcraft/models/block/palm_sapling.json new file mode 100644 index 00000000..58ee8deb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_sapling.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cross", + "render_type": "cutout", + "textures": { + "cross": "emeraldcraft:block/palm_sapling" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_sign.json b/src/main/resources/assets/emeraldcraft/models/block/palm_sign.json new file mode 100644 index 00000000..271d81ae --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_slab.json b/src/main/resources/assets/emeraldcraft/models/block/palm_slab.json new file mode 100644 index 00000000..02037125 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/palm_planks", + "top": "emeraldcraft:block/palm_planks", + "side": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/palm_slab_top.json new file mode 100644 index 00000000..542b6978 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/palm_planks", + "top": "emeraldcraft:block/palm_planks", + "side": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/palm_stairs.json new file mode 100644 index 00000000..c5897afb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/palm_planks", + "top": "emeraldcraft:block/palm_planks", + "side": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/palm_stairs_inner.json new file mode 100644 index 00000000..59461475 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/palm_planks", + "top": "emeraldcraft:block/palm_planks", + "side": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/palm_stairs_outer.json new file mode 100644 index 00000000..e061d277 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/palm_planks", + "top": "emeraldcraft:block/palm_planks", + "side": "emeraldcraft:block/palm_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_trapdoor_bottom.json b/src/main/resources/assets/emeraldcraft/models/block/palm_trapdoor_bottom.json new file mode 100644 index 00000000..e71613c9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_trapdoor_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/template_orientable_trapdoor_bottom", + "render_type": "cutout", + "textures": { + "texture": "emeraldcraft:block/palm_trapdoor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_trapdoor_open.json b/src/main/resources/assets/emeraldcraft/models/block/palm_trapdoor_open.json new file mode 100644 index 00000000..38436699 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_trapdoor_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/template_orientable_trapdoor_open", + "render_type": "cutout", + "textures": { + "texture": "emeraldcraft:block/palm_trapdoor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_trapdoor_top.json b/src/main/resources/assets/emeraldcraft/models/block/palm_trapdoor_top.json new file mode 100644 index 00000000..d3e47cc2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_trapdoor_top.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/template_orientable_trapdoor_top", + "render_type": "cutout", + "textures": { + "texture": "emeraldcraft:block/palm_trapdoor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/palm_wood.json b/src/main/resources/assets/emeraldcraft/models/block/palm_wood.json new file mode 100644 index 00000000..9141e197 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/palm_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/palm_log", + "side": "emeraldcraft:block/palm_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_button.json b/src/main/resources/assets/emeraldcraft/models/block/peach_button.json new file mode 100644 index 00000000..37abcb97 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_button.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button", + "textures": { + "texture": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_button_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/peach_button_inventory.json new file mode 100644 index 00000000..df39ca0c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button_inventory", + "textures": { + "texture": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_button_pressed.json b/src/main/resources/assets/emeraldcraft/models/block/peach_button_pressed.json new file mode 100644 index 00000000..c52a2483 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button_pressed", + "textures": { + "texture": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_door_bottom_left.json b/src/main/resources/assets/emeraldcraft/models/block/peach_door_bottom_left.json new file mode 100644 index 00000000..a657fb94 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_door_bottom_left.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_bottom_left", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/peach_door_bottom", + "top": "emeraldcraft:block/peach_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_door_bottom_left_open.json b/src/main/resources/assets/emeraldcraft/models/block/peach_door_bottom_left_open.json new file mode 100644 index 00000000..1aed94d8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_door_bottom_left_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_bottom_left_open", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/peach_door_bottom", + "top": "emeraldcraft:block/peach_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_door_bottom_right.json b/src/main/resources/assets/emeraldcraft/models/block/peach_door_bottom_right.json new file mode 100644 index 00000000..8bf450d1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_door_bottom_right.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_bottom_right", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/peach_door_bottom", + "top": "emeraldcraft:block/peach_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_door_bottom_right_open.json b/src/main/resources/assets/emeraldcraft/models/block/peach_door_bottom_right_open.json new file mode 100644 index 00000000..ca876622 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_door_bottom_right_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_bottom_right_open", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/peach_door_bottom", + "top": "emeraldcraft:block/peach_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_door_top_left.json b/src/main/resources/assets/emeraldcraft/models/block/peach_door_top_left.json new file mode 100644 index 00000000..5f1f9945 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_door_top_left.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_top_left", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/peach_door_bottom", + "top": "emeraldcraft:block/peach_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_door_top_left_open.json b/src/main/resources/assets/emeraldcraft/models/block/peach_door_top_left_open.json new file mode 100644 index 00000000..87eacc5b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_door_top_left_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_top_left_open", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/peach_door_bottom", + "top": "emeraldcraft:block/peach_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_door_top_right.json b/src/main/resources/assets/emeraldcraft/models/block/peach_door_top_right.json new file mode 100644 index 00000000..40926650 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_door_top_right.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_top_right", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/peach_door_bottom", + "top": "emeraldcraft:block/peach_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_door_top_right_open.json b/src/main/resources/assets/emeraldcraft/models/block/peach_door_top_right_open.json new file mode 100644 index 00000000..5063e291 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_door_top_right_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_top_right_open", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/peach_door_bottom", + "top": "emeraldcraft:block/peach_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_fence_gate.json b/src/main/resources/assets/emeraldcraft/models/block/peach_fence_gate.json new file mode 100644 index 00000000..6b270b0f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate", + "textures": { + "texture": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_fence_gate_open.json b/src/main/resources/assets/emeraldcraft/models/block/peach_fence_gate_open.json new file mode 100644 index 00000000..f7305e05 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate_open", + "textures": { + "texture": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_fence_gate_wall.json b/src/main/resources/assets/emeraldcraft/models/block/peach_fence_gate_wall.json new file mode 100644 index 00000000..348d231d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate_wall", + "textures": { + "texture": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_fence_gate_wall_open.json b/src/main/resources/assets/emeraldcraft/models/block/peach_fence_gate_wall_open.json new file mode 100644 index 00000000..7ec5387c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate_wall_open", + "textures": { + "texture": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_fence_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/peach_fence_inventory.json new file mode 100644 index 00000000..98190e12 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_inventory", + "textures": { + "texture": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_fence_post.json b/src/main/resources/assets/emeraldcraft/models/block/peach_fence_post.json new file mode 100644 index 00000000..629b5603 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_post", + "textures": { + "texture": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_fence_side.json b/src/main/resources/assets/emeraldcraft/models/block/peach_fence_side.json new file mode 100644 index 00000000..0a5e8607 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_side", + "textures": { + "texture": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_leaves.json b/src/main/resources/assets/emeraldcraft/models/block/peach_leaves.json new file mode 100644 index 00000000..fd1a9845 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_leaves.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/leaves", + "render_type": "cutout_mipped", + "textures": { + "all": "emeraldcraft:block/peach_leaves" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_log.json b/src/main/resources/assets/emeraldcraft/models/block/peach_log.json new file mode 100644 index 00000000..73c35d71 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_log.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/peach_log_top", + "side": "emeraldcraft:block/peach_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_log_horizontal.json b/src/main/resources/assets/emeraldcraft/models/block/peach_log_horizontal.json new file mode 100644 index 00000000..23464cf4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_log_horizontal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column_horizontal", + "textures": { + "end": "emeraldcraft:block/peach_log_top", + "side": "emeraldcraft:block/peach_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_planks.json b/src/main/resources/assets/emeraldcraft/models/block/peach_planks.json new file mode 100644 index 00000000..6821f01e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_pressure_plate.json b/src/main/resources/assets/emeraldcraft/models/block/peach_pressure_plate.json new file mode 100644 index 00000000..cef7a276 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate_up", + "textures": { + "texture": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_pressure_plate_down.json b/src/main/resources/assets/emeraldcraft/models/block/peach_pressure_plate_down.json new file mode 100644 index 00000000..d868aa4f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate_down", + "textures": { + "texture": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_sapling.json b/src/main/resources/assets/emeraldcraft/models/block/peach_sapling.json new file mode 100644 index 00000000..5914d45a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_sapling.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cross", + "render_type": "cutout", + "textures": { + "cross": "emeraldcraft:block/peach_sapling" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_sign.json b/src/main/resources/assets/emeraldcraft/models/block/peach_sign.json new file mode 100644 index 00000000..fa5a94b6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_slab.json b/src/main/resources/assets/emeraldcraft/models/block/peach_slab.json new file mode 100644 index 00000000..9433d7d3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/peach_planks", + "top": "emeraldcraft:block/peach_planks", + "side": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/peach_slab_top.json new file mode 100644 index 00000000..aa742a8b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/peach_planks", + "top": "emeraldcraft:block/peach_planks", + "side": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/peach_stairs.json new file mode 100644 index 00000000..e4c8c695 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/peach_planks", + "top": "emeraldcraft:block/peach_planks", + "side": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/peach_stairs_inner.json new file mode 100644 index 00000000..e0f622cb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/peach_planks", + "top": "emeraldcraft:block/peach_planks", + "side": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/peach_stairs_outer.json new file mode 100644 index 00000000..55236192 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/peach_planks", + "top": "emeraldcraft:block/peach_planks", + "side": "emeraldcraft:block/peach_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_trapdoor_bottom.json b/src/main/resources/assets/emeraldcraft/models/block/peach_trapdoor_bottom.json new file mode 100644 index 00000000..f213b2a7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_trapdoor_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/template_orientable_trapdoor_bottom", + "render_type": "cutout", + "textures": { + "texture": "emeraldcraft:block/peach_trapdoor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_trapdoor_open.json b/src/main/resources/assets/emeraldcraft/models/block/peach_trapdoor_open.json new file mode 100644 index 00000000..f69365f8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_trapdoor_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/template_orientable_trapdoor_open", + "render_type": "cutout", + "textures": { + "texture": "emeraldcraft:block/peach_trapdoor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_trapdoor_top.json b/src/main/resources/assets/emeraldcraft/models/block/peach_trapdoor_top.json new file mode 100644 index 00000000..79ac7e64 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_trapdoor_top.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/template_orientable_trapdoor_top", + "render_type": "cutout", + "textures": { + "texture": "emeraldcraft:block/peach_trapdoor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/peach_wood.json b/src/main/resources/assets/emeraldcraft/models/block/peach_wood.json new file mode 100644 index 00000000..cd05d756 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/peach_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/peach_log", + "side": "emeraldcraft:block/peach_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/potted_cyan_petunia.json b/src/main/resources/assets/emeraldcraft/models/block/potted_cyan_petunia.json new file mode 100644 index 00000000..893782a7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/potted_cyan_petunia.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "render_type": "cutout", + "textures": { + "plant": "emeraldcraft:block/cyan_petunia" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/potted_ginkgo_sapling.json b/src/main/resources/assets/emeraldcraft/models/block/potted_ginkgo_sapling.json new file mode 100644 index 00000000..ec1b165d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/potted_ginkgo_sapling.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "render_type": "cutout", + "textures": { + "plant": "emeraldcraft:block/ginkgo_sapling" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/potted_higan_bana.json b/src/main/resources/assets/emeraldcraft/models/block/potted_higan_bana.json new file mode 100644 index 00000000..0739a226 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/potted_higan_bana.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "render_type": "cutout", + "textures": { + "plant": "emeraldcraft:block/higan_bana" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/potted_magenta_petunia.json b/src/main/resources/assets/emeraldcraft/models/block/potted_magenta_petunia.json new file mode 100644 index 00000000..ce5e80b3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/potted_magenta_petunia.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "render_type": "cutout", + "textures": { + "plant": "emeraldcraft:block/magenta_petunia" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/potted_palm_sapling.json b/src/main/resources/assets/emeraldcraft/models/block/potted_palm_sapling.json new file mode 100644 index 00000000..77b84c9a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/potted_palm_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "emeraldcraft:block/palm_sapling" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/potted_peach_sapling.json b/src/main/resources/assets/emeraldcraft/models/block/potted_peach_sapling.json new file mode 100644 index 00000000..35361425 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/potted_peach_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "textures": { + "plant": "emeraldcraft:block/peach_sapling" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/potted_purpuraceus_fungus.json b/src/main/resources/assets/emeraldcraft/models/block/potted_purpuraceus_fungus.json new file mode 100644 index 00000000..c2cfb8ab --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/potted_purpuraceus_fungus.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "render_type": "cutout", + "textures": { + "plant": "emeraldcraft:block/purpuraceus_fungus" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/potted_purpuraceus_roots.json b/src/main/resources/assets/emeraldcraft/models/block/potted_purpuraceus_roots.json new file mode 100644 index 00000000..b723ed01 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/potted_purpuraceus_roots.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/flower_pot_cross", + "render_type": "cutout", + "textures": { + "plant": "emeraldcraft:block/purpuraceus_roots_pot" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_slab.json b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_slab.json new file mode 100644 index 00000000..abe54d83 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/purple_nether_bricks", + "top": "emeraldcraft:block/purple_nether_bricks", + "side": "emeraldcraft:block/purple_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_slab_top.json new file mode 100644 index 00000000..b1c06d9c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/purple_nether_bricks", + "top": "emeraldcraft:block/purple_nether_bricks", + "side": "emeraldcraft:block/purple_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_stairs.json new file mode 100644 index 00000000..12adf33e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/purple_nether_bricks", + "top": "emeraldcraft:block/purple_nether_bricks", + "side": "emeraldcraft:block/purple_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_stairs_inner.json new file mode 100644 index 00000000..072cad9b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/purple_nether_bricks", + "top": "emeraldcraft:block/purple_nether_bricks", + "side": "emeraldcraft:block/purple_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_stairs_outer.json new file mode 100644 index 00000000..f83faa6b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/purple_nether_bricks", + "top": "emeraldcraft:block/purple_nether_bricks", + "side": "emeraldcraft:block/purple_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_wall_inventory.json new file mode 100644 index 00000000..0ffd57dd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "emeraldcraft:block/purple_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_wall_post.json new file mode 100644 index 00000000..dfbc7cba --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "emeraldcraft:block/purple_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_wall_side.json new file mode 100644 index 00000000..00b87f6d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "emeraldcraft:block/purple_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_wall_side_tall.json new file mode 100644 index 00000000..5f9c9786 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_brick_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "emeraldcraft:block/purple_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purple_nether_bricks.json b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_bricks.json new file mode 100644 index 00000000..38e96cad --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purple_nether_bricks.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/purple_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_button.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_button.json new file mode 100644 index 00000000..5557ca88 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_button.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button", + "textures": { + "texture": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_button_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_button_inventory.json new file mode 100644 index 00000000..a745cfeb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button_inventory", + "textures": { + "texture": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_button_pressed.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_button_pressed.json new file mode 100644 index 00000000..074445fd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/button_pressed", + "textures": { + "texture": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_bottom_left.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_bottom_left.json new file mode 100644 index 00000000..a94318b6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_bottom_left.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_bottom_left", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/purpuraceus_door_bottom", + "top": "emeraldcraft:block/purpuraceus_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_bottom_left_open.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_bottom_left_open.json new file mode 100644 index 00000000..db8f7742 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_bottom_left_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_bottom_left_open", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/purpuraceus_door_bottom", + "top": "emeraldcraft:block/purpuraceus_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_bottom_right.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_bottom_right.json new file mode 100644 index 00000000..d799c492 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_bottom_right.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_bottom_right", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/purpuraceus_door_bottom", + "top": "emeraldcraft:block/purpuraceus_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_bottom_right_open.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_bottom_right_open.json new file mode 100644 index 00000000..a49c5059 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_bottom_right_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_bottom_right_open", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/purpuraceus_door_bottom", + "top": "emeraldcraft:block/purpuraceus_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_top_left.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_top_left.json new file mode 100644 index 00000000..64f1721a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_top_left.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_top_left", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/purpuraceus_door_bottom", + "top": "emeraldcraft:block/purpuraceus_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_top_left_open.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_top_left_open.json new file mode 100644 index 00000000..316956ce --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_top_left_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_top_left_open", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/purpuraceus_door_bottom", + "top": "emeraldcraft:block/purpuraceus_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_top_right.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_top_right.json new file mode 100644 index 00000000..b3ccda5e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_top_right.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_top_right", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/purpuraceus_door_bottom", + "top": "emeraldcraft:block/purpuraceus_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_top_right_open.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_top_right_open.json new file mode 100644 index 00000000..a8fb7506 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_door_top_right_open.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/door_top_right_open", + "render_type": "cutout", + "textures": { + "bottom": "emeraldcraft:block/purpuraceus_door_bottom", + "top": "emeraldcraft:block/purpuraceus_door_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_gate.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_gate.json new file mode 100644 index 00000000..0c4db191 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_gate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate", + "textures": { + "texture": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_gate_open.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_gate_open.json new file mode 100644 index 00000000..0ee18722 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_gate_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate_open", + "textures": { + "texture": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_gate_wall.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_gate_wall.json new file mode 100644 index 00000000..7904b5db --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_gate_wall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate_wall", + "textures": { + "texture": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_gate_wall_open.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_gate_wall_open.json new file mode 100644 index 00000000..a2ea1cd0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_gate_wall_open.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_fence_gate_wall_open", + "textures": { + "texture": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_inventory.json new file mode 100644 index 00000000..d844681b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_inventory", + "textures": { + "texture": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_post.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_post.json new file mode 100644 index 00000000..5787a1f6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_post", + "textures": { + "texture": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_side.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_side.json new file mode 100644 index 00000000..20a3ae8b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fence_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/fence_side", + "textures": { + "texture": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fungus.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fungus.json new file mode 100644 index 00000000..ab1bb3e8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_fungus.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cross", + "render_type": "cutout", + "textures": { + "cross": "emeraldcraft:block/purpuraceus_fungus" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_hyphae.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_hyphae.json new file mode 100644 index 00000000..06bc7ad2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_hyphae.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/purpuraceus_stem", + "side": "emeraldcraft:block/purpuraceus_stem" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_nylium.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_nylium.json new file mode 100644 index 00000000..f0fb2e1d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_nylium.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "top": "emeraldcraft:block/purpuraceus_nylium", + "bottom": "minecraft:block/netherrack", + "side": "emeraldcraft:block/purpuraceus_nylium_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_planks.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_planks.json new file mode 100644 index 00000000..c5e179d4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_planks.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_pressure_plate.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_pressure_plate.json new file mode 100644 index 00000000..a5d28fc7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_pressure_plate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate_up", + "textures": { + "texture": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_pressure_plate_down.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_pressure_plate_down.json new file mode 100644 index 00000000..376db02f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/pressure_plate_down", + "textures": { + "texture": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_roots.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_roots.json new file mode 100644 index 00000000..3d0a8d72 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_roots.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cross", + "render_type": "cutout", + "textures": { + "cross": "emeraldcraft:block/purpuraceus_roots" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_sign.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_sign.json new file mode 100644 index 00000000..be93f912 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_sign.json @@ -0,0 +1,5 @@ +{ + "textures": { + "particle": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_slab.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_slab.json new file mode 100644 index 00000000..2c806ca1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/purpuraceus_planks", + "top": "emeraldcraft:block/purpuraceus_planks", + "side": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_slab_top.json new file mode 100644 index 00000000..0bb82f56 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/purpuraceus_planks", + "top": "emeraldcraft:block/purpuraceus_planks", + "side": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_stairs.json new file mode 100644 index 00000000..d06e6eb8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/purpuraceus_planks", + "top": "emeraldcraft:block/purpuraceus_planks", + "side": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_stairs_inner.json new file mode 100644 index 00000000..fb44f7e0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/purpuraceus_planks", + "top": "emeraldcraft:block/purpuraceus_planks", + "side": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_stairs_outer.json new file mode 100644 index 00000000..e7cf5043 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/purpuraceus_planks", + "top": "emeraldcraft:block/purpuraceus_planks", + "side": "emeraldcraft:block/purpuraceus_planks" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_stem.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_stem.json new file mode 100644 index 00000000..0a60656b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_stem.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/purpuraceus_stem_top", + "side": "emeraldcraft:block/purpuraceus_stem" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_trapdoor_bottom.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_trapdoor_bottom.json new file mode 100644 index 00000000..22574198 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_trapdoor_bottom.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/template_orientable_trapdoor_bottom", + "render_type": "cutout", + "textures": { + "texture": "emeraldcraft:block/purpuraceus_trapdoor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_trapdoor_open.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_trapdoor_open.json new file mode 100644 index 00000000..9011cb48 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_trapdoor_open.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/template_orientable_trapdoor_open", + "render_type": "cutout", + "textures": { + "texture": "emeraldcraft:block/purpuraceus_trapdoor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_trapdoor_top.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_trapdoor_top.json new file mode 100644 index 00000000..07abae41 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_trapdoor_top.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/template_orientable_trapdoor_top", + "render_type": "cutout", + "textures": { + "texture": "emeraldcraft:block/purpuraceus_trapdoor" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_wart_block.json b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_wart_block.json new file mode 100644 index 00000000..625dfd59 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/purpuraceus_wart_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/purpuraceus_wart_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/silver_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/silver_stairs.json new file mode 100644 index 00000000..8c3bb5eb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/silver_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_silver", + "top": "immersiveengineering:block/metal/storage_silver", + "side": "immersiveengineering:block/metal/storage_silver" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/silver_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/silver_stairs_inner.json new file mode 100644 index 00000000..b0ba1380 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/silver_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_silver", + "top": "immersiveengineering:block/metal/storage_silver", + "side": "immersiveengineering:block/metal/storage_silver" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/silver_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/silver_stairs_outer.json new file mode 100644 index 00000000..957c2a9b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/silver_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_silver", + "top": "immersiveengineering:block/metal/storage_silver", + "side": "immersiveengineering:block/metal/storage_silver" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/silver_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/silver_wall_inventory.json new file mode 100644 index 00000000..cc6880de --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/silver_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "immersiveengineering:block/metal/storage_silver" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/silver_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/silver_wall_post.json new file mode 100644 index 00000000..660cb7a7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/silver_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "immersiveengineering:block/metal/storage_silver" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/silver_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/silver_wall_side.json new file mode 100644 index 00000000..abb3a8dc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/silver_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "immersiveengineering:block/metal/storage_silver" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/silver_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/silver_wall_side_tall.json new file mode 100644 index 00000000..e739277c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/silver_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "immersiveengineering:block/metal/storage_silver" + } +} \ 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_dark_sandstone.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone.json new file mode 100644 index 00000000..bf27e6f5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/dark_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_slab.json new file mode 100644 index 00000000..2db8d3ef --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_top", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_slab_top.json new file mode 100644 index 00000000..c0b03109 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_top", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs.json new file mode 100644 index 00000000..ed8298a1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_top", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs_inner.json new file mode 100644 index 00000000..ae44a9cd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_top", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_sandstone_top" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs_outer.json new file mode 100644 index 00000000..0c3b9ada --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/smooth_dark_sandstone_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "emeraldcraft:block/dark_sandstone_top", + "top": "emeraldcraft:block/dark_sandstone_top", + "side": "emeraldcraft:block/dark_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/steel_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/steel_stairs.json new file mode 100644 index 00000000..adc410b8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/steel_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_steel", + "top": "immersiveengineering:block/metal/storage_steel", + "side": "immersiveengineering:block/metal/storage_steel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/steel_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/steel_stairs_inner.json new file mode 100644 index 00000000..18505b20 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/steel_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_steel", + "top": "immersiveengineering:block/metal/storage_steel", + "side": "immersiveengineering:block/metal/storage_steel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/steel_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/steel_stairs_outer.json new file mode 100644 index 00000000..a68c9b64 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/steel_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_steel", + "top": "immersiveengineering:block/metal/storage_steel", + "side": "immersiveengineering:block/metal/storage_steel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/steel_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/steel_wall_inventory.json new file mode 100644 index 00000000..a4d072f0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/steel_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "immersiveengineering:block/metal/storage_steel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/steel_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/steel_wall_post.json new file mode 100644 index 00000000..19806455 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/steel_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "immersiveengineering:block/metal/storage_steel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/steel_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/steel_wall_side.json new file mode 100644 index 00000000..5bbf9296 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/steel_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "immersiveengineering:block/metal/storage_steel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/steel_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/steel_wall_side_tall.json new file mode 100644 index 00000000..374115f4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/steel_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "immersiveengineering:block/metal/storage_steel" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_log.json b/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_log.json new file mode 100644 index 00000000..37c4adf5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_log.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/stripped_ginkgo_log_top", + "side": "emeraldcraft:block/stripped_ginkgo_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_log_horizontal.json b/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_log_horizontal.json new file mode 100644 index 00000000..547b3b87 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_log_horizontal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column_horizontal", + "textures": { + "end": "emeraldcraft:block/stripped_ginkgo_log_top", + "side": "emeraldcraft:block/stripped_ginkgo_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_wood.json b/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_wood.json new file mode 100644 index 00000000..9336709e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/stripped_ginkgo_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/stripped_ginkgo_log", + "side": "emeraldcraft:block/stripped_ginkgo_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/stripped_palm_log.json b/src/main/resources/assets/emeraldcraft/models/block/stripped_palm_log.json new file mode 100644 index 00000000..eb09fc44 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/stripped_palm_log.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/stripped_palm_log_top", + "side": "emeraldcraft:block/stripped_palm_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/stripped_palm_log_horizontal.json b/src/main/resources/assets/emeraldcraft/models/block/stripped_palm_log_horizontal.json new file mode 100644 index 00000000..a98c998b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/stripped_palm_log_horizontal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column_horizontal", + "textures": { + "end": "emeraldcraft:block/stripped_palm_log_top", + "side": "emeraldcraft:block/stripped_palm_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/stripped_palm_wood.json b/src/main/resources/assets/emeraldcraft/models/block/stripped_palm_wood.json new file mode 100644 index 00000000..02f5ffd1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/stripped_palm_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/stripped_palm_log", + "side": "emeraldcraft:block/stripped_palm_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/stripped_peach_log.json b/src/main/resources/assets/emeraldcraft/models/block/stripped_peach_log.json new file mode 100644 index 00000000..9ce6e9a3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/stripped_peach_log.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/stripped_peach_log_top", + "side": "emeraldcraft:block/stripped_peach_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/stripped_peach_log_horizontal.json b/src/main/resources/assets/emeraldcraft/models/block/stripped_peach_log_horizontal.json new file mode 100644 index 00000000..f345ea6c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/stripped_peach_log_horizontal.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column_horizontal", + "textures": { + "end": "emeraldcraft:block/stripped_peach_log_top", + "side": "emeraldcraft:block/stripped_peach_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/stripped_peach_wood.json b/src/main/resources/assets/emeraldcraft/models/block/stripped_peach_wood.json new file mode 100644 index 00000000..e22eb6a6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/stripped_peach_wood.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/stripped_peach_log", + "side": "emeraldcraft:block/stripped_peach_log" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/stripped_purpuraceus_hyphae.json b/src/main/resources/assets/emeraldcraft/models/block/stripped_purpuraceus_hyphae.json new file mode 100644 index 00000000..69eacf69 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/stripped_purpuraceus_hyphae.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/stripped_purpuraceus_stem", + "side": "emeraldcraft:block/stripped_purpuraceus_stem" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/stripped_purpuraceus_stem.json b/src/main/resources/assets/emeraldcraft/models/block/stripped_purpuraceus_stem.json new file mode 100644 index 00000000..7660d7a9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/stripped_purpuraceus_stem.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "emeraldcraft:block/stripped_purpuraceus_stem_top", + "side": "emeraldcraft:block/stripped_purpuraceus_stem" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/uranium_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/uranium_stairs.json new file mode 100644 index 00000000..db942d53 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/uranium_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_uranium_top", + "top": "immersiveengineering:block/metal/storage_uranium_top", + "side": "immersiveengineering:block/metal/storage_uranium_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/uranium_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/uranium_stairs_inner.json new file mode 100644 index 00000000..961c77f3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/uranium_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_uranium_top", + "top": "immersiveengineering:block/metal/storage_uranium_top", + "side": "immersiveengineering:block/metal/storage_uranium_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/uranium_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/uranium_stairs_outer.json new file mode 100644 index 00000000..662e2c76 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/uranium_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "immersiveengineering:block/metal/storage_uranium_top", + "top": "immersiveengineering:block/metal/storage_uranium_top", + "side": "immersiveengineering:block/metal/storage_uranium_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/uranium_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/uranium_wall_inventory.json new file mode 100644 index 00000000..a2113b63 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/uranium_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "immersiveengineering:block/metal/storage_uranium_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/uranium_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/uranium_wall_post.json new file mode 100644 index 00000000..b230bdd8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/uranium_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "immersiveengineering:block/metal/storage_uranium_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/uranium_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/uranium_wall_side.json new file mode 100644 index 00000000..f9af908b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/uranium_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "immersiveengineering:block/metal/storage_uranium_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/uranium_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/uranium_wall_side_tall.json new file mode 100644 index 00000000..05b89460 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/uranium_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "immersiveengineering:block/metal/storage_uranium_side" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/vitrified_sand.json b/src/main/resources/assets/emeraldcraft/models/block/vitrified_sand.json new file mode 100644 index 00000000..32fcb0b0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/vitrified_sand.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "emeraldcraft:block/vitrified_sand" + } +} \ 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..64badeb9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage0.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "cutout", + "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..7eba784e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage1.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "cutout", + "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..b4542d84 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/warped_wart_stage2.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/crop", + "render_type": "cutout", + "textures": { + "crop": "emeraldcraft:block/warped_wart_stage2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/zinc_slab.json b/src/main/resources/assets/emeraldcraft/models/block/zinc_slab.json new file mode 100644 index 00000000..9d5d7665 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/zinc_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "create:block/zinc_block", + "top": "create:block/zinc_block", + "side": "create:block/zinc_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/zinc_slab_top.json b/src/main/resources/assets/emeraldcraft/models/block/zinc_slab_top.json new file mode 100644 index 00000000..de1e865e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/zinc_slab_top.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/slab_top", + "textures": { + "bottom": "create:block/zinc_block", + "top": "create:block/zinc_block", + "side": "create:block/zinc_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/zinc_stairs.json b/src/main/resources/assets/emeraldcraft/models/block/zinc_stairs.json new file mode 100644 index 00000000..a0fdbc1e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/zinc_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/stairs", + "textures": { + "bottom": "create:block/zinc_block", + "top": "create:block/zinc_block", + "side": "create:block/zinc_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/zinc_stairs_inner.json b/src/main/resources/assets/emeraldcraft/models/block/zinc_stairs_inner.json new file mode 100644 index 00000000..400e4e05 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/zinc_stairs_inner.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/inner_stairs", + "textures": { + "bottom": "create:block/zinc_block", + "top": "create:block/zinc_block", + "side": "create:block/zinc_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/zinc_stairs_outer.json b/src/main/resources/assets/emeraldcraft/models/block/zinc_stairs_outer.json new file mode 100644 index 00000000..378fb468 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/zinc_stairs_outer.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:block/outer_stairs", + "textures": { + "bottom": "create:block/zinc_block", + "top": "create:block/zinc_block", + "side": "create:block/zinc_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/zinc_wall_inventory.json b/src/main/resources/assets/emeraldcraft/models/block/zinc_wall_inventory.json new file mode 100644 index 00000000..532c5be3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/zinc_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "create:block/zinc_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/zinc_wall_post.json b/src/main/resources/assets/emeraldcraft/models/block/zinc_wall_post.json new file mode 100644 index 00000000..94d61c53 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/zinc_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "create:block/zinc_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/zinc_wall_side.json b/src/main/resources/assets/emeraldcraft/models/block/zinc_wall_side.json new file mode 100644 index 00000000..1eba7910 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/zinc_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "create:block/zinc_block" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/block/zinc_wall_side_tall.json b/src/main/resources/assets/emeraldcraft/models/block/zinc_wall_side_tall.json new file mode 100644 index 00000000..86334c84 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/block/zinc_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "create:block/zinc_block" + } +} \ 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/aluminum_concentrate.json b/src/main/resources/assets/emeraldcraft/models/item/aluminum_concentrate.json new file mode 100644 index 00000000..2807a5be --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/aluminum_concentrate.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/aluminum_concentrate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/aluminum_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/aluminum_stairs.json new file mode 100644 index 00000000..d66d68a7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/aluminum_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/aluminum_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/aluminum_wall.json b/src/main/resources/assets/emeraldcraft/models/item/aluminum_wall.json new file mode 100644 index 00000000..770d143e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/aluminum_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/aluminum_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/apple_juice.json b/src/main/resources/assets/emeraldcraft/models/item/apple_juice.json new file mode 100644 index 00000000..e1acf15f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/apple_juice.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/apple_juice" + } +} \ 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/beef_and_potato_stew.json b/src/main/resources/assets/emeraldcraft/models/item/beef_and_potato_stew.json new file mode 100644 index 00000000..f5fe3f04 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/beef_and_potato_stew.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/beef_and_potato_stew" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/beetroot_juice.json b/src/main/resources/assets/emeraldcraft/models/item/beetroot_juice.json new file mode 100644 index 00000000..639f625a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/beetroot_juice.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/beetroot_juice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/bigeye_bucket.json b/src/main/resources/assets/emeraldcraft/models/item/bigeye_bucket.json new file mode 100644 index 00000000..b9c71e86 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/bigeye_bucket.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/bigeye_bucket" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/bigeye_spawn_egg.json b/src/main/resources/assets/emeraldcraft/models/item/bigeye_spawn_egg.json new file mode 100644 index 00000000..7a2c6da8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/bigeye_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/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/boiled_egg.json b/src/main/resources/assets/emeraldcraft/models/item/boiled_egg.json new file mode 100644 index 00000000..b1d4d235 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/boiled_egg.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/boiled_egg" + } +} \ 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/braised_chicken.json b/src/main/resources/assets/emeraldcraft/models/item/braised_chicken.json new file mode 100644 index 00000000..2f3b4404 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/braised_chicken.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/braised_chicken" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/caramelized_potato.json b/src/main/resources/assets/emeraldcraft/models/item/caramelized_potato.json new file mode 100644 index 00000000..79f57d1f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/caramelized_potato.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/caramelized_potato" + } +} \ 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/carrot_juice.json b/src/main/resources/assets/emeraldcraft/models/item/carrot_juice.json new file mode 100644 index 00000000..49e33702 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/carrot_juice.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/carrot_juice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/chili.json b/src/main/resources/assets/emeraldcraft/models/item/chili.json new file mode 100644 index 00000000..812d5d76 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/chili.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/chili" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/chili_seed.json b/src/main/resources/assets/emeraldcraft/models/item/chili_seed.json new file mode 100644 index 00000000..d42814a3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/chili_seed.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/chili_seed" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/chorus_flower_eggdrop_soup.json b/src/main/resources/assets/emeraldcraft/models/item/chorus_flower_eggdrop_soup.json new file mode 100644 index 00000000..3bf4741a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/chorus_flower_eggdrop_soup.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/chorus_flower_eggdrop_soup" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/constantan_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/constantan_stairs.json new file mode 100644 index 00000000..5feab9b2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/constantan_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/constantan_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/constantan_wall.json b/src/main/resources/assets/emeraldcraft/models/item/constantan_wall.json new file mode 100644 index 00000000..51f6bf0b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/constantan_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/constantan_wall_inventory" +} \ 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/cooked_herring.json b/src/main/resources/assets/emeraldcraft/models/item/cooked_herring.json new file mode 100644 index 00000000..f5bbc18a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cooked_herring.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/cooked_herring" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cooked_purple_spotted_bigeye.json b/src/main/resources/assets/emeraldcraft/models/item/cooked_purple_spotted_bigeye.json new file mode 100644 index 00000000..ee1dc1f8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cooked_purple_spotted_bigeye.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/cooked_purple_spotted_bigeye" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cooked_purpuraceus_fungus.json b/src/main/resources/assets/emeraldcraft/models/item/cooked_purpuraceus_fungus.json new file mode 100644 index 00000000..bc834290 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cooked_purpuraceus_fungus.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/cooked_purpuraceus_fungus" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cooked_sausage.json b/src/main/resources/assets/emeraldcraft/models/item/cooked_sausage.json new file mode 100644 index 00000000..08ec7449 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cooked_sausage.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/cooked_sausage" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cooked_tropical_fish.json b/src/main/resources/assets/emeraldcraft/models/item/cooked_tropical_fish.json new file mode 100644 index 00000000..806baa1f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cooked_tropical_fish.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/cooked_tropical_fish" + } +} \ 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_dark_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/cut_dark_sandstone.json new file mode 100644 index 00000000..f1530e4c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_dark_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_dark_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/cut_dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/cut_dark_sandstone_slab.json new file mode 100644 index 00000000..4f6c8b96 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cut_dark_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/cut_dark_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/cyan_petunia.json b/src/main/resources/assets/emeraldcraft/models/item/cyan_petunia.json new file mode 100644 index 00000000..7e013e2a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/cyan_petunia.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:block/cyan_petunia" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/dark_sand.json b/src/main/resources/assets/emeraldcraft/models/item/dark_sand.json new file mode 100644 index 00000000..c6798514 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/dark_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/dark_sand" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone.json new file mode 100644 index 00000000..56d918a2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/dark_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_slab.json new file mode 100644 index 00000000..fd215697 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/dark_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_stairs.json new file mode 100644 index 00000000..df7392b4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/dark_sandstone_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_wall.json b/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_wall.json new file mode 100644 index 00000000..97e1a125 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/dark_sandstone_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/dark_sandstone_wall_inventory" +} \ 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/electrum_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/electrum_stairs.json new file mode 100644 index 00000000..5123c74e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/electrum_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/electrum_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/electrum_wall.json b/src/main/resources/assets/emeraldcraft/models/item/electrum_wall.json new file mode 100644 index 00000000..46761119 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/electrum_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/electrum_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/ginkgo_boat.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_boat.json new file mode 100644 index 00000000..c1a94f4f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/ginkgo_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_button.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_button.json new file mode 100644 index 00000000..cf272b64 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_button.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_chest_boat.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_chest_boat.json new file mode 100644 index 00000000..1d06c7b9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_chest_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/ginkgo_chest_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_door.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_door.json new file mode 100644 index 00000000..a536cc56 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_door.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/ginkgo_door" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_fence.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_fence.json new file mode 100644 index 00000000..6cdd13c6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_fence_gate.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_fence_gate.json new file mode 100644 index 00000000..a3c2d379 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_leaves.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_leaves.json new file mode 100644 index 00000000..81ae3bdc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_leaves" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_log.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_log.json new file mode 100644 index 00000000..6258f146 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_log.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_log" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_nut.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_nut.json new file mode 100644 index 00000000..38738e9c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_nut.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/ginkgo_nut" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_planks.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_planks.json new file mode 100644 index 00000000..16e98db7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_planks" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_pressure_plate.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_pressure_plate.json new file mode 100644 index 00000000..eefa42cd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_sapling.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_sapling.json new file mode 100644 index 00000000..b1830106 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:block/ginkgo_sapling" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_sign.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_sign.json new file mode 100644 index 00000000..5cc5daac --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/ginkgo_sign" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_slab.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_slab.json new file mode 100644 index 00000000..02de10f8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_stairs.json new file mode 100644 index 00000000..583133da --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_trapdoor.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_trapdoor.json new file mode 100644 index 00000000..01b2f425 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_trapdoor_bottom" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/ginkgo_wood.json b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_wood.json new file mode 100644 index 00000000..08fa6f98 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/ginkgo_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/ginkgo_wood" +} \ 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/gluten.json b/src/main/resources/assets/emeraldcraft/models/item/gluten.json new file mode 100644 index 00000000..cc8e5fa9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/gluten.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/gluten" + } +} \ 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/golden_peach.json b/src/main/resources/assets/emeraldcraft/models/item/golden_peach.json new file mode 100644 index 00000000..c5e404ab --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/golden_peach.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/golden_peach" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/herring.json b/src/main/resources/assets/emeraldcraft/models/item/herring.json new file mode 100644 index 00000000..a3bfdc6c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/herring.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/herring" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/herring_bucket.json b/src/main/resources/assets/emeraldcraft/models/item/herring_bucket.json new file mode 100644 index 00000000..98e635b1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/herring_bucket.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/herring_bucket" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/herring_spawn_egg.json b/src/main/resources/assets/emeraldcraft/models/item/herring_spawn_egg.json new file mode 100644 index 00000000..7a2c6da8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/herring_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/higan_bana.json b/src/main/resources/assets/emeraldcraft/models/item/higan_bana.json new file mode 100644 index 00000000..ec637882 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/higan_bana.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:block/higan_bana" + } +} \ 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/lead_concentrate.json b/src/main/resources/assets/emeraldcraft/models/item/lead_concentrate.json new file mode 100644 index 00000000..ed08696b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lead_concentrate.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/lead_concentrate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lead_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/lead_stairs.json new file mode 100644 index 00000000..f3f94a93 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lead_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/lead_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/lead_wall.json b/src/main/resources/assets/emeraldcraft/models/item/lead_wall.json new file mode 100644 index 00000000..64dffedf --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/lead_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/lead_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/magenta_petunia.json b/src/main/resources/assets/emeraldcraft/models/item/magenta_petunia.json new file mode 100644 index 00000000..99bb5fa1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/magenta_petunia.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:block/magenta_petunia" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/manta_spawn_egg.json b/src/main/resources/assets/emeraldcraft/models/item/manta_spawn_egg.json new file mode 100644 index 00000000..7a2c6da8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/manta_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/melon_juice.json b/src/main/resources/assets/emeraldcraft/models/item/melon_juice.json new file mode 100644 index 00000000..dc9e149c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melon_juice.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/melon_juice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/melted_aluminum_bucket.json b/src/main/resources/assets/emeraldcraft/models/item/melted_aluminum_bucket.json new file mode 100644 index 00000000..a8547065 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melted_aluminum_bucket.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/melted_aluminum_bucket" + } +} \ 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/melted_lead_bucket.json b/src/main/resources/assets/emeraldcraft/models/item/melted_lead_bucket.json new file mode 100644 index 00000000..ffab0210 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melted_lead_bucket.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/melted_lead_bucket" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/melted_nickel_bucket.json b/src/main/resources/assets/emeraldcraft/models/item/melted_nickel_bucket.json new file mode 100644 index 00000000..8d52e80c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melted_nickel_bucket.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/melted_nickel_bucket" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/melted_silver_bucket.json b/src/main/resources/assets/emeraldcraft/models/item/melted_silver_bucket.json new file mode 100644 index 00000000..26af4468 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melted_silver_bucket.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/melted_silver_bucket" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/melted_uranium_bucket.json b/src/main/resources/assets/emeraldcraft/models/item/melted_uranium_bucket.json new file mode 100644 index 00000000..3b8ea300 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melted_uranium_bucket.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/melted_uranium_bucket" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/melted_zinc_bucket.json b/src/main/resources/assets/emeraldcraft/models/item/melted_zinc_bucket.json new file mode 100644 index 00000000..590f6bd1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/melted_zinc_bucket.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/melted_zinc_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/nickel_concentrate.json b/src/main/resources/assets/emeraldcraft/models/item/nickel_concentrate.json new file mode 100644 index 00000000..f81b2225 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/nickel_concentrate.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/nickel_concentrate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/nickel_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/nickel_stairs.json new file mode 100644 index 00000000..5b77aba4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/nickel_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/nickel_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/nickel_wall.json b/src/main/resources/assets/emeraldcraft/models/item/nickel_wall.json new file mode 100644 index 00000000..940b2711 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/nickel_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/nickel_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_boat.json b/src/main/resources/assets/emeraldcraft/models/item/palm_boat.json new file mode 100644 index 00000000..9ee5c69c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/palm_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_button.json b/src/main/resources/assets/emeraldcraft/models/item/palm_button.json new file mode 100644 index 00000000..41c3a444 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_button.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/palm_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_chest_boat.json b/src/main/resources/assets/emeraldcraft/models/item/palm_chest_boat.json new file mode 100644 index 00000000..df1e6986 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_chest_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/palm_chest_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_door.json b/src/main/resources/assets/emeraldcraft/models/item/palm_door.json new file mode 100644 index 00000000..6f764692 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_door.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/palm_door" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_fence.json b/src/main/resources/assets/emeraldcraft/models/item/palm_fence.json new file mode 100644 index 00000000..f4f38c62 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/palm_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_fence_gate.json b/src/main/resources/assets/emeraldcraft/models/item/palm_fence_gate.json new file mode 100644 index 00000000..cdad55e1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/palm_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_leaves.json b/src/main/resources/assets/emeraldcraft/models/item/palm_leaves.json new file mode 100644 index 00000000..70feb9a3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/palm_leaves" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_log.json b/src/main/resources/assets/emeraldcraft/models/item/palm_log.json new file mode 100644 index 00000000..a031f6e2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_log.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/palm_log" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_nut.json b/src/main/resources/assets/emeraldcraft/models/item/palm_nut.json new file mode 100644 index 00000000..6ad74ffc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_nut.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/palm_nut" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_planks.json b/src/main/resources/assets/emeraldcraft/models/item/palm_planks.json new file mode 100644 index 00000000..a6ec559f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/palm_planks" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_pressure_plate.json b/src/main/resources/assets/emeraldcraft/models/item/palm_pressure_plate.json new file mode 100644 index 00000000..b764a0f9 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/palm_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_sapling.json b/src/main/resources/assets/emeraldcraft/models/item/palm_sapling.json new file mode 100644 index 00000000..43c655d1 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:block/palm_sapling" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_sign.json b/src/main/resources/assets/emeraldcraft/models/item/palm_sign.json new file mode 100644 index 00000000..6feae4d2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/palm_sign" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_slab.json b/src/main/resources/assets/emeraldcraft/models/item/palm_slab.json new file mode 100644 index 00000000..43cf2e1e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/palm_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/palm_stairs.json new file mode 100644 index 00000000..989567e3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/palm_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_trapdoor.json b/src/main/resources/assets/emeraldcraft/models/item/palm_trapdoor.json new file mode 100644 index 00000000..83672095 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/palm_trapdoor_bottom" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/palm_wood.json b/src/main/resources/assets/emeraldcraft/models/item/palm_wood.json new file mode 100644 index 00000000..2b696e6e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/palm_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/palm_wood" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach.json b/src/main/resources/assets/emeraldcraft/models/item/peach.json new file mode 100644 index 00000000..3de0629c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/peach" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_boat.json b/src/main/resources/assets/emeraldcraft/models/item/peach_boat.json new file mode 100644 index 00000000..184630e4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/peach_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_button.json b/src/main/resources/assets/emeraldcraft/models/item/peach_button.json new file mode 100644 index 00000000..b4f13af2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_button.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/peach_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_chest_boat.json b/src/main/resources/assets/emeraldcraft/models/item/peach_chest_boat.json new file mode 100644 index 00000000..e0f8778e --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_chest_boat.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/peach_chest_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_door.json b/src/main/resources/assets/emeraldcraft/models/item/peach_door.json new file mode 100644 index 00000000..4f76eb66 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_door.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/peach_door" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_fence.json b/src/main/resources/assets/emeraldcraft/models/item/peach_fence.json new file mode 100644 index 00000000..7fa1a020 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/peach_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_fence_gate.json b/src/main/resources/assets/emeraldcraft/models/item/peach_fence_gate.json new file mode 100644 index 00000000..f13eb283 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/peach_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_juice.json b/src/main/resources/assets/emeraldcraft/models/item/peach_juice.json new file mode 100644 index 00000000..ffddb4a4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_juice.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/peach_juice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_leaves.json b/src/main/resources/assets/emeraldcraft/models/item/peach_leaves.json new file mode 100644 index 00000000..f1c8da3a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_leaves.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/peach_leaves" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_log.json b/src/main/resources/assets/emeraldcraft/models/item/peach_log.json new file mode 100644 index 00000000..3dcb55b7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_log.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/peach_log" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_planks.json b/src/main/resources/assets/emeraldcraft/models/item/peach_planks.json new file mode 100644 index 00000000..3c273eb6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/peach_planks" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_pressure_plate.json b/src/main/resources/assets/emeraldcraft/models/item/peach_pressure_plate.json new file mode 100644 index 00000000..fa8f7be8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/peach_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_sapling.json b/src/main/resources/assets/emeraldcraft/models/item/peach_sapling.json new file mode 100644 index 00000000..8010f922 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_sapling.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:block/peach_sapling" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_sign.json b/src/main/resources/assets/emeraldcraft/models/item/peach_sign.json new file mode 100644 index 00000000..bd7cf482 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/peach_sign" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_slab.json b/src/main/resources/assets/emeraldcraft/models/item/peach_slab.json new file mode 100644 index 00000000..96e7dbe8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/peach_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/peach_stairs.json new file mode 100644 index 00000000..41d1605c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/peach_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_trapdoor.json b/src/main/resources/assets/emeraldcraft/models/item/peach_trapdoor.json new file mode 100644 index 00000000..fc93d71f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/peach_trapdoor_bottom" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/peach_wood.json b/src/main/resources/assets/emeraldcraft/models/item/peach_wood.json new file mode 100644 index 00000000..65356543 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/peach_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/peach_wood" +} \ 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/potion_cookie.json b/src/main/resources/assets/emeraldcraft/models/item/potion_cookie.json new file mode 100644 index 00000000..c1addfd8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/potion_cookie.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/cookie" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/pumpkin_juice.json b/src/main/resources/assets/emeraldcraft/models/item/pumpkin_juice.json new file mode 100644 index 00000000..69a11458 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/pumpkin_juice.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/pumpkin_juice" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purple_nether_brick_slab.json b/src/main/resources/assets/emeraldcraft/models/item/purple_nether_brick_slab.json new file mode 100644 index 00000000..0f605d76 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purple_nether_brick_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/purple_nether_brick_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purple_nether_brick_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/purple_nether_brick_stairs.json new file mode 100644 index 00000000..572389b2 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purple_nether_brick_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/purple_nether_brick_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purple_nether_brick_wall.json b/src/main/resources/assets/emeraldcraft/models/item/purple_nether_brick_wall.json new file mode 100644 index 00000000..270a001b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purple_nether_brick_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/purple_nether_brick_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purple_nether_bricks.json b/src/main/resources/assets/emeraldcraft/models/item/purple_nether_bricks.json new file mode 100644 index 00000000..dc2598a3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purple_nether_bricks.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/purple_nether_bricks" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purple_spotted_bigeye.json b/src/main/resources/assets/emeraldcraft/models/item/purple_spotted_bigeye.json new file mode 100644 index 00000000..0888c28d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purple_spotted_bigeye.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/purple_spotted_bigeye" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_button.json b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_button.json new file mode 100644 index 00000000..a89a3020 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_button.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/purpuraceus_button_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_door.json b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_door.json new file mode 100644 index 00000000..bc36e6ac --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_door.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/purpuraceus_door" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_fence.json b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_fence.json new file mode 100644 index 00000000..e19390f0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_fence.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/purpuraceus_fence_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_fence_gate.json b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_fence_gate.json new file mode 100644 index 00000000..e2119bf4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_fence_gate.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/purpuraceus_fence_gate" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_fungus.json b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_fungus.json new file mode 100644 index 00000000..8e99571b --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_fungus.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:block/purpuraceus_fungus" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_hyphae.json b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_hyphae.json new file mode 100644 index 00000000..6c38e970 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_hyphae.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/purpuraceus_hyphae" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_nylium.json b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_nylium.json new file mode 100644 index 00000000..6e8e0f29 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_nylium.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/purpuraceus_nylium" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_planks.json b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_planks.json new file mode 100644 index 00000000..9bad6bf5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_planks.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/purpuraceus_planks" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_pressure_plate.json b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_pressure_plate.json new file mode 100644 index 00000000..89bf4e6d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_pressure_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/purpuraceus_pressure_plate" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_roots.json b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_roots.json new file mode 100644 index 00000000..52141b29 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_roots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:block/purpuraceus_roots" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_sign.json b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_sign.json new file mode 100644 index 00000000..076d23c3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_sign.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "emeraldcraft:item/purpuraceus_sign" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_slab.json b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_slab.json new file mode 100644 index 00000000..a0ca8c83 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/purpuraceus_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_stairs.json new file mode 100644 index 00000000..02e77ce4 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/purpuraceus_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_stem.json b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_stem.json new file mode 100644 index 00000000..e3d6ae80 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_stem.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/purpuraceus_stem" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_trapdoor.json b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_trapdoor.json new file mode 100644 index 00000000..6e58fd20 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_trapdoor.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/purpuraceus_trapdoor_bottom" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_wart_block.json b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_wart_block.json new file mode 100644 index 00000000..aa8caec3 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/purpuraceus_wart_block.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/purpuraceus_wart_block" +} \ 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/rougamo.json b/src/main/resources/assets/emeraldcraft/models/item/rougamo.json new file mode 100644 index 00000000..f9849120 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/rougamo.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/rougamo" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/sausage.json b/src/main/resources/assets/emeraldcraft/models/item/sausage.json new file mode 100644 index 00000000..85844505 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/sausage.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/sausage" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/silver_concentrate.json b/src/main/resources/assets/emeraldcraft/models/item/silver_concentrate.json new file mode 100644 index 00000000..f012b30c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/silver_concentrate.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/silver_concentrate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/silver_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/silver_stairs.json new file mode 100644 index 00000000..920fe95d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/silver_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/silver_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/silver_wall.json b/src/main/resources/assets/emeraldcraft/models/item/silver_wall.json new file mode 100644 index 00000000..65b4b1e0 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/silver_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/silver_wall_inventory" +} \ 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_dark_sandstone.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone.json new file mode 100644 index 00000000..47803630 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_dark_sandstone" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone_slab.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone_slab.json new file mode 100644 index 00000000..244d55de --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_dark_sandstone_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone_stairs.json new file mode 100644 index 00000000..774e2f7a --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/smooth_dark_sandstone_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/smooth_dark_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/steel_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/steel_stairs.json new file mode 100644 index 00000000..19cc3f7c --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/steel_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/steel_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/steel_wall.json b/src/main/resources/assets/emeraldcraft/models/item/steel_wall.json new file mode 100644 index 00000000..9e5d4652 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/steel_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/steel_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/stir_fried_warden_heart.json b/src/main/resources/assets/emeraldcraft/models/item/stir_fried_warden_heart.json new file mode 100644 index 00000000..0c413394 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/stir_fried_warden_heart.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/stir_fried_warden_heart" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/stripped_ginkgo_log.json b/src/main/resources/assets/emeraldcraft/models/item/stripped_ginkgo_log.json new file mode 100644 index 00000000..1b133fdd --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/stripped_ginkgo_log.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/stripped_ginkgo_log" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/stripped_ginkgo_wood.json b/src/main/resources/assets/emeraldcraft/models/item/stripped_ginkgo_wood.json new file mode 100644 index 00000000..106043bb --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/stripped_ginkgo_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/stripped_ginkgo_wood" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/stripped_palm_log.json b/src/main/resources/assets/emeraldcraft/models/item/stripped_palm_log.json new file mode 100644 index 00000000..1e491686 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/stripped_palm_log.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/stripped_palm_log" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/stripped_palm_wood.json b/src/main/resources/assets/emeraldcraft/models/item/stripped_palm_wood.json new file mode 100644 index 00000000..e4568d96 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/stripped_palm_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/stripped_palm_wood" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/stripped_peach_log.json b/src/main/resources/assets/emeraldcraft/models/item/stripped_peach_log.json new file mode 100644 index 00000000..daf199cc --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/stripped_peach_log.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/stripped_peach_log" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/stripped_peach_wood.json b/src/main/resources/assets/emeraldcraft/models/item/stripped_peach_wood.json new file mode 100644 index 00000000..6436777d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/stripped_peach_wood.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/stripped_peach_wood" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/stripped_purpuraceus_hyphae.json b/src/main/resources/assets/emeraldcraft/models/item/stripped_purpuraceus_hyphae.json new file mode 100644 index 00000000..fbd2a58d --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/stripped_purpuraceus_hyphae.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/stripped_purpuraceus_hyphae" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/stripped_purpuraceus_stem.json b/src/main/resources/assets/emeraldcraft/models/item/stripped_purpuraceus_stem.json new file mode 100644 index 00000000..aaff89be --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/stripped_purpuraceus_stem.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/stripped_purpuraceus_stem" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/uranium_concentrate.json b/src/main/resources/assets/emeraldcraft/models/item/uranium_concentrate.json new file mode 100644 index 00000000..71861eb5 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/uranium_concentrate.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/uranium_concentrate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/uranium_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/uranium_stairs.json new file mode 100644 index 00000000..961c9b39 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/uranium_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/uranium_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/uranium_wall.json b/src/main/resources/assets/emeraldcraft/models/item/uranium_wall.json new file mode 100644 index 00000000..272ddca8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/uranium_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/uranium_wall_inventory" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/vitrified_sand.json b/src/main/resources/assets/emeraldcraft/models/item/vitrified_sand.json new file mode 100644 index 00000000..a2ea017f --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/vitrified_sand.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/vitrified_sand" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/warden_heart.json b/src/main/resources/assets/emeraldcraft/models/item/warden_heart.json new file mode 100644 index 00000000..4c313ded --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/warden_heart.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/warden_heart" + } +} \ 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/models/item/wraith_spawn_egg.json b/src/main/resources/assets/emeraldcraft/models/item/wraith_spawn_egg.json new file mode 100644 index 00000000..7a2c6da8 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/wraith_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/zinc_concentrate.json b/src/main/resources/assets/emeraldcraft/models/item/zinc_concentrate.json new file mode 100644 index 00000000..2a3ee2c7 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/zinc_concentrate.json @@ -0,0 +1,6 @@ +{ + "parent":"item/generated", + "textures": { + "layer0":"emeraldcraft:item/zinc_concentrate" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/zinc_slab.json b/src/main/resources/assets/emeraldcraft/models/item/zinc_slab.json new file mode 100644 index 00000000..7ed94fb6 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/zinc_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/zinc_slab" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/zinc_stairs.json b/src/main/resources/assets/emeraldcraft/models/item/zinc_stairs.json new file mode 100644 index 00000000..fb238375 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/zinc_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/zinc_stairs" +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/models/item/zinc_wall.json b/src/main/resources/assets/emeraldcraft/models/item/zinc_wall.json new file mode 100644 index 00000000..d1508257 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/models/item/zinc_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "emeraldcraft:block/zinc_wall_inventory" +} \ 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..34e45257 --- /dev/null +++ b/src/main/resources/assets/emeraldcraft/sounds.json @@ -0,0 +1,336 @@ +{ + "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" + }, + "flower.drop_leaves": { + "category": "block", + "sounds": [ + "emeraldcraft:flower/drop_leaves1", + "emeraldcraft:flower/drop_leaves2", + "emeraldcraft:flower/drop_leaves3" + ], + "subtitle": "subtitles.block.flower.drop_leaves" + }, + "herring.ambient": { + "category": "entity", + "sounds": [ + ] + }, + "purple_spotted_bigeye.ambient": { + "category": "entity", + "sounds": [ + ] + }, + "herring.flop": { + "category": "entity", + "sounds": [ + "emeraldcraft:fish/flop1", + "emeraldcraft:fish/flop2", + "emeraldcraft:fish/flop3", + "emeraldcraft:fish/flop4" + ], + "subtitle": "subtitles.entity.herring.flop" + }, + "purple_spotted_bigeye.flop": { + "category": "entity", + "sounds": [ + "emeraldcraft:fish/flop1", + "emeraldcraft:fish/flop2", + "emeraldcraft:fish/flop3", + "emeraldcraft:fish/flop4" + ], + "subtitle": "subtitles.entity.purple_spotted_bigeye.flop" + }, + "herring.hurt": { + "category": "entity", + "sounds": [ + "emeraldcraft:fish/hurt1", + "emeraldcraft:fish/hurt2", + "emeraldcraft:fish/hurt3", + "emeraldcraft:fish/hurt4" + ], + "subtitle": "subtitles.entity.herring.hurt" + }, + "purple_spotted_bigeye.hurt": { + "category": "entity", + "sounds": [ + "emeraldcraft:fish/hurt1", + "emeraldcraft:fish/hurt2", + "emeraldcraft:fish/hurt3", + "emeraldcraft:fish/hurt4" + ], + "subtitle": "subtitles.entity.purple_spotted_bigeye.hurt" + }, + "herring.death": { + "category": "entity", + "sounds": [ + "emeraldcraft:fish/hurt1", + "emeraldcraft:fish/hurt2", + "emeraldcraft:fish/hurt3", + "emeraldcraft:fish/hurt4" + ], + "subtitle": "subtitles.entity.herring.death" + }, + "purple_spotted_bigeye.death": { + "category": "entity", + "sounds": [ + "emeraldcraft:fish/hurt1", + "emeraldcraft:fish/hurt2", + "emeraldcraft:fish/hurt3", + "emeraldcraft:fish/hurt4" + ], + "subtitle": "subtitles.entity.purple_spotted_bigeye.death" + }, + "wraith.ambient": { + "category": "entity", + "sounds": [ + "emeraldcraft:wraith/ambient" + ], + "subtitle": "subtitles.entity.wraith.ambient" + }, + "wraith.hurt": { + "category": "entity", + "sounds": [ + "emeraldcraft:wraith/hurt" + ], + "subtitle": "subtitles.entity.wraith.hurt" + }, + "wraith.death": { + "category": "entity", + "sounds": [ + "emeraldcraft:wraith/hurt" + ], + "subtitle": "subtitles.entity.wraith.death" + }, + "manta.ambient": { + "category": "entity", + "sounds": [ + "emeraldcraft:manta/ambient1", + "emeraldcraft:manta/ambient2" + ], + "subtitle": "subtitles.entity.manta.ambient" + }, + "manta.hurt": { + "category": "entity", + "sounds": [ + "emeraldcraft:manta/hurt1", + "emeraldcraft:manta/hurt2" + ], + "subtitle": "subtitles.entity.manta.hurt" + }, + "manta.death": { + "category": "entity", + "sounds": [ + "emeraldcraft:manta/hurt1", + "emeraldcraft:manta/hurt2" + ], + "subtitle": "subtitles.entity.manta.death" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/emeraldcraft/sounds/fish/flop1.ogg b/src/main/resources/assets/emeraldcraft/sounds/fish/flop1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..8709c02c48f195e52ca82eacdf15c1cee8f2eb52 GIT binary patch literal 14125 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 Z(%9x69dG7cCSx4yn%)Y$Fp>sv{}*3e`TPI? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/fish/flop2.ogg b/src/main/resources/assets/emeraldcraft/sounds/fish/flop2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..60a3adad04c9a415269254df901c4742fb1123f2 GIT binary patch literal 15242 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 EFDdtQWB>pF literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/fish/flop3.ogg b/src/main/resources/assets/emeraldcraft/sounds/fish/flop3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..a15b1ce8d995d5830f728156e9d16a4903e4f1f3 GIT binary patch literal 11320 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 T^z*$XSdx!&?dM8L0PlYRQJZA( literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/fish/hurt1.ogg b/src/main/resources/assets/emeraldcraft/sounds/fish/hurt1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..d5c81c5149d011ddd331b2cd56e8b8e5cd94a951 GIT binary patch literal 17697 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/fish/hurt2.ogg b/src/main/resources/assets/emeraldcraft/sounds/fish/hurt2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..597bd4a157e12cfe56be9cb0b16efddadf612cd0 GIT binary patch literal 19945 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 QLl?eDPnpc;)Y4-5U%4e0UjP6A literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/fish/hurt4.ogg b/src/main/resources/assets/emeraldcraft/sounds/fish/hurt4.ogg new file mode 100644 index 0000000000000000000000000000000000000000..bba3155534b322f0e889b0854c0b9ce7d96f5992 GIT binary patch literal 21995 zcmb@tbyQqU(=R$mf)hv}xCVl2aF>MOkip&EJ$Mo{IKhHLU~moY?(Po3-CYLGhCI*v zz4zR^&iUu=wdvK}RbAC3zwVwMM$W`U0R#*B=V3tkTM_iAG=d?9akjD7H*^Jqp8b_XCnBm0140CP zSfoiiz6?hwfj}4_kS+xcdX%vQ4J109+Vy9&_+zbu`TNi4?;W@XAuOH$7Nl&3*dP!* z=nFMcSjL8g`5?CmE>)O)8n>A&S2ig^(5FA#NUi5@4Xm@uvn;F!X($oV)SiI=KM9GG z`C)+{3;jSce_WslAhho$%TBUKrp-zFhRoVc>Lbm%of##|vz?O>#?+MKa{ON_+`r&_{R?10hL0{GMfyQb^CLqd%hiaSKSrq&giW8Z1cz`HLtZsHBDw!q4%ZK;r+?zLzE&K*fIt?ucRtlW63> z-l1c{PcJEfcZ8Ke;T^w{qLPZUm0FzBT$P{JwA0d*=h9TD4vzo-o>>1u4hR5^?-M4Y z^+Q;?l6+)Ekp2evU*yA2?x?J7pVr_2Cnni~_dS2)5JMYa;~? ztuc0^F(so3XQP=)BaJFgwaR}0^A|QtQ%?VdoJWX|bBC>p|A7A=*W{eGRYzzp52Lf$%0A9!VkrAto(WuhPP0fC(&0>tzzUU75DI8{h6t6GI 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 C1%JE% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/flower/drop_leaves1.ogg b/src/main/resources/assets/emeraldcraft/sounds/flower/drop_leaves1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f1d1c25084e865d3362771922ce78148c9512d95 GIT binary patch literal 16467 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 W0HZUa`Yo%2I4_;_^|+r1;Qs-DKn9Hf literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/flower/drop_leaves2.ogg b/src/main/resources/assets/emeraldcraft/sounds/flower/drop_leaves2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..90689466d5dafa827f230ce5a589453cf5a451be GIT binary patch literal 16267 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/manta/ambient1.ogg b/src/main/resources/assets/emeraldcraft/sounds/manta/ambient1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f207e5ea1058899f57a8f7b359d441b230b869bb GIT binary patch literal 44869 zcmb@tby!tT*D$;ZNeKm%4k-_af`HO3-QC@XMmkkWy1U`fozf`X-7VcH-S39qec#Xh ze1Ck``^P)iKKraaYi7-?m^Eu=&z3PUQ2^k9eoe8;xnZEKP zb#gKC_l!)8OyEWSTEW0n&%xNp%E83M=riPj-gEHxNm@`w=#xA*SjXPV(Adnv2=2*0 zB&h@hmEizB0KgZ(rh8Is5X#YwM-fbrnJ&-^=^_yrrpTfa4B+Tw?ZP(@sWS`|==m}n zt^_<($R<{iwG(65Ot#O$SLwIiA_t*$a+7{rRB8|kW#5dn3uXETi)jaWDE9?dB+xb& zAB3`rK`8G5vSg}_v>Rjxp$&3>dAkzU2Q0n`rXBhNmCgrxyAPCuS!>7tDfd|T@fQ3* z{t>cb+I(SO@<0WAB>pFloW&3i2nT@ljMss`Ut?kuR-ggh0D#SBiz^a=D^X6|H$sJh zf}!>V)D3_FmJ{{M77c`{h8mlt(zs^6PRyh$tT5}Xc+*$0TmSa4x+nn1%Hej{;37ZP zGXww>-PeIxY@utakubGXWFNmGc)%L~5W#X!Maprd{!k75(_A3I!p7V2b>6O|%yR#Lomt1O^53Vc(V^zSIVz3Pt=V6z+%I=ZkKK|EK^P0Q7L# z0={%np-}kfZ^RX zq{fA$@RTN$ET_&ab`Ct>0VNUAe@Fbu$_DefAD2!v-Pig$-I1)4)(3Mi0#SoAPcXLin{ zIvuQv6ja_bKnQdZC={L81_4Y+6yLC!I>|p{zv?9Rc`ATJ5sfR}L+1#DFS=CkB6Se89dS0=Dn~iohU6C%I5CKMHj=u7D^+|Ea)6a&$jC1QtCh z0LlLp%-@|H70FIZ9X%=!fmO?jLmv^KVVO%6cMyu3F+`85gNSkUkm71W%1&~_L9w3X zD0y+SVi2)G9D^w!PT~_SF3u1et=^v;HOemn`xY)QMqLvrA50xHEiTR!8?A4_&^fDL z#0u8<2fh0vm@tw2@y8_6j7$flM6}t^bC)IvzxTq>w3Kk@6PQuxSBE z@jr-Z{r>9eY4g|l9S?25@HK*~Yo^Wjva4Rme+Rp(A5=a$sa~8BjW6-ocrerCynYco zh!CUhjFb;zsL=!)&z-chWB?KUteu)}#nqeR>c#oh>L8+v(7vd8W04=^{J93$21tsb zQ(X{J{@8fOW8KHXJhO zf^d5IGAQWbyk7&rFMJsOw_)<^Xaj6QpJ;td0T`~qpjdviJ}8C+1JHP=4F=g!sC}`; z#i(JRcBx^Cpnv~@0PuNZBt8#9z$L7B4xpd{qzto%dWXn80@r@T1i0g@>0hzCKiE|`a}0778h@(z3h zPy~};-A;U{)W0EvV$iu0vw;p7pP!aM>4jbv>Pu4ZN0XHUCB+oL)Q)c#%HN$XG{}US z;M2`60*i_iL(Pbpd=JTpiBw+$?M$vWFFIDhEFpVT-82IL$`FvjA9}`ccnrWt3IJci z<%2;ULD6(3+hamt_@FRz@eTUHxkw?HX#<>)9uVNH^nm#HbcHGK2q9-YAjo}&9}w6A zpsw;-;Q;bh;fMiL;jd^IYN$XqIMTWqK{BAMqrowS0*dN&2mYf-?J*x8)jRP&KYx%q zroih5K?alfJU-%cf`viJF*!cy1U9Mv=26T{lj;wJC&6I?N)EJHb*OlLHNHVn^&~vd zibD)|qgkkutYn+MDSPA*324Ozz-|EunBYW76aD4U`{X}}?}2e2c|zEuUh`SR*+IR^ z%l9Tn$%3i^RS%9gu-nDoKiv=rV~?u?%^?nLUX78T1DKj76~A_G85G4

ffT6Q$4BaiHvWZ>7yq9cAojlz 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 JD%2@�Th;eLMgF literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/manta/ambient2.ogg b/src/main/resources/assets/emeraldcraft/sounds/manta/ambient2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..5d17e52a6a9147f552dc6076b8e192522867f979 GIT binary patch literal 40604 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%0D!w3O(S;m$&x)Qsvy!R8jZpjSdbX^0jnqZfHUktv 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 Pk4=`f{`Bdo`D&E{gseym literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/manta/hurt1.ogg b/src/main/resources/assets/emeraldcraft/sounds/manta/hurt1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..37cfe39622ec06d33e2641f36c8e36d67593cf2a GIT binary patch literal 33821 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 SDV?I7oy9YIrO&%|?f(GMxs9Cw literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/manta/hurt2.ogg b/src/main/resources/assets/emeraldcraft/sounds/manta/hurt2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..585520297a62366030acc60a81f96b8ea5da7e1c GIT binary patch literal 23652 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 literal 0 HcmV?d00001 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..3632d05ca6a6eea988d8dccdf356d98de9569989 GIT binary patch literal 13198 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/nether_lambman/lambman2.ogg b/src/main/resources/assets/emeraldcraft/sounds/nether_lambman/lambman2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..0b68ad77a4b94c39a7df6cd7164181bd03fdebb9 GIT binary patch literal 15102 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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..a2a0f10e6845eb1fe06180a2e1838548d2cd08c3 GIT binary patch literal 16291 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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..4fdcad01dee58c831d9ce1011fe6f645f40d0ed7 GIT binary patch literal 16520 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 G!2Vx+pO;bq 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..ac4f73a7d8973280f1c70b3c31063ece90cc9f0b GIT binary patch literal 14327 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

yU(ohjU2u0!qv{!|fH{V`uqgc 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 a9qgdkNnbB@%stZosKxT(``0^`!2babyfwuD literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/celebrate.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/celebrate.ogg new file mode 100644 index 0000000000000000000000000000000000000000..f3544930c7a6f72a178058a5a3ec06c10cc9d5df GIT binary patch literal 14612 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 Db^_cc 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..0f72dbe744e2d1090ea9c74c776e88a6b61e05ff GIT binary patch literal 35196 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�#;+%RukSdT6AGl^jcIr+p842SLr299~{4a z+-m;6UjNY?d3Pr80yRg@o$0?crxQvo3u;p}m&)PaJ&KQl1of07`)>vSK<8_`r?+-Q zU4wf6!bH> zd8~9l{o`0D7Dadz6oVn`n=}^l%cKWb49TxGK9hrwU+BY=WE3fqUTY}80RRSIf zVsY4O4K_GjP05}ePOhoM?M~+M3O5DBCP^@(rEjx*<#ptuSnMy6tEx>gh=#&RE!g0*|q{*J^3lAxGGk_kxobgBx^! z)=%2UL3^n!hJ@k77WVAD;|8(Z_0$$+0zS7pCk0nk2LiZzL6Y3AiW?lET;4;ebc+g{ ze9|DUypB>+3EZH)axv&i2kYv{J-`vjIqJwkRDI+QpqDr8gaGuN;Sbbo`;`EC9MCyq zF!W|V#A5Fu5AUUilZO$o_oR6cFv7__?#lFnHKi}e8aqum5t1(iO6=^QTUJ{FeYt5^ z!RKGV%ZM^GKn4XM4^J{56kekTc@X|uBUX5gI$T2|nm{8Ox|SKHrlgdtp$uI`w%HeJ zC_#H~+lsAXk!=JZ<~q>zXND2Tu(Q`qf@3|w+2HVL5pXOxB}i`r5FgkN4xcpNy6wjd zA2*0$2-i?jWQM1h$3Vdv*e}T-2AZO!p;Qd^i>d0>Py+4VB-qxQ4$ccQEVioGKvM}x zF0jqO0gPfW?}9PZlW&SolI5mtKfT1vy%kwvkWzT&c+iMU4}u3+Z#?j1Fd5uILCCk% zkg;QcD=R55=aUM9a;EWs{XJYwgM~R?%YYpKwn6f4cgnEwTQUQ$F+uN@PYeb%5lJ8! zdZ}fVKq_0rf-()ZttDxITTb%;Z`7c_0OKBzdejz!Ah|r^L0W)qeMrDsro~@xf(-y1 zuAuX+RJZha@g^5kPZXdS^b$~|Te?!dBnNwA!TA-StKg!QivK<)Y5aX;XGTI9K<*%+ zGN9TaA3>riWg#EmCnd>Xfo=k%+)I$)@FXn*4mj8uB$duzy4sfmz&;u#kc&d4BQL~G ziOY4nM+ndf>asKjg9S1&3I}iCI?0ji`tOj%6?D1cEJ9=Lx@P`hqrOG%L(DHTXb zL5doZ`TsmRfNMcMl8fF#9iS0^A1&~Z3wMA{8r(u12J8NLbWj2{&Y@gjEeTZZNdu2z zbby{;2!PQ{SBiX69Mv;@&%gYiV8@<;utgT#iEfQ_lO0uI@at~{9h~OCEXG@S%(sy8AgPZXwX10 z!$HaCt{)U;XHN#V!tG52K7vA8Rs~uvhvGU?i#Qt4nniQ>QhMxwqyhH>$|q<9r@=0h z>9Xv|F5pIuz+oU@sBR5O5U^I>REWefY2>jdj>J;8ni&9+Ax%sOkYb(|>Q?%$|I^m> zmJV|O@Pr-Q!QFp2mHbyt|1ypP)c9MGKt5U`_1E(+K&Jn{0O8+|ihT=ElVOL0BQS57 z&JeDq^e=!&i4C6gFDf`vFaPO6gcK|dk-uW{HzxUu>Q>@3l(7HyyA4*7h>(l?I|39y zWWV=+0UAoTa*ITT#0Ls5!@mGMzvK?LBc{sO>>{;eUg0Km6fei9~= znio>&(uUs0p)2E_dWs^P z)OUDpb&wR)xb8HIcxhHpjSU>qUZ}~e=jVS{a;y?il136s15}gA2kS*iiAqZ4J){<~ z@4_@RI6w;u+QZ4aGD_Taq=qq7s|F63@AE+miWIPqZDFsK9LiV7Eh>fAW~ABJ>!!_P z1*QxF?iSaA2#0-@dck3FOoqVyraC=`A%V4pFnkfLMf*}vupRcqPqV|Ep`avx>q2&s zZX|aY5k933zbkS^iwE?_xdKu~e2K3`1}eWtQK@zkgo5@32Z#b4S}bUQ!vFHbJo>My z|Ccg@hXfWOFaX!<`Z)N#B<@$ivp*m3QF6W!X1rlY)quXeC!H{^7L#lmspA?(2D^1= z;3xmzP6W7idY=Gw6 zytK+Q7OGg>lcKZ+#_zxj06-;ta1V=EDl`-i5Ry`OjRN4{;?Z==NlEcAs0Bk}E26m{hw4yp_j=@3?oPkDA2Nq>( zy(%OkCLtyB_=$p&@-sCJt^cGLU@+KiUn%eogZ)h+bkg270mvi*vf~f^GEOE%b!{yz zOeMB3g29b{Vi0De1F0%P*lbyq>RTPLo7$3U_lohU) z?GDrz1`TKAzQGU!#wKg;b(Ge~8pf*{U(fD3OOy>+txAM73x|a5`mbd@Fw0=vT2=$f zrfWwg%FM1vXf3X<4xa0Hy0qt5Qg(=au6^)evntMc`GcU?`$4lGg239zuVBP)UbFW^ zK}SJk0o_yadvQf?60V9k;%1szN9IJwJb6Kf?>UWQ!cty$os}z7x03MZGhM>6L(5A( zx-mszXO_#BFQpd=YgPlM&6VXtzd!!qKwn~69%!qGp%Z?jN^$zR#}$S-E+1 z!=rQ-`R=~&_W)pU`g5N~;P&qdrHqz$bclLY@t$Z6k5>ITc#x%?p4nx* z*FbwhV=iENQh`2#=gmy%6=x#!IH{{%+^=Fvl20h^tAF!GE{b$K3IrIR{)Rb5dNN?a zfnIM+Q?lQX^@H^1e9$M|QlgX8d6i~|KDXH+5v2@==(?f0VEc~%?CX6iDNhy_U2(;N z(g_Z)JDRVxuH`iO@$UdqGH~-RJv?qZTRZ%XFfSRTXo^*7d=`6q$%h+ z)^){`bTox@+7@w$UVp1=vk=oGOJVh9GdMwCko7p*MMzqLD;>l+9bn8`)F}9;~JQ?`Z1xnVLcudRQp`AAs>AiE=?;x@o9R@=lgxIwnf!HwJP9P7;N zaW(0+IUk|`i95>?Sb#u)qv_UJyF*z8R2ld;Yrmy~4g_06#)FZ}80dVrqy8fAknWi0 ztLHvA6NCe&@*!?#!O1;ucWM9_x2V|Fe9GNK|4&oj{pmWkiHr#i6^Y6l!lxAP1vK&u zATG<;HOJ(O25;~n0N$wQ+tAC==saqZ0eQrY?lSgP1zRb2@4)noAy)b}pF21!~16(=r&ijd_H?7H*i6YQ<3r#o^#v!W~sfzM!%7)HA z?BAF&`Fj9N;0#Z=4474{&iu|Lvnz$JPIfY;Tu#z`BoBt_vReWhHhGxofJx(qwWI5l z?elTJ%DVtLVXpth$ny%H+S)WL3^hRvhJrZxHk{mR-Mf1zDhHI#38$EgC-gV^`eGQOWYOgJIczS;s4sI+!jp%xUEGc7B)+m}_Z{q0DT!HblwlsSCI?g8ePt`HEVo;o>+fvjB6RrgllyZ+<^H=<{kui;y=~ng#{cj z2hFPXPVHD&TUD0-JmS9@@$>l1*Q)6D@LF$8qda=7Fu{ZJST8FM`>bcP8-P_tW`+_f zx5LsuVgy@EGG^%td!Fn3{;sL=t4c@Z(vZYY(Y}YJ05qsfw8sepML|B9DlaeY1o8N# z94nAUytuFnKHOn|tw{&H!F6M3U+`O7n3k?QbxW*-kJjrNM(Vw zk0>GLTP|~Mmcx87Oa+K(Uk**TdtEg)Y|9&Vgm5;oBXqRf*~cSCID#({AHrJL6%SF4 zaWGYz!38{nbEFQ5s}CkgVhje(KBle@xxog`>O(AxaA#h5Tg~0zf3076PYt3)qxFhB z@!U&rd&J3gxe8n(KKC!4=9l*q;f17Sq}zxVdF-|lgGZX+a4|ED_JrMUbnjYGumDDR z4lPYNOe2(S#kU8V!T``;x@h#fmQG8LR~F@p=BdkUuSLsH+5X2+h%)=a^q?*S%*5p@ zM{>Zuy6+*GJE#Ec8tX^xvi(@Fp5NlDZZzp?u|l8f>CZ%Zo3%VMrH9~Q6TiL@UxKd6 zBgoPkmzWlpcH5PgXr4=9!T92O&-J;r*&(<79MO*;Dya|-_eZUo&&dH`2Q}~FU`S(Q zi0wNDLUD0NrUe@okv8})@pPJ+t%*p|YWyd+kJ6J{YF_)u1x~%EEoE*CLPh=k#mM&y zSMZ)h=!{q@bb|fq-IkW&$xHD4L8q6mSKLim=fq$`!sG@U&M-g_3VmjyMe!5EVLqrK zU2+-R3$4w_kdJFppv&T+JwCYB_{dNjeN5a$d9Hy2$+qAxH+l;_J16^e!bNU2cv8hK zJZ&05Jr8MtZ=;Uc7XhYEHJNq2r28HB&nd-Tn96HD96A?(zoyAEQv`y7m(iFDlvwe#35DZ+dD4sSv{i!H+-p*A$b$GGBd)0qf1i7)< z=wy376gc%b)aT1SGf>MgM*|HRW42MMvI;n0d;|1%w(1MbKFaf+$6(^Qu1So%4^mS} zu{-(s80U86+M^a!kw?^bH=i#eXy?0ICim%ttOPG!lP#hGIKVzKbXwvBwh>7fL8hNC zc)IC;&i98b0z*bqJspY0g(P1_rUqh~EcaIXoF8goeZqmYX5G~&JrOA#w|Lai`?b{x zhH4r-3Ip@#z5*70$tW;b<$lBS;IGO6aKwk#&Bw<-693#h-c&C3xigUYgxUe6b6B4B zK2^^2?(g5fiFM5xm0u6gq_~&UzIamW+2>%9z_GGJ(Eku~I9;~p*C&p>)9(34Iv5<$ z8>Eru6HcoktrCih3^#8T0ibqmzIxLbh*HJkgv{TH-T=R1$mR|;4T znY+Xrs^$g#f5jB7!Ro&*@NJ;e$z=zXi@%612t~og>GS zA*oXR!TVA)bCu4bCw2&$cK(4jpr%2awv63q^2eywIW|=y_NeSi)w90iaAIQV!SWsN z<#I^5z{}ryBL>#Z6wd3y^z>{}Kx@k|ad{K#Xx&+E*nHr;duhLFNJA_3NiN zQlh%yqFknCg?l@3rY0F9&U32_t0^im9ar5BPZz(mpv$;Y=iq|#fCY`Q*_ImQUjz(= z`m3bo1vvm)w<8D{;v~^~KKSzEyx+}egvj8ZbgT^&v8c@>cA+^oN-2mQ=d@&Z6*u|& zOpM$y@|p&Lkl8@C$d}((=P60JWwc=VsXI=>rLuANW;PqMSNg_{4lgWEMGR*hbVzF+ zrO_tcH2LOqDe+HU#CIP}KTT{F@-$}O(miDF#lKxtbO#(v-w88yzNY~-BJNMcCx{Lk zIlu^4AP*A;B5$TaD6)Wz!74_N{)Eu%weT`OfN`E|q;K77(Mk#Qi^HRfgd24L76QP~ z-?;8PzZ*io69~%Ox?E7E;IQ9a=*H>>n7C=b{exmY^)yQ>JxX%-gW% z3nz>{B^{j(?rv#MxEKUx=D(xF8s}LrpZ&&;T_Qpza8K|D0aFBZqAA9C>o`>;cgWAz zOfOP(nSp6_2$22B*BCcm3xV0R*?Lon@cwMMUzw zJ=YeF+sCwr5kMJ>3K1&`;Mwg1`gx>Rd zt9PRs*)bx+Lg?5pb~&h8Twx&*VLBgeJhz$LCsg++sjkiIRL(gLYKEiZSmcxH^>z+j z`QfTDlzR<5NDC=9%;Dzgzh)K0S1`f%@AUsdc5%XldWrl zEWx8Mf*~%+^#v9=kA$9$#Rb$oR*{-58E{ewdI032ov{R>5?}&2A}=1W=_pxt4^s1Q zXbTVlgLx33up8*yMW}}&12)I{sXD>;CyyRMZg9h;AxBycFZnESXQ-MS-8W(<`@EyF z$9GVtim2?XoX1z5c&PVsW^djM^>wXz5o>fNR{lT%eBW7^f$zhB+%E5{*MIH4l#=A( zbeT&80Q4!x=o+Zp?ZbvqS}8Yfn;yJtdbQz+uDVxq`I(eK7zd@bW$v-^#?e&FfZ$~1 zpgzR%bNGo+B#6%275I8UX6;a;@I=f%g}2(>*m}j(INAB4uUKy+TB5|BCWtPjbh#vJ z!q0+v_U;URPE$hrK5-k)LQ<8<1h(-`c`~eGxxibblNf^VTc-z6IxM_5`@2BbjlA04 zem-*1fe#L9ua!17OO1{v9b1(}*be)*x&jjK(J7y=V8ErZyQcHbeV>kqkEYQuzYQC`%SsLR~nJL*E+B%H%O7#RN64@>y!XuUM0iE!53ECS-k*N6uo7)V)=F=hLY{G#_@;JkRz*YDaTSwB8dF%E>_A^KhO=-o!^+p-EK--&oAPI80otZk~CGp`+j@Z(eFPgBU zpzmPZ7cK>pDGUvl>$EVJ zAOrY5fcCc0UcI5UBDdM`WET$*3ogF{TzNDo0*%XgiI&dgQT)Ie>Bsl?g=y-rm!@5Y zg9>3<9u-+G&e<^qD>Uitvxh{0SRqB_T9sO08o#zzNJJcF(5>FE6r2Qk&eGov4rzYq2YlL|#|+DIeVh5p7q63OF8(ywAOSyFdDS^1?am8r&i8jAFInu( zlsM~+oC2W}h#yWHT@b!1B@-c;Kiv(1_}*SimF!;+{TFfU9i4G3KGy+K4*`IUgqV#b zUf7Xq$vc|hVT;E8Tc+!qj^`hVfzF3oXc(xug`h`B;5W!o00|FZ`GkUZT9!G03VZA_ zBzo&-)8sy{t|i?*RFoTYJ(c^tz(2MYj8Yo?y598Z@-Epl`Mr@@N!8DKEuxb8T;gWF z#G^8CKrDe>BIws%so&b8p8(*OJ}H_qa)hF$PrYx4INlsl*yJjAFj5(MD-oh6{=sf= zh`nw@?CM~x#c&fX?~B~HqivIm5hC>Q`A)<8zF z{f>+_pF*r?Th`pPRu;PkEqbj$b-Cn$GEOwdlF^SQY z!J~j?Jij#29)F0>P;ohX(px(mjRH0 zOzS>$d&~Fq%$sT6xL$?aOx*hfb~E*_mH<6u=TU~uwYB~Wiw{{lcZILAxRv#*ife4r zv#ljFrLs_Gh~bkoKw>Tl6aqL*JJ95u!Tkp*K8Q{zW*Jor>7WD=?C-NJ;q1E%0ff$5FQ_lly1&US;M2}d{%fNjua4S3=_G{kp#yIrLZELXEtb*b1CkgVMY5Xr zjGVtqVKJsUaP&oPi0=V1{vf>pAe)5xH`bSo8`k!ccQFG+<8Ht3*8k^B7XtDk>*hDG zfb^Jw&^eS}wkSaR$1xx<7POFwbcTDPrpf}Z&n6NwyBgD*er{L@qLbI4pq-vj0a8p$ z;CtTAV6>$SV!#GCw}m_k4GJ`Zp`UdFQlVuev-qNR35Z{@1Z(|fK*Ta8TIch7MbdMj z;oXAzjM8g%yR>J!#P=0&>7}9=L8pW1<_1RoFz#32N^ISG#83egBJ`p=*H=qronGA% z9;`vzQs{!dCcXAlg%F+TQwmj9&qCpVdm4)`&<%BV7KnkCqhT->B@l?-z!b|F+rsMs>q<{0i`yWeFk7BJPN)TGsSO20O?D86{apc?u8 z;^vS%zml@o)!B(WXR)CFPaui>CJRPJ@WgwzsR5A*I2|fL?>QjP1eo@t?=Mgy*-|-_ z36SoB@j$K=HzW!$ZUx)2I^6)c|4z-t>+^0DuV_mCvBfzWWwnYzSIx0V)HZju8hyxS zt7#?xxS3<<$bzW$$ty$7(awma+DK8+<;pJ!s21!GNK1R=@!R@O`NWobjK-A;9ZMDK*1dn$}2THVk*?y(hI4 z0%vAq)^`+Ie~*|tdJnX1wG!aGPNRujlWjWG_^vHsU&rH zIp;oT0GmBKo?`+tCq6UHAh&+Yi{1^HIv4xIKjFc$BN6mHwN=__OrbFI%iBfO3z`6B zhBZ7|Da9QTeHx%@T1re+82~agU!tsQKzHF)XW!GL!?xdB0KAava>!jK*Tc9v2&{b; z*BUS-_dA7fnV!AJvNiR+)Or0-<@v}>L|J;|i<=iLccNerq`_7Ww4X=qih%4z_yVX> z+5yiBG&Piq!LTtB!InRH~j;bG&)un)lHA9j|c*|F58`ytO~YzY|mdf12;% z8yI_3w+u8@j2(XgCPU|VGJ49ms_dC8X`>%_F$m7*_r88PS5AHD)WRvtGwB&I^I5~@ za;tPmW$LvS&N1|>5S$x*liu0Gq9BCVt2UH=dVDCdW2n7(VGd$}Mxdrf(o=3*-cUJh z_0kzbg{Us=^^cN(iIUA;ThjDrE-gF$R~3a-Q^Q?lcZ^@JF~np){rGCd)wP-Kn!Uo_ z6Bjr;Nd$=uz$Vy}4yM$f#GeANpZn-sj#1c3pepT?CoL=?RVrIxkU{2;9AYm#L2j#w zLzxE2%!_t+Jpi~>xf`%kaHr(4!rvq&srI4&Yv>^2bO|30qEA{4STREdxU$g|_Fd?@{h`^r=}E zEA@EaXnXw4`iuK!u5^M^(kg#il^CltS5FsZ>5>_my}E{6_YFhtD;jxV>+9t6JEn*P z`$O<@i=v*qN)@3nuT0VU9cdN9W+I4)eUH^8lk8=As_$4Z$CON&Y*biVy(Vpg6A<(%9e%%4)tMC^D22nKr$OV0sFZ3EC5%Xet zXO$b;y?w{yU#+`MH{aS%OmVW%a(NO-h7@ zIgA}c=q8Y^6J%(HJ&=eC?1JC(Py6ztG5l6nGz?Q#YhYc>f0XMDnSKgMLwD7T!B*(p z1C^W>G<~8Ul>i`QX)@e~FRTLt@p*%uWuTRxWc|qjF5Co7YH0|q zhuYL<)Q9ul`n1DaG!q_!$VIVqR)*|T2F>V!er3B+mUSHzg(bY?pr#niaJj7A6f-0p zz?>i}3zAC6a@7zNM%w$6Gjqh5Fy??ITzMw&BxHp7+_J31(%;BY#j03NgNJxJ65qy( zmJ;9OE@w#rjbN5t!DJ&8dx&$wUX(_Ihn9b(AohnVwEqV$TOJ8t$p@?#(KzIU(5AMt zU!vf9FCr~1ybmQ^%oHR>n0}5zyIY&-eq|cmHDOJ@x4OMu&}hcG>^Y$1-P^TUB_SDy0w;9 zr~p5eEldCN0ksqct!McSfkQ?gkRR!F06F)L|V z0Z}NLzn-ds;jjTxKdP+5->bg0bDC7#FXwn)7<*L@Oamt`qrp!$lo!=7fs+G$RAB$6 z41Dd~6@$Lp@~LYJuhA7JH2-Of_iWI}w!MO~uZX;PhPcX7k&MN&k6Y`^2EXjobJVvsRQWny6r zH^}a4j8!w_Q5fMgDE&3O?Hm=P#ZHdJIJbK!NU-p z`mlohQx#wLG5pxbzXCfq);H{Oq7qwBKM7R_nU_sA~PNHaiRqD*wwLqHbr} zNcv_*N?BZPzc@tf^X)#lXFvJq=bzP~qvjAhzJ~NC#`_K}g>zfl_#tTysGT(-7Sikh zrHOs);-Wg{P_A~&&`+;z^h~vT4i@^E=UKcm<--olUpw9X0zSQ)Qp~w&^%};b&(1}G z5!0fL*C|iWIdhn4KuJmniHfTjRd2B4 zu3$7TZ3TfZ&>VeVDqALAdy|Xp+Q6haweD3!zV4pgR*gt)q>M zF2?8{A-r|APybBV$mG}4n^_3p$n6teWz;k{BUiJ1VSrUVaAQRJ!H zIe*xsMXLUgQID?upTYWyR{L3=ZxP}xhZ~tDUUp(D_WWpqT~E1Xv7!hoth@W%x3`!7 z%=jRETU1+4__HalsDSni* z{JN}RNQc*@ROR>)10si!YpB$V-cr%7Us$C!)G+m zaRRLS9<528f_)w#4kG&IgY07_aiSKr4*u|RhHZ##XY}$0eHx|!=2T&m>e`mMC(qNY zrzL&Q9?n~Q{ZMJgGxfwVfpW3tUOhAZl)l)Fl^l^P3KW15pk2S}pmjkZ0!&40bFh+F zoW`!h;CBQrM0?O+bRp>@i^Y>ivr~^)V-3|0Dvr9Z7)A=huoK)msl>D}Hxsz!Wq$^h z)50Ttu}Y@=jaat^sZHG4IHO5N3(cZq_#-3HzTBy5iwXEjd*EVOyTbK~0R26gXHE5K zih+`2Tw&`3M}AJ5*cjbuqsiKax;bmxWBkjqYX>~d6Eh8-J8geB*yxNohAq4|o{iFC z$6^>=PrZI2a;H=B$9B-%_#I9m-j7YyErYu#{#>18#Dye+-fjhzTI^1>WlEu&nigQv zPtiFxmT{nm-|9qzm=XMh>0#y8qaVG~lX+`im*Ip01i~N_KTBPRpzdlby1vBTmqej` zG(5=^joNIU7hZv~V)M{p~^JmnGD-S={9L zMO9>^96+Iy$jol7t)?)}44$>u*)bsjzE1xptV&-?39()I;4E%sGM)Zrwp)&DYHHQ_ zoIIE^a;4dQJU(9kaQBTWnRxe5o3o!`hMt$VDw$6UBmt)%=S-nlKp->Nvt@bKpFP=U z@_9wGMQqcvvF3Y!%tB_HBgRYd^*>d`Z&yK27$@B3BS?ULveG&<`~7q(fc{zJBO(qj zF`Wh>(uhxJf6&|jsZTTcT0JvWkIH4mU1UuvfzJB1e{oe~>S$V;e$7&2#_hb&eQYHiRI(&;B1v;+Z(f+7TFp&a{$|}N zgq*d!GiOuFxn+#2tmE7SJcu+|X3kwJXNAr0q~96)at}@xPaG*cNdowqz8-@&%tkuw z^3|CPnk*+ooR7pE)g+@Y8NOF)-ZLo5S%Y!7Tam@Bq@A~Y4_=n!%qRV%D>P(mMzX~A z1-KbU0kF)-0jYKHOC4iv2{eFj4-J~i2V{ychLo<;4O$SQ%y=Au??Aa9!?1wnhu-bx zY>`|q^iQ5QU)$7Jd2Fb-&52K^=#a|ICKMGi+Ixj9%-|xA(_jfEnX5HZoyVI=X1kNL z(t$jjoS_1~6vt_H8R_pg%m{w7I~h z2bY<%T0#zAGzrn|694v0YkI>P^T3{Apg_6w-FDrw`HENzo#F9ZllJ*@7gj-=LX=?9 zw^GM)WBi+S#}-y}-v>kwv3R0>>6DNCD9g!GsBpS!?6`twh>Tr#75Z%DA3ZZ@J@h5v zDTJ?}?N7Zy`Q75gjZ^gG0Je%f9uLV+#c!ahfA{>_P|&CJ6n?X&0CdVG7j#5Q^(cdX zfB`dEpL&W7;E`bhzLu{GJB$siFoSRS+!mD3kH0~;`IL)ljt?cD6BSlV>yk*=-MjOk%U9? zU0$DueOP=}*-2%<*RD|d`YRWvDyz7UL6ObP$?>i-1h^QJV51A3KiorKmx1?gcYnyg zi%wV?Kv<0Pfj^46TtJF%`u;9G8o$#`hyHQqM@R&a#_YX&x2^COAZ1<%?j2c7QEYde zycUv0FGN0$-Pz8p)_1z`7L?rid^w|+km2vpQfol^rleL!obwT4@*VaWt>{+7?h9U|- zXB_TiWQpM!X%?oW52goV4seU7vW|^*ZycQA#E`0;H>FI&iA_iMH^&1hEzVcuiBo*) z7P7K_OxWmZI}`u(C~7%v-3#h?uXmho!=CW_3$;)0lTXQ{({moCF=}}GOm-`MQDz0@ z4&LIVo0gp&A`9xU5k%F;lLQ)jyW)x1po?p|b{w}+F5XqWSZfS#EgCXKqLNvYzr=ek ziDk1ZU*zLb5`r)TBrve6!^nzvwcIi_W5A+tB!&W#4(-&y=g^b@{w=5EtaKW>r!!9;c1=Ie1o ze@BP#$l7l~=0KmqpP9|1^LxQQ=omEJTAt2=3KO{DU6iSTavst#GL^=zBhgQ*HAW}$ znlN^16Pm^H9t4pRyDh8!dh{V+`ts8~V>$$D$J;;OBTDh?2Dh{#btrP;B7jcsCqaHG zqytnZ@-~~Fb+%|PF}%h zOZT9+ku*+OQJii+7^S^ucDzhgG~Tg7TBD7@LJy;N zcT{2C?{Rqw1Zel+$?y(?8TCzUSG1g`-B-*?Kglk8?=;K*l{b^F1}bqPeYUmA+mIo^ zw_sqUAYlKlT)M^0slLD30N2b!*+Vp|zDmw@4v(dR2M?%zyg2_NJtBXhdg^3X@cio^ zF)xiMJz3Mw!zq>A&Z9qNrxl*eI?tEK4Yl43|Ej(}v%ngu?nAQY%M_8B92|$|+|kmu zAz%3YaNCRmIQDbUVebqJp&kCnctbRE_i*gSt0=3bOh*TBMQ7_U5{O^>V3%@uFqiM2 z^~ZtyaLAD7)itakzK1so72t)vqj1iYk5uukVTx`G#{f7M&UOv;1Gfo7{*HaW*?PanqIG^IKQ;`>}Z6j@kJ zm1>48L6*!I#iSE$?6F+M_e!e|KiX4bsI5PAIW*@!8C*KSf|$n50Dym)50#+zfNj%Y zaPd6q%MYCG0;{eV-d^g5ePB44+w9xNfC5wJbNX{HV{k3Fc-W>z;L+~~c&vBc4z;+m z&*x%cNX<>-{ynanz-N_FC64)`_Y$>c6VeJTT?dc)uJ4a&n^}BQ-9v=TI)B2*-@pgx zCAf2F?-n0B&K$ZIA81)Tt9-s09P&Ug%bIE2;1A`w)!tm>Amcb%kkMtSTj61pFj0lm z;Pq;jH!GXF`NzCc{7Ch;KF<)dG#_wc+0{vSs=VgyINZMA=g%8uaChx9{A`Y8=Z6el zTYTJzHKxI=XJ0LyRw-T#KC=k;bEWZoR^2_MCGWD&r(sra+uLFb1!xPp=RffEaO5kR z_mG9L9>3r0ft7|l7p-y?N+Zx&=V!UMJT@F^O!@_Sc*^!sFF*ZIbd8rW3RIVVA6DFH zXKC>|Um906uSai}b1Jxs?)w)_Cst|zC=78~FT>9-ehPMRqmaGr%D+#i*Y5gw8&kjB zu4915$W1}!u*zp->Zt^7pkToEu*B()YKK9wvSP3OrtkPqsJY(`wcEsNV{bozWbHdUixJC zWym9KF9`4f4-eRgl(ZqgU$i9iJ(IC-9{aOM+vv%Z26`wiU{qh>OqiB6@ZD$PvuUor zmHjmpdwh(!nz;V$+X_AzKw@?FF{d>RN1MIWDSJd!sSMRf)Mw%BEtupqycC&OA+2lSHWr}vY@nFRpz;smyjpc{ z?T$Wri}8f*XAA4ACo;AYr9`T5s6qRQLcvqkQu1K~>9npo-jlSh#E;@cXtT!mNXN?e zpADk$$9*Vtk|7lis=gY$H$2|DcRJfr=r^L!Gt+u(8@=Ui|7XTyk+-CZSs)IoX9&Q^ z-|uyQv5{X@I}~P}@k_*LX7#lgqV{6tuf&4qq>0rJ+g4QA4EhXZRF4un^KjFdN|Joc zrW1F|h&UrdEqXYD>Y8L4g#vUMCF8#Jw&B7;Nq(i8#wI*P&l};x;rJ^|R(Ai(6o+(yV; z9z43{(mi|5+c`8<^-}Ag!|wTM`jrz~^PEMQAV;~o!!C!UO2_?AU+(#w^H1&^YqoJz;oA&;V} zIndd?!sSI|8^H6nbO6Zg6M6TArm|G3YDsdB$>jaeCd70nikvJCOD)Q`FkyWfUp ztS@rSe!NNurBgWqnKA%#b*172fAa}wLw>g{x1VSrKa_eEp7c{H-;C@K-5Q-gG%xaq7@?eo57xf&SGu zn_N4VWXnGUSq680DX&azF%78XN(i2M*wCnu$CW%dbN6-G`+d#%uzK8%b~EKefqd^p zc5UC>dhJe1-{og{#?D!q`+Z+@D>PGD8dZ`Bo62aGZ298TeHT$ze;Ad@&EsceRizF) z(b@Z^2_-nn{XDq}Y_D-VZRMcbQoQI!;TmSY4DoGJksurLhZLnkCj{U3J(!+!W`vIbc-=gV&7UZ(!wKjWdKdq0&sSF61wF(w;p zK{%}N()i)LP)cJujr7O`9p6Pn^{f`08!A&an7cRxKjYNtG6IlMm&#>-gfa&c4LdAuOlFegs->HWW$PH4m^-x5&o5q*^y`c zsKF7lX&SI=%oh2eQG~U90KCAJJ*TgEfJM7o^Z8(J0b%tzO}wTu+K#7BmRGj&T0`H; z9DZN#r=gP!Rzbn_LTj#s^A!$Y%!cQA%C1e}8`0Iix8e2SJF_27C%s9hF3lY3x`t%k zTLf~_e4-*ViS_Ntc(2i-8h&*49A4%qjhtWd5cGTgc`n{7q52V4S3uWX7la4VKb%}8 zC}}(&I_u6@&KUMhFQ7Us#Gf~rZ4#}RnMhR;5@3mIY?o1SkvOej*?L#6+QuJXs|$lQ z`20Y@+Z_K1-CXZGB%*)1yeWaWA}%oJC~9G9<5qV3&QpMnP7i*#H&V~zY;xq3&m%U> z)Wh;xUeE&dkd06!u~8y#*l~+s7*nqz){?4MzGCn9(`o{P)&b-bl%-Bhu|V z9^)qKzEzj++P#j=C3t2sR|w|$ozW2dZ#myc-|{_}nX2II8{sy(BBI4D@VB~?ee_Iq zLEPRp#p;(gKcD&PX%38ezcn2b#K-O3d?&*yN!33$T6fb7dWe7BN-b9Rt%v{PKa5xx zmgPaq)7j4oV_s%Ky%cR;{jUIg1cUp?2j`#f{EvPZlYS5L{hxb2(XhE>`Pa$spKX`H z9kx%84^_*TM?HuURH@A#&tv#>S=QT*w1yk$MMe>{lu0|Ru~bJ(rm8Ps6Qt#@hG8;`-{5qj4Q?yjp(d+%Ym z-dyuC2#ZF&EOv7oF-@cZtEK$+)9$hW0sw$u8QnhQ+;v~Q`Ck`E9aW>vMumobAwm77 zjQ{`u0001(yNb)x`&a1z00000)-&6Xk6{-up<>YgHP7C4{gEY~nSXUY;q`p^{9T84 zL}BN9ADp5KxAm0lyj>%o&RgCUYMr-NV)v-UN5+5I;W_oSqgX7Sc{=&7fBQh)Y0m!o z>E*lSrJFrb=jqJ$=kv|ohi5&#OpC3F^|)`^ckg}4$LmryKK9=}xV9*@7*FYGZXUnZ zov)5@u&uRkLK_GC^35c!Dh7QazAFBAbg zDAI4Nn`@NK-n`mLi&^qB&L(CAfIxf`FJ}M%0I5K z7U#ZGraMgMb<^F>5l%4_ zz_xI_bzR2T-2v|6Xm^pO9c}=ZJApib1Pv}>hP!^n^V-!Lo(>LIJrGoV+~A{Yq+@(q z7o!ej@HgzQIl5e>+qK4$^`k7>Y}BZ!RuUwfTT>1pliPR4bxM2-PW^CaM#r z+NjV3!|7Gnhof48JEJZ@Q~{!(xrw`h^i&c)4QAfvHVp^V1l*y`jYSMlkt$Qs?vcn{ zE{8jUIxm=4FWfBy1}LH+pfahHE3z!wy+Z|1lkf)^_dEqE7v{j>zK^Ph$caN8?p%=!X`JJ5@V#=LX0+2Z52(6#5g0!yk>@l6MVQ_G9?M0 zuZ_S(ARA%-`4XYQ01W101b58>Olocj>S9Fo+(q@GMO&h!3}Vzi z6jR%|Pp8ivxX^pSwQtqcX4Q4L_v-NK)i1qQt>Uf@kzK7QR#ttU|J`V&2kn7^BF6#h zpy@{v^;v1oiK2tJprAD6@G*Vhk4Ujg(Z?L)9DL$3d=fJs9;QtJjsd8FC+HQ;ZK9Xr z(j8xBP@SEf9iE<*o$ZvE?)d+2^r^x*5X1sOLQQUhdTxSEZd9vi2*Vj5I0WgK3hKH` zHATyx1vd7a{LNPkl=?w zXLV@nBgGv~H42s_Jm)xoGQ>(N+K0i8T) zl2mdSIB!368k7iT;YKc87?M#qgbUdS_ux9(C>Y9yViYFuqFdmh+$e*mI5rd$;9^)( z?YU40;aK2OdO`4!3I%)F1G&*d%%~3GM)>InZDuhdFG?R_$A+3rBDAR>NCXNBk)<1< z-JBE?ts*W)=*A#OWD~SAjR6A7>0EAu0NPQS(2WI*PuRz~WC4*zxP6B~OHvF5?U)M~ zlY+4vD6~*00gaZ9BVgN-V!E~UNFh-e1F_O*OoUi$KN^jUBiOk}HxAgnRsa&a4CzvV z%Ml8C5!yf%Se!&%BZ~}n1yrdriNzA^q{PSxfB{r736r8RE@Gs96e4$*(QnsACigo@ zWHnINAi*w2kW2fW=7}YIn1^7yc8>}v6l`uP0d|(Qcm$F%X!lwLFbu>RqcM-9OD)0T z85DO{X~1YxXteapB~N|A=4O$xfYBs?e@&kJstqjXz6{m?s-zpSI*3Br;tjOLE$|Xl zRevqs2*VrY_5y|i`JyvW1#_O?RaMsSluKT<#?O;MXwxx)62#N0l`4FkE=U4`>R=>T zNGF^~z;OwL66`ooBwk#HK^DOd!0-$Qf=3M3p~5V7j|*)eMgrayBb^8JJ(vN~3Sv*> ze#F2lP{a)}vp{ezOgM51PKd^!_oEC|7==SI7$<4q>Pf*+6Er&af*}%6KuZ=GjciN; z_lO$D%RL$T$pD zmVj}VZp5GwRO)PQLjoXyEEt2C0Sd?#Ho$NI0t%3AggKx4o5JOS;x4ER3NlPvoc{vf zl{A)vhl6M#YYLD;h9Td>+#|J{Q%-jvS)PS9tLTwpq77J5V<~co)Yxe3IEXXT)=WYi z%JCVo8+$z!f(jUzz-M1-XH+btbr^zzqc9P`MgUD?5}pG=f&nlyV7NAL7MVpLC&7V4 zWq?zO%J}=Z;y}?Trc^2e9@nL-cM@(4mftS%Npqr~e{1vDEOp;|5oYzt!G00-qULNKlRWKrRx z8Xk%fAkqAqC687Ce#Kx~lVVJOtAOi4zJYD$hJffmkoj;-sRROum_`niB(?ikh!#MN zFdZsI&yCs{oX8(?sHV5cdsKLx~s+pg@hHhGPVPoED;X5oD_I(hU~4 zT$;7HWSBEM)eSC4N+QT@5XBLNl*F?@7EGy_v;-!XS~%w_fHDDGljz)0ok6jqPQfo$ zLr@G86O_5TyAK85$0Updk2rU?27Lr5^6IB&AUV44Md1{clDn03!utB{T2} z8o~b;11&)c?m74R*sD@I-8F9rtv9|^$yHv{pH zDyrDOBoHKO4fsa^ODc6&e|5S4p}?5fzZe*>-G6oe-V1H)-wH6S5Tr`==ZRO{sCoIZ zR*_q$h3og6zut_7;NalW+M~J)*M8tk8Wom6g=QDR|FZ1wJ^g2Q|Hl+B@o(a4+rMz5B2CK;0nmaUi@A&BS7G|6<2+p_pET@;YUTrQb&~3wuz*s?-9{m`Vf{ zQo7M1q+K0^8mOdTvdY0RP}NDF>~hFcf)R_fl1+`b#p>&w1|avb_(gRl8#PcKK=`RM z9f>&ciV$b_x{xC1zyA!(6n$2@G10HR8ior+BO0-O9TiiS5&Jbre7L-dwZr~0b-%xX zvt#XB2&V?~m53+;J6Ughr>B)N z2)vk$6A1*Yv;eAA+fgB`89pJ}AbJ!Rb+`L&Mies4pj8ORD!ez#s}p&TH%$P;`V7PB zl&x|<5}An9b8CS z{TPGjX?s!H1TAO;TqlL;j=p;KET^Enwz;!^WcvGWh-E)NC{}+x^z_urHT4AsT*l~W z?~{A32-Aij>iZ;>tNo|c{$N37T;!9-#dRg)F)`mNnmXG%dq3smzDkOtpRO&ReS2U0 zkN5UYUXD2|PUx#-Rs9ajfdI|d4{ZFCe%-ba8rp3Babj+`@SsM?F=%y8^H+8VW38&e z%#yO+SHq-=49T6qh^mJVW+vYww{CCS9~5v>G?~y)A3usuC(H01>gKBn7{erXJLFomh(vU(px6Tu#NOAg&be{W%kCR zUDcr#HSDbV?8VZ2P4~CzbEAbu8~1sg_}=b)KxW`AePDU%k7vy9Zxq)pkuh8*qA0Sk zE?`OV&dWcpR^N3uR~uVj`qgdg>elS!lybd$M^_@+!CATwtoM6c_=YMBKF?(T# z)yS_b@@T8t{0qgo_Eq1uU;glc$>WO&Co6ci=I&%hTLwK4uRI2w#`!j_{vQ5(r~Akt zMXl=H(*CjY?(^I+-W}`rdIv34Hv==XeYYGwzTM1QvJ`jeOog4glkHRRWKvPqTFC)# zee&y}No{BPpw}iOO#;`fFns}}#ptAd6&lanZ#H|ySQgXwEs^(LtY@~~>iy|ad%rcL zUp+Q(cZ|fsO1nj<~*zH8BqK=*1y%@SqhvRUABn+vGzq^kk1M0@F= z6yJfaY!}EzfUXuvFIarFKX0)+(05`zV8Hs@hu0S>Y9F4Ri$8mNU$OuzSz%hC?dQ9F zW_O04>;$}0caFo2-nW<%y8ZEqk8;@(zs=U%$Jy_{>7eDcz=uqb)Uac~iu7P_uT3ds zrhIQk27Vs<+(rZ0TWJ>WcH2oi^n2^~GyMnd9lX3PJec1;)p=Hb*v?_`{^LCm^mOqx zNRvHp*(b;bvz+k?Q7*QRTAWy}p!j_4A6RAP{8+Qy!HFMBd%8H)g_mF`3?H57^2Pg1 zj2+n=iGNWtGHc}q*?MO&LcbYfHJ5HVRjR>$*68$F^`YYz`@G4`HN7gj>su>0t4qaY zQ?*5E)hhkdtQYx4Q_Kn{0)X>_KG zrb`5^uCG0~93DAWawe=m<;xbuU|I3=lNJxPoTB6_g7!T1&lgAwS&?zSFr9~u#-PuQgI>okNL|9E=%9l{v}=`Y)B}wxjRRzA+_2b^o&LBR zJnER@PtG;odS|fDoT{XPq{O-!TYhgamI*zD;IP=dtuN`eY$XdKR>sL$v%S20-=+e$ zW&0)9Uuw*yW~C&bvecl6kjRvZmhdC?ao1OmzS%0sjY=Q?*@<0_mw)W9DJY_MQ0v!J zWZz+r(r6x6Zpfq|u%09&0hJHaLvdyP1?y{KZ(>`N95-aa2(nDlnSAIjLhjoVo_xH)FIoT=Png34)gMk|GbybkOzS zgB{X>ed!M-$PjL>v@=(TbXVeKoX>8}hJNU1`W!Y|%@oWLLB3@P1#QxE5LuEQ9XEd% zs45NF8I>oVV%W=*1AB=@`#k%m=7$wJrB@wcGUT?&*3~mhS&Y=1GEU4-2p~$&vy>fq z8#32&giI_E$q<#`tf@WiG|!-I&A$S|=J!UXA^3roiP2ie`Baz&&#S-lgU^lh=!)NO zSkv;K={b8(zk)$Lazoe3@cCN)10hkKKU3aNkR%tby9B4{9k}Iw{qTveGllbPU7CNs zVq(=l-^m%h^Cd=EsPgv2<0P9uHLl)%PPfGP0$4+jrWX#SZ?)e1=+vTf(MoiXw_|)$ zI0e14T!IG{U#&DWW)xodUho{#q*5g`}<{YPeCmA2;U@xxKCn9^e zn`3!MH9t=in)~o&&3_QblBmMUR&Z0pG1ET9JY-0RPAi;CAM-Aggyl^tEyk$ZSX)Q) z(T}ESTFBlhDkZ=R(AhSRjEUD@e`#qR(TOqTt*Otky7`fd_0DJEAYDb{>pxAGPO2Bi z&6IB`A|{bJ)mGMlGTln9*Zp{Jh_0kNK~R|WSD9hyFGUF)#dS_;0td=?3@&z5n*RDu zkIj$S7Qm~iWq)#&I(NpGH{e>TD)rg|kF@F92gP$j%QtgE%nZQ|C*YWWbK!PTz3TL` z!zP2t?XC|4d#2UX;)Am#IYnW$ef=7~R<12C5BUbF9b}9qUu-j(iZD{`()1W#9DMTn zHiunDPmx0Y-9VZCY8Dyc{}Q65iG>o65h1Qq@-j%L(6my(?S#xHo&FNBL{P}3x_t(#HsUupIYrJkgmL|9k zM&pMP3z>!w9XV*H5`7?zhsV~#e^Ddh*Vl!QfAA;xX5BcL>4W0sdq0P5yZT+aOMuSb ztaES?0H*BGD|g#l)8}gf=|16Ke%Qxe*L`Q+?a1bOU7Ap9PRZ;#lfK=+TNjg-$@Ftw z1F@SK>Kc&kcuj|0@zTVj>Xfvtmfnw^YJN>$+;0v=2;F1rz4~SITEpDz_yuPfPQn?& ztsB3hFT6;uiM6#;ihtI+{^R)A+plllTX^*;HSsu@U7aZozdLQIv2;|un`GnNqPMtk zrstHyQu+PU0(?q)i+mT%6|GdoACsyXlsy)#-rcy$YP?{R<6ahPyQr&L@>I!S`iZfo z;g!At^JFtRBI-o`<&V!H>#{e9ApLk&tlY3ko-@&+ZNjh4>n=sr%z*AfhL@*#t^8Pt zmA`S>=8WRX+u5!`#bougKg&xkg2oQ9Q^gCK+x?w*E3X5J1#-)GWlu+0EVZl~{+ud& zs<71+v#{QK`AK61)2K_$)7)6A8jbCC%iEl;%fFg0G)R0Ecu|?>&2-X_DZjhqtm!FN z-t3ig{mVaXYqtOR$qY9!8o15dOOAKrtv+Zf2+j;!?({k5`y|;~FfP22JT|y2aX7Ig z@(;V?hOU42cc}yUlE6dOO>Z7bUf;;jT20OW@$~1q*^7Z6M`oFG(Xs@J+;)_du=_RH z-qo@T8Zzph0Tqt#e>80Pwbsup&blWzR6n&!J*8khAA!1en{+a(t#a;h%0dlRr0ACM zP{qn?X{&QB*V47&0%ASW3eN^g$0ue`vEke?a`~I3OCOqeR-7&m*$f(veYqBxn4{QO z)Lnh=gLSE-|a;tPW<@g=D)p>F))s46VN(D=1PC3pmWSM{t<3!g zt`>rn@os~uJJP>TV0T+ATdrwXm)ZFs2(2EgGzmfnFxl3Jn0z^q-H~NH>n`Vs%JKEy zAKmxhtOII*k)Prylq8?f8>dXC5xv+(Rtf zYaZE83nvyo4NAQ zJ?A&uE334n%NF3Pu6TrTXtnebebk`L8_J@WG^omLu%j%ejGqWNxYlxTq9z~ZW9tU_ zho1I|ov+#(P-FhqJMK-lBC#E{Hqrm9-av1z@R685B1f{)(46qa;^NdJvHF!PvgglY zXCwE(LtWF?5+u|rCOO9>hZ;M!xLsST%9Tp3R<=xDAdw4CZ+Rp;^jJQ3IH)Q9a5R98 zvu{u{H-7+gqQ?gx9yXb^kkrONX&uw8>fc_A)<_Om*}TPLV6=UEVY@9q0mKJFMBW@rD(AAEa8iqCAtFZj!oJE`7w8x|yV^~+hAE2g9m z+c@JkZkgC2Gd7X?LACTZSG$<*6^3@OSdsc$m4~jr80ADQ)%VKy^T~0z;qiy{cgU29 zSm{cUwT59Aepg;4%Y^~_W*)*@xVsZgDt{xfHXo^eId6MI^I(mVEVACIC!vie;K51G zpY6ZAYKl}b<>ai~7feY|-6iutwQSikAtQT>I8x3GE_vyqjp>KmS2Sgt)~uDcDKdxi ze~%{S-A{g(H^4dUqw!7kYrQS~`80>hKf!JuJQXXms~s0#6-`}V>ut-==99hrXn%ey zzCCz@z@HmA_Y0ioW|O;w@>*gYZ=E98NV|h{N5T>1=@MrI^@i*HDPSd bcTX*{I*K1JwwbbP7a8(8S*OAu12O#%s`m}z literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/no.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/no.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4956c3a0825787e711aac6844bb346adccfd347c GIT binary patch literal 17237 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 G=YIf+loYZ6 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/yes.ogg b/src/main/resources/assets/emeraldcraft/sounds/piglin_cutey/yes.ogg new file mode 100644 index 0000000000000000000000000000000000000000..fb97c1bc624a14d14d884e87ea064b311d50b63c GIT binary patch literal 7835 zcmb_>c|4Te`~PhzONdg9C5<9Rp^+t`82bn=kt7ifBatGKfd?t%kK@pB@tiO3|=1j?d9;PIdliE`9X{Y7pzn`xh zTYBUH+s6Hxn}WHoEBuPPlNC!l+!(HO40#L*8eG;A=XS~evWvIBtE-D2f~jv8_~@JI zn(OIfw15oW+xfEl6&JQ`TPmecx>jtEHUz;?f^yraxEPIwJ(5I`tf#0(ME!nLyJWVM zZlnfXr5=VeeB&I2`gprN_B_NCAd6d{^);5COv7ixtebtl!2vZ6cWw6Jkp@(Z`eeLs z404Mr;EQ0+yDe-O<&z5o6j>Zl&zO`KvMk=WRUJ?h@Cb}=kqVOwa~1I2!PG)$>YHI| zCaRQmZp~v&X1$0^^(@L8Ik^{K#MA=1;#*^IW#>ImECfBxl#LpZ6%Z6H;e{F?NKo5H z*f37mq*%P^lN3KUzwI{Q8;BdsGrC7MilW%WTy{@C9GoSak|kGA;@((tw5epKT!AHS z1VLvlgzK&ebFt){A&C2;Y*hA%m@%7pifuYq_`O1QhyX#HU>=`gvGAGiQf)sp+kXDP zZEIOL1VMLXonah*yMS9#R7Cd)W|tlBUX-|y?tWCOZXPA~>@QKLV^-|oD;ZDLbdOkUDK#fb;GzNW>;vNVSM7>T6X?g=BSWo~P-@(HL zQD6>uA;=_*5hCZYQxu|J9N&zrhllYgeS4ZG^Gl^uieM9_pSO^e6(;;1x6 z8veNs0!KvBVgGp@V!;3m7Thl491AuWF3eKu3-pO^nFW~4+z{8tNE!M{8OBR}j6Z6e zpxN}2+0Jz8o!N7~>%3R@FE7VmUPE0jL%&@5yIky(Tn1=f_6&RbZvX#oEYk^`5Fus^ zpbnZ*4B3d6<(ybHNDv}qpNJYY0{)1Rwv9jRp5z*olpB=t?7jqR3UCZS4LpP_mfNIk zlXBeCbD7T0&yUK<%g^^n$#MVxH}*`)0tn)Pp#Ake;)Xur^*&6iSO~*8AUFi+T8QiW z9<7g8HUTz%)@%FI&O+7S(%S29Cx9u;ryj2f+D8BdAQCi<|b(@w&$$ z7<68%juBGE^(0;V)#FrwJt$MGysC2~>@c;y1A&UoPC+-sBBMMI6iaSI9);A7q?2

w%DVHp?Vhh2sB>UkqW1ge*LSoA+O#o*F@^EJ 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�jquylDnqzYOiwfi9b`gK;! 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

nR2r5+ol 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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 zcmb@tWn5HW_cuHu5-KSrjY@~o4bojhw{(Ma455I4q;!LHgLH#}bl1=z-5@axJ@u809ANT*|FBgI1Tdx)Fx#x*r}ZJo=aqb>GbSgO833Iy?e>wob{9c zw0mg$@D+Y9{(-V*-6C)9|^*j zAV>e002>4{!s7|~-17#FD$p2@R@^b45}-ETX!Uz;zd>6Jz!q&tgA6nRJszL{bo@yf zh%E}V0lw&Sy7^#crm!q_M;O}_yX48(g7>IBFm{YNc;c^@0365uydPH&`Q z-t@&V$;1i_RNr3;li~{a>Qm}=)8}@E=XT3eX3OVh^HXN}31*A6cKT3#{b|?#eLblD z2^sV$aveY&xTGU5DglAeK_IdoM^Y(A(jLcqtsW4j zd<>!lfy7iuC7hUgVmRag9Vf&`&h%8cTvavg{%r)H$$jZ@767h301AMJ6_A`CH77dF?v(j4dcazp6rDEcX%Ih$5nT8P2l=Y0$i+;;Vk?sA)8fs0S zr;0{jlovP3+MSyZ)nUl1AqR|y0}=;P1R7O0wn+#p3RM6$Yd56}_N#8vz~`bURB?E+ zeUyQ?qB7AY&qYxIE*L$_6kC*@DjqN?5-IRu3IyhY401#Qp@|MtbyJFmi=a{G;)zPr z8$TD_Op6=jrO%6liqaQJgp2g1#m4Z`Qpb&h>GNupWo;f9fMZ!JlywoyS~16s>i~>N zortnp;@91jro%FQX|Z5gt1^JGNg9tSDoYj^Co9XG5T`Sk7CSB?l^5_0EJIxv0}iK- zpOKYiO^7qLW$vCcF69Jz{KH_bBi0S)lnNICL;-{6-H%aJ3(N`-#fM5AA7{)&U7G|j z08yw^c`;yH>bx0I`m%o*Gsc6pwKLXqMP2t}Wv2$td z=8_1YIj$}+1|W*LTStt(@?r3F!1SYw&I&XT`E9fWcX-VFQRFvf2MfRQ-%~ zS?#%j^L{Ph+K*6y6!fD1eHIntqfc}oPzO;SQNSo=Zk!1=abTP=rf43X$*@dOoG}1H zvI*ck)F#8cXw+Y@Wo4-I0P9lcsR8-@^JCEaPZ%kG-~mJ`c*a`A=Qm zqz)>Of@Fb#pgMc^8HqkGcT&gZp)M~sPA81@pSl>Z4Qm4UzHc1ZhPfLoOMg$vm31Wn zB+wVABT@w@pl@XtkqH0+6zJPcWTWtJ%A^cP?xZ|GLM9TSeW^}hl!H!4{^`MGRRE+| zLs)+kIYo-}eit8RMNbaw<(0~djgdjmiifh%XT`_ptOI_g(q9;tAZnGIJFa7y1p@te zj0$|7WsQD|2fZf;fj)l&hXXnS&~&FcW76jl0bmvonG6DJk!m>WCa@sgGk{g;p7HPH z3RCofLe08oPzH|PGq6PgTNVC%1fu*Y89jt9>Hic%8y%DjL|X4VKn#F&91v4z0915c zL=TWUV?NyKbQ8JY-lL8wN_P)rI9cGsEfGJ^7(kBI?cOGNP-CVCm|3AZ_l==Im;lHD zKC5FRTU1MAQd$c|0{whJ3i|ZaR*P&U*OKYSgN`VmpV%N^TA;_6z(PqA_xU0F6y3vj zuXrGsIPbx(MI5rcfL+1h{8Pt4f=)(dQbTq zSc`ar6Ab)UC z}zi$6M zmxsFl765(<0`cA3^Ii71=sw3<|Lc$9RGr9bmc6ndN?_r7kIeTETsVL+AE=O|duaZF z@PBFc?>YU??EW89cp%s06%di2(b{uH8H+DDzrF;OB7??(z&8Qho4z-<8rXkfm|%;d zrU&9#7gFa3v7%AA+`CnsmNQCLE|4LayR`y_1OZnAGAYoQmv9Zp>UopKCAC|m;fD_? z``+IUTP;UrfY{e@J`_YX6adl#;C_Or6yfi(;}VQZE1{&`IFdvvvU1GbDUhL7B9lN_ z`feS_aO0L2sdy(940N6lo|6kkAw1-Rz0{uk3U+EZU;F%Zqx@+381!7cSN?-C8U`lYqd$*ci86qs<(1=DTtv`ta>FRYP+8I% zj(=m&x>yE0Z2vxiK4F1A1tNunn46b(tRlS@GYQD)TzmXR-1N;ugZH36z;=@A(W~s_ zkI)wCzM_ME6*l%{_2feg1%4~bBh zFKv^FuG{ubNy2LIEQw%j(JzvB{35->?5Ef0ua^kSV6P=T5O^Y`n5j0_p5oQ;=p83v zdYWqiua-5#t@AX3Haa~nt7i=Q@iI{@#=JXt zb`I#ZtqL#~66{~KE=!5GqQ43d_R>W2;+@vV+`=4)g$UJY8ABK(N1*s6r^FcpJ!!rR z5v6`}SS#AK=;fCw2<)GBtPA`G5X^MnaR)~e-f(K*n>y>xIo*~z+p`B4|y8bl< zR}34_ppj+xjOoGpYMqFj=19Y=Z{DD=#oQ~^CO%<{ookdX4wGv-*u`<<+-7NiD!*9S zk!%J&d%If?n5B?Q+hSnh_NnKRdi^)`WA*cy_dCT${r0KnEDOX=h0C7wOs0aBFOAUN zP6|>$nWAjd1h(ffcgO6WW_jhNxVc>2b@?FnyA-w;xu@{vJPp{Y?(p=R+}6Pfa7H8d z#g`dmp|wN`xeHOrjp5GyuoJIz2}<1*UJGHNxd!jLlMISRiGH7>zKoLLsrjL=h;}ch z8?)N@OpUhNQC(=Wg`|l;ort`10fpvQrPG{V{K@J3jig99_Q3+VO5Q1|uhjF9#kZoD zzQONaMNUvIAT<$W1A8lhio(CAt|@Ldj|DnOtG1-#P%QA)L2=(G1<<0=sia?aA4DET zH~ru^h>D%A@3cMD%VAa@@Vfka0**@d?S0*|z2iI9oK9|6G^bbCT_pt%(~Zt?=1rr` z$)D4!3m@H>jb^F%uJ1q%jazcGl++R)A+8MuOO@cyZ%`=-&R)Wd;quR7@guI!HmBYs zM(CAsMZ7H-B%Q4lmoH|X%6M1g>TQP@lxU?0unUo(S04)Q#Al;Tat0z2Nnf%#C!KkaPmH7!$cguIZLW0r^Ue zlM;0yd)(EpZ$q}^n^-=ihh={6uGXb2sUghZ7~dTp0E9lMQY)_BIh?GrCs zccf6rqkMFig<93Zhee)C!ukhN+i>&@3(BqSZolGJf40+aYF#y=C)X6NNagRro$+>m zo#{^FJeQ@sx@0G1P}|r1t~;aEC8MVv9N#lSC}$HSRt>>Vk<0-(LifJZH6n(1pH+x< z7qPw~&}?`9?)m5UyC+bO*SMfpf6fd1AeY2lX%P1Bwv;~(iw)2BB`1?vH5LNoM57O%aSnt5I>t~ zby>zp@|Ilm(ZO=%alv4}5g&iiyF3kI3YZ3ePVY(1oTtLF;^GYc4I7!2Qqg z@EmWmV694>@9Vic(^DMnLfR>c`qaI}BZ3SWUqiKC$sCIk@))xbMl6qhaSrm-gqm~F z&6?=^A|fmfeviKp-o#|kcD=Jpk*#4-$I|qn_oZu;D6Fo?cwmFGO?Oi~DxJ1_F~?U} z+s*UB)%5K|^tS77QhtILr*@zB+@IO6`l)T_Z<$T)Y2@@&k8`CY>v2i4`h@|3KixmcRkM2>zq(HL_ill?QSpl zKHWM9QOX-^Hc@DAEjYP5H+Gp&MSEU^=F8k{K zVdUOJJru|KqPXrmC1sWi@9g!Bere-wSuNdu)}&`{c((W2{c1kvntk7Om&IvA4O+yccrL36cy zypVHd@32?lP@E30NHM9jCoC84tv+^sCLqz5dz)9^(^t$iFw$1eE;w~rZz)ORaywJZ zH@q<9UHXG>4yRlvx3rl2>N1xCE&@|Xa5v;#nl?$roZsl`JZx7lfZmR#HQ4SF-c@Zu z816j2%dyYb%T64twN+J@Y=fOcImO7MUZ~GVq^O*>cC_7)7({5c zXSgmQ29@qy_tyO+5mvCalxSFM%H-W`ql}6rx2jh~=8r3(TD60@(5CX2oo@OUwsXU? zFMrADG!6ngnR1`BQ-k-9#hU$NL{f{1XC$J8LQ4E*^VC`+6B`W8b4)Plh=_R3OIPiC zygBzQr7k)gQ}Cm|N|G#c&&_7^C>gKV8Ryclp*BN{?<6#^t_)>H24FH{(3i6(3L$>m zN4FzbiLUxPxRoE7T6`715lU(%w`Ec!^kBN18+HiyOrPr!L$8XXM;LZc((7^4d=(5A zRYz0f{jMuh?6jGWd0^ap5^X{S`U%~BhA$>#(zPdUlZWYoe0HcchJIOK9a>hs^4%7; zJyH^&!B&hfTB_C0+=jqMWhHoa7N;sPV*DE0&`iSX(F-z5UAa0)L-GuYkpZ>2a2OhUUvA2QBwmo|hUs8NVbQ0EI>tVQR9O>0DtT#DSBgTU z(^$&=up)Z9huE(B8l>ivyTyp=6D~TRFAvY;b55O`cR~WVUE?GO#~NbUYS=yhHZ*H? z>Y%gC(_Y)MhTi2i(vmpQ!7ZqlRf7mydFGiW4ECC*zfdp+((Y!+AXOm?dDZ|AYyuYX z3!P8s&ptdJ!G9jiSyWO?Oxa7w*u1Las!PGl@%$@=vv-RyMdSAOkGip>K}K;`wjNUz zCGJV%p?pX9V<9Y1F)9b!^!l=nfciBtrM8QeJV~27@Js%&lq#nn|0D7V=T>JqNBcx$ z6CX*s4U0@{oQxR0+PVa=J@hwcx$2n5I*AWw)S6TK&f*y#GoxKIOEV3u&uxiDWZw&Z zal~uX=6O7y;){}3d~Hy5h-lBDnE37W44H%s6_#F%YdaD;nBVsVtPwJr!BY(lS{Ic(`JkOF?0A=I0PnvmWbJyUV+>1)IJ)Z}H4-#c!t1Ho zT(x!|wBYessgshV!5wc^am=VA)Adv(U$#PSrV?A^%(~`@uT= z_<+0aC`{P!ZSi^6nk!UXWxsEO>jz6=Hod-b*d32Yks|KYv~X!S{;rE_=Mc@Pu&aEz z|A%qilBB6xO?zA6`9kzpo#+{?M`!HX-sAfu*XQq_lUq#!KVIqWiK#?=K@r3{!a!D- z`s8GR7hJzDXDSzn8RM@9GF&k3BoHiqo%c)f9S`rNr`d#KDMoFbP75WNd z1;qs$|Jp+eK3t+Ot(OzhmG0~Gw`N;k&N=qOprK}{{0t$=ZLa=Xl0C!9T*8c}kI!gi z{kTiBD0H3u=`-Pf(x%|MAqg6bpJA$)k@4LH^EeM|N3GUW5?wFg?OPX(Biiq9#T+k2zUrdm^OZk)N`Jl6#d z$sJ#ytm*CKZ`z(kLb?*kd{+v7aFDJXBZA^-NusCX6I96DPNEZYE3xcU)>*s>?TJKa zsK^sGk8=iGHnzwvRA!FOYy&0?clET{d&lanNt9DlErfJE391<64cE%Vll~+~u<#$X zjtKU}a{FG*txwMrk-kioD#2G!q^RIf{!UFLU|sSv!O zfToXf5hW0LxBxgnwT(#^om;&|P3$NXG=?{Uj3ud6xNc}Q!ft0vdgVS%hknbt`}YO|XfltW09 z;&Q(3gn>;|jlLpj?t{BihbibzIu~#Pd$^&tH#tq+)~8=oO|eLc)Y>Co#LyB*CX=RY zevu}<8zrwg$K!9GAF^aXEnY8^S=0>8sArpVkdm8~4Yq=WR1vxq_~W|!w4O-hOC7(8 z>Z!?(gJE?*Q!~8l@2U;HW$l(Qs5-{O?Ut9VdPJ7%YuPjHqK{ptU)%tb<~q);};>H_wFo$6}_w3a&U)+Q{z>Gx4s@@g{k07eD(8& z-uyb?gkMSSRdVVq>2!zA3A*C^>qtWoKmsWDM;ecTzu&_G8p&=ExaWvR2n@sv1PXAJ z@e~1i_<(MJlMU1*o^_yI`Nly(H4&&Vmc7v2gAb_yiP+L?SoMcON<{In*soC^Ue8ba zFGYR-v`)2WU6WSur%LwXDLd0n<$Cfi+1bO(af8z{1iE#!FvnbD4-YlZy|>S36(p1nxVD#=8o247jo#oEz|6E&Da*GflsZOcNn+aSeT#Md`*PS#rV=6Xrh z8)26z?zz=;IHUdThdvA*OJCJF<;iy38*Sd<)qd&CuQ)cWTJ3kAEWEf5}5w++=+j1R|w;66aOxn-ICrL^_ zd|{QRCKB*HLNl9l&d&Al$f;%va_8fqF|{ZhaA;w6s()U0odK?Wu~kBod9{GfmYM8L ztF6)14`~jrZrhK2rKAYEvT>4}P=$>0KW}H`Q&iPi{+fD_rC43vn1kmOm7IMw9NIVE zs!LwcrRc_gY}qmS0|!&cz-%rG5igB1JS>SlINx@1`l-j$!cli}#7|T5_I5v3a5Hhx zrliHaF}q?(%ZL4fJZhA>$gj2og1|wm8rt-jWVr4%@H#2=`0KG~81waVDqDNNN-Q6G zBOoprVPD`?!<9P2V_AYMBy$hQw836AFQ_mmQ2Etak>xKUsdK8wS&V*VjbpiugPD0B zp!*%>Xzc9ik;C!k6URH@+Y?&$#Y{In^`mh_6^p`z^UYX(w1JYd6nqeN{X5~m(9*$* zo7aY!9;T|@OsYL2N8whU)#)jxf~(;62#O%aCBgZuiZTldfzj({Meq7+lH+agRnxB_ zcFpIdJO*_&nw8QTkr~a)!lZR9AL+DkuO{XEdS_CHu)>6e6MK0Tu@3#JRAc++9BJfK z4D}VoF$KY{LjhjuUTl>iqHe=NpLTCgAM1~M^~-i1vAn%jR~D(X-YYLn$TUNZntkT? zI72!P(E2balYE35_b*7bogy3Yi}cUf%uMlDmG3J!#Xo$vSc3I=jpUua`d26&;hE0I zX7BmtYSzo|@o%0+|IIp2UF)A8KC}EzHLYN3HoH2t@Yb-QdZRx37gX|cPzp0OqmQ}W zk}*5Mam+qLjo8M9yKUDiuf67YdMZ`R-@iBrTQMM_vc5RJ^#C4uDB=&%EFZKir(>hc zB_3>JT&jac zU_qphpH^^BmK1k8l+I1xOQ1#+W>Jxe9~O^KTxeHP`ZK4HEJYg*d#Cg2N0d`Xq_if? z*H#{PeIC4yun{Ix@865$OKVYhJAj-q1ffmE+FgcQ6YiETq!+*THL9~;AI?Zp zF#aNV3BFyS8UHs^K$g!$C8GVNVV`?0rE)Q&g=Xyr0V#=IE0G`=l->7RjQaZM^ z+dXZF2&PT6R(Zo2^vAt^=MOB1RF=5%R@V5awM!$3!jI41%k@U?mY9B50FK2?09{h= zQcE4Pq&vyPYRWC4ZO2-==mfl@uII4n7H@Z2m{q;dKPw*HfK%;wkwI>oz9UOHm&1># z@UXK7zq`hq{SpO~P|a7cFeuiJGt{KH!(IVZ?3dl&CW?hI`fFt*s(a%(vEo44mKGfS z@6=6Y78%;F@_1zy42sjjHrx06wIy$lczKEY&)e1NCEw$vFgChk%O_1ktrkXfMCOhV zF3+;DFVp9aRnBsMyyjm)i~h5~Zlr&U7^et#wSXzqmhR{XjK$yHb@T06m`|j$?b20> zy8axSb*Yczs|z)LDv`W;wD=bsa`Hv<^26GR$M`^Bo z3WdTBr&m{=HwyGBlkGhxznB0(&>#eTNBL&`Bbm{5V}jc>#CU&NbZQ_O7bM?)Zq_?J zeGv3I^z$4{4SF-b7>ysv-N$0_7w_;UnJ%JnW)r-;b|wJ#nGrHJc;27FEr=_^+@7TS z1w)A-VzsS_hZj4RT9DCxg2DHiQfcyK;|+;mX4{o^Yw91R`MugR!Jr!~{1Mu1dUg6O zdki_*#UahGl@Gpkvat6r2Dhga@n~pIrXyS#H3vOXub5_@rS+6Boh`g|%a;?!!9Qpo z_aKX1IvMCp%^`}Hyx0$cBbuztJf9T#a!p}2&gZLI{gw|`oQr+W(QD{=qFzB{;m){N zp(lJ8=yD-Dd`aGac4B`^J0#S9mz0pIRA2F7!`GoMG0>er z{d8c-R=B~$4d&_*z%?VbiW#ZERVRER%wSqaylZ>T4z{itPcg)=JLqMndFwyh?{TW? zNU3<1EqRoY=WR$s@=Lt)E-U0WWxjo;L`Ht3wy(n`|E>F$69=)F`VnVLmF`5t-$h|W zt-0OWhq88yY^{{n{V~(=sqPvo2gkeOn!ie{-Sj5f~#(MHGM~e9P|#d`|-BO z7_1}W3kl0Rx}sX(g|xkk3FDX5uENs71{0~mtH%?HXSK&3SR-xCMPS#ySi^O`&O(lU ztzv8b*7Dl5@Hw3e*B#E!wh$ilrEM`h5XiRPcSC8}FS|}_cmRcch&AFC*G>J@Muv6IZoP2mtYWOQx$DjPkQja%8bA>t}W*Vhsyf zVFf5IDd#@nMvtSnoPGBr8nf~XJO?Igo-7+|EXCS8tQjDyT1eH0;kK90DIIx?vEqo}5!gtW46ov(T z^DJ+%H}+OIW*Z*Jk?cD4S%GolD4O+aHZQ@|%V?!Zk=Td0wvBUo9N=(20+ntHxPDr0 zzP8Xo(NOgzU%gerWBh~hEG-DCfkzHn(obZMlL8ic=bYDWxN(0!gpU2fSALw-YW-us zB+KYIvkkYdd&I!p%HeLnf%eqWQbsviV&}rXjEeNL{=3m7Z>y`>##&R(*Fq4*YJ0i8 z(!{uY4O4f5c>aN3uU9O?8RT9Bc$5|8;9VaW+g2<-4){*(TQ zt@UDHd zW=B(}8u5#HR;3QEeyw!HmvMvB*%n*MCup31Qa}-Xw>hN#rkZ#6RnA=XK%@2>ZAhM! zk|&+HpXspT{EsDrWqwID5P9Jm5fSKP$=#NZKrrW?ZlQ>#@>EU!2jr>uUlKGT1+!CM zY#ckg>nDltzW(Cp^te7mA6Yb@_{VEcX_X-OdeB5#tkSh?*oPm^@rOmpidZ!X;y zCLprhJJbv_$o4xkjEB>rhIS|AH#*TlRzr!F_P%#(wO%NOz5IPhR_}X9axVFPv~l;f ziSb4vMa47LUh4En&|P9R5C-Kw&DCDeN0zj5z%Ro_!^qtFZ+jm(yi<27B}p{g4BNQo z?DyKn9=;nNFJP(aU<^%2NJ%NwKAc5N!I+rnCDe_&#*!=(ll@+PfmeMF{Y!F3F{^op zXn-tCpS(#%wHb4A3(N02zc^c1=4<9m`Ag!LcqEXUuGd_8kRf$Uaz5Opl4Wc%(7`z{ zfVU@gd2(&*`bzOQC+QBQ5T#r#Ykq#=HJq^5`!xo z*QU)iW~pVL>AfIxypvTd%jGzF{M?7CLTOo;Y53VT@e8?qP22d>xgdDWCGs^!NfsGM(vK|c_yv&?Xzz-fMmC_0%yYHE6UpDyc0(sK zhTof&MB^XTm57TpM@e!FaXlZZBZ37sakx5wfrxsjaSY9!Ql_ zbjccVg$rz0$~e4FZN|H*vWx%f)U8Y~DMa&gL$<}$nQGz1M*iK7%a4-3w^PS+^8_cu z8FjJ!?c$8tI6Y>`nm>+^-7S#&l%6_P*R_pTc!Z@);JqrdUnPu?Q=;sXHkD_Ja8_HL z5Nfly&w(0Ppg(25a#sdAQ;5IQRp)K07Y2SUO8sEPEz7xzRpx~RYI=IxoV99c5zsOr zJ;iYr3$K7TbAB}+Q!OQ6N#na+sJGn`C09qYSpYAGHO{z=JR@soF3EI?OYE2RfmbFo zXp~o+n3ls_a}44{a%$PCnM(>ShxyWH@4f|+IaOR4F6>lRx@4Xkg!+V43y*UQp3mFH z!`fM2iS&0ihIFo995uGAlbUg*(p1nBQb?D`)XPf0O!smp z#gz?=X40COqOhybIvjP!yZAL?`Gp4`EJ|Q82KOblB#|eb$91cQVcfRdYG<(|4mW%u zBMkJfLkB|u3ZUE{I^6FN=0I9-Ld2u%GuSx-74aB>bcc9!34`BVBOYI7Xx;}+hVY)< z@5QkB(4x;N?;)SMQW5l<`Z7hygq2j zf>m{ibR`&x8Fi`-dgOxXHGsxlZ z)iX@|dagd)Q$1ZA7F@ebm{R26+G??R`4vr@BfD{-h4VPT!4A}>xd!Ne_;f2{lLSQa zZpdt6<`XeeIPD8+&JW+;bNS^UMe$#kc2Y&cOXsPoogB(Dx9z7%FOsdR>qS9WAobOLb^ zi!jfq)#jo-ECAb2_QLf$tQZ6e@@ATToV++)y{@=pN-=GEsPre|xJVb2rCa=sr~sgH-Ec`)yUjy%e6p8!+`LWUBlQkU?%wLc-`)WqyKaomdPM5y{~bE;5NP(1A7$iL^9?gi9h$ zbfobW&uU9|?w-<4%2STBIJc@+!UeZmOxm2Y7FULaqAL7qN2@rhukn`-_O>v}r_!J{ zR3JA#`g@b3sTOaC${0<8(K+0wq3%97Q z7IL}gE<}YBb7~9_M=M@7wO6j+iYI#(MJ9?9)T%P;uWcUt<%SrYxsXK8vS=FelAp%$ z5ES=j+RBs&PFV(wS?#+*HlLylY|B(FQIOm1&eRP=JJ;P|w+S1iBihN&xzy8b4|zX# z=c+PBr8kFzji+zmD@thAhVhlnI@)f-Nw^vAQGElkGt8B!BSAfykjk3e&rc0>Ft z&mBIW=!y1Wh&}RgdH?!*xJ;uQicJZ5MIHv|;_lE2-SC=hD!^FQUUPEE$aYLMU5bDm zY|C<0;p=PrMLc^&#l?Ul$NX`-jPsbX>A6siTJm!+hV_IHl%oK_PLbAmST)02pMK*y z%r5##<0!L=hyGM?z_OsfC-Fv4s)y9HUSR!nMd*yn-%0Xz={Rve_xu=XdwE z8{r~E*Qll-veqr4zBr#{{xel~%nypT776zVB<<0|@99q!5s6Qir0#>fT;D}p@7L49 zluwb}lQn;T@IYP7?^cNQkTGc7l->(R8f9st6E2+Ej(A&0<)z(uK@l>noQH=4E?HJ# zqqg`{jho+BN`BEoGNq?>BYa|%2M&VSZ;wmjG7p9;~EG(3e#4hONV7&mH7A(_J?FIkx zkwXkym1x>t_YP{iJD=^HekYuuCwso;+n=A(Av%?CLOoPCtviCxhLnQYx7 zbZ6s@{r6l9>UDA?V63Tb68rj%)iV^qnr| z`X8u6d)0m>^mR&YWDNUUd4AC!GmD^d&@TmpYb)j@jNdVb)9zQ?0g}ucZ8}8L*jN=e zu8>Q@IV$Tr*97vr zUqRxk%V*4>@TK@xml>@1bfc=lTzjE?q)?T$ldiu0GP&T8nuNG97Ewl_>1#U$^_8gv z4c&%~!lA!|zHuI*MwfTlbry4TZdYr%GOw21b<>ThQ%_)L{QfWJre)Wk9r5fWwIVBo zPBYY&^f#Wr2ID9QFHv`ddg|(M*?o!GDN@rn%Ct$L`;yYJ6^w+`?&Ij+(lWYfh+4Va z;*-Sk_ZyOEJXBKd^{94|L^EVtNEv4+-aTF|k!(y=>cGuGM}mS6=T(uNwPMNbXp2A@ zH2wNlD~>lUe)M1pT_j```(=LT9#r~4e^7aA*-W(Md$LiOrut@?I8p#5Y_s7Lu`*vR z2wue^GjSpPvtAdYRIo|^qhvkq1i7;SXUR4Tf0Ng$z`isivex;=AKjX|g4ZSkZi#{% z^|>Xjuvs6y5w+a|t&LaWSw*2A$Clge*ddC*KO0MO=Pusf>TXdP&V?`3ZbwmMaEXquZaV_9_{PdY}T2%ltjXK zOvLg&9wWXOC3o7T^1D_wW0lD-vGe)Lc^6YoYK`0#@Cp|x&3C3UN0XaI3F4DdMX~zb)zQpxxUJe- zZjnR5U%G3%2kx0D(`)cn0YtGZ-*Jd)=8)~hCU|xs{H^*|FY6&er7ZCQaD;}wDoGfw z+g=Def-&N`#dI6E{shad&j^arG50%nYM8s6Y5Z4AAGx2Wx*|E^yWf;t zzP#@$7A0ijvpc#etfb>yDmD@gC5IXk0VuJgc7CFjst9eGC5=#AKd1|G*Q`l7`2g_f6sJ$=9yEhtSYQhCrX*K^)9~WtGaHByQG_h zM%e#)4%2~r=ousB-s(2I)7;W(m7PDXZx+i`Iw5I<-<&n*e3is_nfIf17e3d27TM@1 zHDQ09lM&#$H|=~G;haGl)Oj1>+xx=0O{-(QDy{Qf(8NX70Rlo=rH(Jf&x%(&r_RDZ zpJ=vO^QtN`=>!HL*n6k+$HQ?jf{)y9iSI>t7^tnT|9*`p<8%_j1$Ab`kR}B-enxpZ zB$ThBF2!?nT&U7c^sY{<)Y?qS%8_Iw$oa-iWTz)#48#S>OnwZGFe)O90Rx6;izf(3f=J5=`PSf~0qMKtOy6kTuC>NqfR zi^t`0R`*-k=~^A8(0(VgxG^gP&mkGEk>s6c>}(@j?jPp3A9|^V zZ^*m9ZH|o1tw+`GF~vB1(MbVX(zsV0c!v4-q~;Q7?vqEC8ZNQ837#m}2T6s39Q289 z$XRIB1y3;k!i7HDBi_;GRkhVss9+njm}8mMv!deR?wXqTYUId`^1OC~w<^6Ur6J{h zE-|aQi%j7&>FkS}(qHu5mz;jP# zaxd1VL2iD>w5)HAoW2FzS}hTb1OIS-zq$jjyK{g3{FmqxG>J>nipFi%;TaOh9P3=u z?C)UhifaJG-I>eAqfm6V4;sryP+-S6jPe?D^0_&iD#@Ug*kC?mjT?5G%mscl-J9JO zFW#{WNDgbU+qq$1#oCHb5c=>sIHlzB^t{{sro3O9Obu!p>t@o`5@#v_ZaoC(aX|GIBW!Z~Ys?3)nErjM zgqHCA(tp1*5&+mADEDU_z$=p=Rq@70xX0(`XM4x6la002z5Ro=oz-=NO?o=)G5!xQ z;O%Gf0CW@&35~qxb7#(TIv_1@Vs*Q0Nj7eEY(-r7iD$hd0hXPSOYAQnVn)dqU1AYC zyn0R^9yH=In-Ts@EIaEOMb7e(2Em8Rn~Ciay0JO0)t(nAW=p;>P$hl3rNMpWn;Op| zjNiBae z+^FHnplk={3S&5@EdH`?y|=JU_~Ont{vmK#)Z5>zx+#6>g1SVW;1O}k5_r$ochhrQ znIAUOLqiqi^XEf}IHooVA0HD42JDt~bd9WE=U#pfgk!N+_ZaEvCUb4<#Lt!z=v#11 zDJ@=0SR62^j4|!GG#4}BwO(_(c|ALVWUsWuS*-PM;~eeT^UtZzFT6M`daqW5Lq(cz zDerxHJtT9oV$<ouBY+bg4+He7&J{YdT%?})zOax4C~#EoBb4?7PnAidSgXAPdB-fhdF2mW|VZ9R5i zU)!=*W3mO+820?ST=-fT8mp6cS@^8AtvD6@iY5H2UGh(y zxwuK*lSE}%-TC>9YqAklpGCTDj;bc%X?TnJU!6&N-Vb$I>>Xo&t7vZ5-*TTl7xtK6 zzxdP87SpaPRLN27$EI5`v^(SdaU7fVEey>%_}a>h6ybv9U{14-yuk0A+4Ef=iebn& z)P|cN^QJV&6BAa^!7A(dnlBp9;$6~r0_RJNOxvMJj!uHpPI)F8#AS~ zJX+-@-*1-hw#w(1%DN|ZMpjjZuH>zvBSl6b|K6z3l)CDgF01iN5x~nPN>np;Gq+3E zK09)wzhIkL3l+w}=t_QV*?)AC9FL`$O5(3s=Wr{ zJU@IX8Ms>O-`!|~b?x$VDBfzJ@X7E9W;H023ecRz9N=%+hqPAWa$F@;DpmEl*b*S< zIOQ5T(?S`9|4#ry5WVjk_^*-(UbgX^p=bcCE&xF3nmja&BxqUP4ZY&aHWC1iP9+`r z!sQ$P`c;RBqmxwQQ?c?s9>k9LpyT$?>nwAt>rpQcrA-@CC!O@|82%881? zF}!R_J^cszcJ@@SudeC0FIGmy>hw?jzs_;rn>MP7m~74Ny*ckHjo5JYk(`#ymEChs z>&JgluMc*8*NOZQfq!CLwGg5|4hCXH85?P7Wdqp=?vSE%ZBS>8TQbVm&6#WGSKqJL zS?qfaa(Qy9B#*1M5Ow2>=;2kN8moGdLIgs#gRFz~NCVSiQ9Ad;QVPvvA=wv$m_R^T zDL#hr5&!_KE&#x=KSHBvH(-*%1T>>LLRyrBmxz22Qh-buMCdgjPXGXV29{3Oy}tip zo?>zDU7pAvgJ+5C1{4$Z@!VznZKc^QaE_RMk5eECaFGbAWnb*RT1m7O|NFzj7-u|Y z$I<1ynGnqf;ZtUfpK>QcGJox^R~5(-g^=fBTi* zEKjckg2r#~lsea@Pq%4|@kYC<+Uw^0w9S<6c}^@qtGkSbLI9p+sVo2hSUmuMN1*Kh zngZ0|f$@_O6S&q+0)TyH%FF!zqF1iYC;EA`C7lH&@@q?7?1)0`9c03xj^45ym^*hQ zOnXOTm*p)PZ2!Hom|X7I+Uor6QKmwFr`CEk270c}?QV7%w}qz3R_$8uqxCL>h4poI zqifm^g7e6^k~kq==2M~(g-Cy?r-C}(n@NuO5Qk=~J#l(BV%E1FA>m|rUvjCf-<_4Z z^*Y;m_D^-svfHCdoUJ|nXK&NLaLK<;X2{K|H~+tu^-ce-pTRP`=W#%l5Ts)+JZ(u6 z@l^P_Yss|yHry8o$P&vVdOVQ`zD3CyD5?OscC?G#q!fS}>_+mY)Cfju1ybL9{7Wkm zH;eCG=R8JXr$`wfj7{RZa#uH)(htIU{k|7D}{M5&h?&ZnJ=q_S77ZI@Kr z4<6lLRqhUbuMmMF;b>)jLk;F*?T>Y}=`u%;B43Q5g zQ)qhZ@9C(#C3ZUoSpg19oU*^a*#^De#QCewG|s52Ek)XNB?nAo7aZAlG0yZ;eP&6& zzLasYH#37p~*Ynd5>YTEMIdBUmbFaBTfHp-6oUahDMegz{#q%4k?8j)nbxH7|_w1_mu^)pA& zdM!qQw+&U3-kDCP2XB;>J7^8EUVn(7Ty5;TmW#9k@WpLnEv3FO$;c3WU!JAALsn4o z^;#O$IC0Mhz7??;1WHv9xV>Md&S5r~W=jnqY|Q-%xmLocmH_jw)?9DjSASfaQfucn zyN0N&ER1A#Ohs`J&T{F2;VQM+3OJ@=#X|m42LU--qSKJbitlivmP6> zelyrl@c0@df9VT72gUkIsqdE3BvgkS?Jpz-mi76#)M^wjFd*S(uUA7)8rKe+l-*WT zZ*fi$k0M4X8AIusvRiOkIp{hgWoI#;o-^|4Mz!kNvMLUvIhH2)eaOZi9>uhXWsP30 zj)A7_9FHk9i^UR>I9+M4kN)o^zGU9J{aWOrw63#e?4r)}qB1Sbm#KH1?O~&B8d7Fcc_b{abSF!#IkRqwVYa^YJ^hK8GP2SaBq7 z+&6N1(W}C^4_SlnI#Obyk+}=R=QiV!_NuEh2oE9YxcdsL(pf2~kEFk*_w3(d6xRJ= z1zyF-8bAp^eC>oKL{ z2d_!rcrU+^{Wz(zys`GpIkse%cgZA;svH&Xb}yX@oD(L{K``e|z`hVv zdW`@;(JD%_z9S*Oj71pYvm5-7hlWctuazJzOSVSd9JDpsV%s{b48=4lym|1A<@oK) zkFS`KkLu4URZ`T&Z%gaP^VhU~or}pTrp0)ax@c6Cs4T}Jjvv+y%vqznIvp`;YTqs2 z2AhIAXU?2ZuJ_1WZi|ymdfV?8!w{yGI;(dcl@A@&_gdZ{7Qh+{{!h-idC}9&&&){! zk4>-X(J*W{@oEv@w*$r_rNMy57({w*`xus})uNa6A3M=mOdnpV72Z9bDm3HxJw6Wu zGHd<5t^pqPC;$LD$h!8ni&6*;m^SdB=r!o1u3Jzv+}m9_x9v`BS|-bH`s|5WtWs(y zRq421mO{zVq0HP*gt^YL%lBQ9tEGjt^NTnQjcEccy-ArgYSILw>-dTZJHAsO&s=!v z#^l;~JV+isjZA?8ZG=GHHu=+fdocio2CCfOg1vO;JI$SEAt&Nv5?V3MM|$6@aDVXY7e!yhwh7*f+BF(jXm>W4F1$8C;?gk0@wcCvDioeDjSrz?4vQk$hHQV zO0vcqr*RUA1mDu)tMcl;RJt9^R+8=c#n$NUd(GfwH(@5qn)+F-5C+J8xQ?+mk=1pE z6=!HS&TjnLPnD;Yj{cY`YSD~UUk-Np_6xE(Q{-nlzUS#+OqH#yy=o_s@=6}9Gav26 z&%I6E!>3?`%(M#d{vI7{2Oz$8Q#}ey-axa}r$S?I-H~FgH;_>@z6kEVX49P-JEl{D zs%Xe5M=&-Dv2A61p@~%|#hZwzJe#f8X{;;BF0HDZI*^UQAJ#60YieW%n^U^_z5zbv zD1ZY1aP4ExN*gRxjR&cX35xVuwryXPTQ2X^8>jNG{a9;rtmWb6$6I3}U#mAg*SZ~X z#pqTm_B#XCNweJ1l~-HC@5ggpCdEJ_P4$S$2i@`qN+XAb9F$kD@^pRo6bg;Vf=+!= zT1^zP+l5|g&YWI%u`)(Yy-qB;FS;8EXg~z|%U9meZo27v!42+YhV?4R54y36!WbIl zroHfa0pxI3E0v{{z5V!^&iJ!=R=T=+bH?DVySz`WiR%_h3zrD_ni|3|?im>%9N%$i z@T94bD>MCujLQRZ{qqd~z68k_K%qfluO0wk>Y%Es%#Rc|0YFh?X{57nxeDq^!71k3 z_s@vgJ9!AYQd71$Vi+}5q^Xyiu&GdF(%V^mI4*d?g;=X;pIEWH7{!=`oFk?=RyC~6j*g#Ae{L0C}^Dt^3z55@Ri= z*fCme9-nJY;L%_VwU;Mdo(3!1^Qy7GZx>E$l8BFWZQ$PyPiJRS00f+j00000008tw zQ-uZq0021oc~u47;@{cMzSO7$13^^~x%;+OumC!{peAAw+Y1%0+>6MDV>)|)GvH0xjHqA<_o);u#?#hpmX4wE| zNNwC6A3O3uQb*~v_hkfxAVLUwJt z`o@biuq2XdydPhRWluPM_~a{ku)ZiDs+C_7jlGa)>h&VVt2d0x7wZ(AC@e0fUqrX0 z7*mjHX|=0&BSAI~H+he8%?{oVt5a7uK1Y-9zU~lwn9NB{e*5c}%iY)iIG+H%P^>ZJ~{b-;EdP-1DYG=l0{Jq_aqme zi`W0?hFXt7WB}B=5o=6Ha|o(6wWA@;)azgTOXyg3xD@7mS#F6ioXTokPzlK|76d&0U3?5C$s^J!J5 z+}m^Ko%e(b{3viv0@XfpN&uF%{`8{Z%fsWxzdX76W!>#**3mFbys)aRb5@(GoWZ@rUJkM|4M_`vGk8*nvGEs3=xd0oui?J(_;n< zncCwI0EFnnJpC5KC_dKwPkOBR$oafUB!a2}{qOV}?jJdfAX~%2-keF%(Tv2}!cgr= zI*Bw18w)E7D|nI6s2G_WxR{#Qx|o@nIMY7LdjozX6~q-KB$WlhI!?C6rWV#FFwg!G zNg*b#1_Ouy0FD?M-LrC|NWNZ7(s10IZ({wlJ%nPTq`4I0U--H?dvJ`Tnv6rm`aX?D zs{)S|@(9%5J4!QdraR^0s1G`9k$}`XiP@k75+z7Q@@~dDMza3HMRBBkEcXdRD%7D6 z2c+@{K&t4GvSDqAbsXjesST14WycE6M=p*TisOq%Dcz6qb{{2&b2d!=Q|_to(^vST z_$SJibrZ{};!z5COYlz~35PKz5Dfs|vS~v9(4e5<)gS}C0DvaqfFTuwAzMu_Fh=nT z@s;K?P&WV~SngeL-n-CzjYw0AOe)VDn$#S+(i)5Y8is+I-Dakz>hA#Hy%I*3JqE&4 zJ!1es{74g;%MNSQ0C=$6OQ~uM`D2Qa6M>P_|L^rrvm^khY#L)6 zxPPkvkrWSCJVW`74lum&;y<|EK^B01PmA zzI^JTKqL(`#GsaNC?El;bqbAsk1Yzsr2sUs#&oZNCa}g66yO-YlLVrPfn~ri+Prw> zceDk`hM}}Q1WtpjJtP4y*|xsLDe(2>#VYXiQ{+Y}ThT%=ROG7Hv5d+g)9Fr?qO?Zg ztlc>O^F{sy12|x`=eWkvU@8w8Td6jF{9Qn3_$u?*620t2;= zm;9uJJf`ZDs?E%WjsAtr%9P2#RPs)jg0nh;dT%ORicc4BZDK%rMEE3H;5(_<2i@p*)6#*3kq6Q}aoF}zWXeJg| zWEMUuyQCzvptz*OGPS_s|Nnx`CM^X3Bmf}naUhU#An0*;9Mu!TBya!;0EjCQNIEj~ z#B#`jW1Nr}Inz<%a#2yY`L`0lB9E!ZNdUb1Kqx>WPC$BsL;nBrdIT000F95JE7?m~ zrg&KN9V@jNe>Xv0avBPzn4A_Pm+==Is`8$3TCwQdRGHpr)=*2@d=*66;{5ng*6zH5 zX)U_^IwDYcuK@|rMIe%PqZxf+eNGyH#@bEdj7HW?5cpE;IcYqGOdm<$8!_n^qnBa` zAXgbF+ZauZmNWrWDJ%i_VF(2K0uMOA0*GS6q}?PE;i8C?c^G2vXboSAZKTH!^3vwV zPm9qOONNW~rpLwdQd7o{E7Rsf-pg1$F+jtzlrQhXld)ioAJ+mIlUfnw5Ipj3660a% zzVtX{8H;j|u|bf4A|^u^7%wBkm>91$m>xGSDwQ7)tt?GhAFCWrnJ_CO!x&_8~Hfe;gI@S%e}lhEak6YcMZd;r>C{bv*U4OpBfKmonAC7 z;{_Sgl-;q)VT|=UVB>|;jy8-SW0133$EzH&IjL1%4ABA^J$O!Kkd0+gaO7{a!8Slq zjNMw|wAD|IcRe+(;Y9N&>R*j_<2WglPk{_hh?*5B3dd^iA5jgnmgSHOJ*PbgXxcCc zpbJ9p7s)22hw-NYfKHrzoPbf1ym%utyuf%v6tR2^qhaadcta3|6eG}hD2;}B5h;Vv zWTYwcLG4oJe*pdaCpbXF|5fUnFgOgnnl}I<5{xva%&3 zsOk-Z!1ppT<*IV5AO%V(hRCpXr-SZ?mKKr-y5q+@+Wcv@jeqj;C$$hj7bF8VG_AG! z=#gmi^Cq>dp7QeZ;Y{l5EEJOQ9$(DB|gCtlN%)?OuDX?yJ z7mg7K!8BO68^=oi-;_}~=-df-K!=PYN{y?EWsr-6P2~S%vPvLQtY27v;W$Q$_I{HX zW<^Q~?B$ipkBgN?%1)SOqs>l;)%pwCnNojIe4>~|O5V7Zc{Tu4!6AU37uloH34jO@ z0DOv84hP2wLerh@ghHE-1AAe^MJnN}8{mTU$N*QRN5;RGD-^LO3L*QEK@vFn z$UqYVbyf5o1|a$VHf9Lv?Pugynn*w%IMaGrKrtZJ@!*_71fino!g+$!3FYZls~gAp z%_Hh4Vl^d&YYoEHJadMsr!hVUzM}zPw*WX4aG|7%|McX2iXY*79C)BIUjCC_i#cR? zLA@#~_ov6b2UP{C9-MDrx61=S>!5{T86jlH$AcErjUq<(cpE|ZWI)|G;$UGcqi{&@ zqdkG@V|?O5HnbjZ@vMeGqYixjh&sNS6b~)l3kD8jN+22m5Fz;mu0^~d@rI9qfH-J$ z$&YB`{DU^wIWTJYCqj5+{3kAm{Er&`MADf33fa+4ob1wzTTm6!JcwEM2df#xYIgB0ka9?dZvg#5`w4Z|UigJeZtftXZd1!MP1uad`D~sw`L+EYh^00}i=f!>XJUbQ7RzQmuyD3a1Spi#Q#$ z0YDrA0#F2xZ>Ay5M^EsI=?MpXz@Ow7IKIc#_i=H5nxs!uys}IlIMx5n2n50S2F^-E zP%ARDxc_3v(Bucc;d^2rJu&i~L2vNSTm;K)KSd1xFyhA_MS;3~x}|(<<6jJAng6K) za{rq_`yWw{)&8pnZT_PV_>Taj?8jdH>-NomC@_!mzZlA3cmM15-+g(?`)>it$N<3i zs85!haj`v)wSIDY3DTeNAIy7Y01|NF5`pLY2d>wkGM}g~$&b+d1L6M~*}wbrKfU{Z zOkn^nDXRdEpuyTpdTFzu+#f-~W$?f_IPr}@^QP_1s|Dk)S4L=J2pNGGmPM2W!K{d+ z&W~nQui^AOI}h}bjNKXmLxP~Gfu0mB%!|DSdiDHC!&1m5LHNOw%YL-CgEsR~X>jgq zIUNWh=nH`E0W?2B1mbX(ocKh;vg&C9@7Hf}lw@QXyHmY}+Hi~lWoWy#yoQ@Lb;4f@ z3%{Z zWYTBFuA{6$7`b@L$SKOmmLSzhTJ4=zw=}@8g-AMG;@;g^`3IFr_yh|9VC3Y##6w{`mv` zsDOVU?3XX5rWKukV9CXe0&;(@!BI#UQ#=(A0e*wwBqj*@4hnmD zcMnB?B14}+5%SQGy^2?wc7WeY8%KLvn&q=92|bm!>bKj%&^sd&CT~xV+RK)v{*&fq zf>09+)nK#TbHSlzVXK3Y?BN^5KbDsofWz+ZwjlU3s8bz+T6*l(-cGHWV|_zdf}>|! zWyj9ab-C;LKcZEQYR?1kii8%;ESt6c7o=g}H_)_Lnc)Dc2=h^Pv zrd?E5*H&}YhjbH@aoE|cYnEt48Yt;ebSuYC_j6nc#c5VJzWnIodM5ei*Q5bHxEo&| z=256`nVfD%vDzQsO?oSNw$3~4VP(QkFg2azSx}bfVq;Y2+P<#rAb*|fah%>zyff+4 zI0FC$$*s`X%Y~Szu(1It8%r7~lcr=;m#xAz+jlVwV;Dd>g;e`!Apmr75c%Gi<0mGu zUf!Bup4y!ECWUx0RQ)WUJ#jpnX`4A(PLb+hnN;C>=kmMN=>BHs_m=x0skb)y^FbUX zSio7GY2$p{?ZVevTJw}B zZ$H;)zj_LxJ{JX{a#!8D;nY);p=C5b90q&DP2vEH&UxR&^$doWP*Gsgi2F0nXbtiO zp;j}$LUeLVXK91}`)|k1x0f{rf7&*8tCd`=n)rrPHCoze4idFL+@CW>#fhRiCy6Tt z+)u01QaZX5-=k{Ju7nYWB0u+2ID(d$JMPNI0{+Ad>bV}J{IEbegEN*l3h+MJiDVWV zA(=b3w8f<9(z}BCEQ{>g#-ypwe(&1Y+0*15B@_;SgUM=sjmch;0MIvT5!O?!0it63%W^^$Mq6bnVWtyc@cAe6ErlDMOF z%W|Een*aW<$WNnu#zT)>Q%=7%L73kLe2lNHTw%)+&@1sY@<5S#hqY@bx zyS&pdVr!vPOARW~HpoWW3Th)(+p@<2Uzl(24;&;TvNAcABCHO0Ee#u6lLYi1_!^n^ z_)H^a6782msFQL?Uvj5Af3kPrTpo4!zECl)LX^)X8S8jDVpCZmq;*;4RI8F93p%7a zmMqB!bpd7z)~%ppW3ta4ceJ~bDqHUfuV=x-G^ra z+P;JcOg$HTdkif{do*t>HdsCQiPM1JxA_QaD%O5Q_?6br4yBMw?kj#3obzKxVM`KO z`9xYzn{X@GVQ@~mDiAdU4;!xg6ktkG9*h+qwHg@pLjTmywo#WHR9*h?+;!@K{{K(L(9x4*%XW08YYhGI|hSA1(D zq`Gz)(ovXZ?(wewBSlS3(8lGOVWItm z#)9(t?b|}e4dH-g(~39JFg$F6I|F6p+k-#HvJ8VOqMh_LVqS`@ekb%^Ax?nJ3lwV#cH|Z+I7rm;nv(tX2|a_;G&lHz_4$uW5zBh zV0R&l<9A|m+Kmo#E9!81_T$k4IWcSvJ<>#E+XtHCT5BCxB(c3@dpLiBeG>k~6Yb8M%njkiBv`OLhg5!gyq90nrlw|3 z+SvXx+q<9N&mX*IjMRKn3@P#5bX$I=T;qMZ1{$s&q*=+yp3-0GK1vUvW++$D$OucTj z8XDqYvV$<@WlHqwIuc))#9m^$Rg-J#u>HOrJ6+rSAzxcf4&-51m%7pMl~{x?KfLOw z)g|Ax8>;cwYW_Bp)!3KfLwkQL#;$)>s_N0Osf{YtL8KYf!36TWh<8-epoUem0)2VM=pDx;z+{O&K%~m!W@svLoj-lgvqf6E&BZ z6i*n0H)VI*yW)JA=4x7sT{=Mq_mQG9)Ki)8E9*zJza5r{&xl1988>mspuP@B(Uo>W z*-fm)PUJh3o@;JXNIoVDgu@(CYYn!;dgVF&15wFE-sg*}vkruWO6d$tf`V$5bU2tf z(Z{DJ%ypFPXUz))>qKhFl}sjJ7)WH|)f-^={3DbI@OP_Z{E+y`HcqZzzli-7f7H&fZzWx9X(8*%aQUGw0S&CkYOo>f&J@=i(;Q7SlB3f~nlLmvc z%pYybkPWNxTutTDw2jupx~7_|;170iK}w}FlZ({SvJqzFvyrF;=n6Xb#GBk#j6ZV7 zJUL5ft?v%+)+SMj-;kJE#A6=S9sgYGEk$#Cc<^d@Gk>G5j$8$cSbxxPh#o+QX%P7H zIdIUU-U0ctJcK)6bL+7`PElSNF*?}&32N@uQA$1S_`0?G+z4mCz9NW=0e@5Y3!Zw| zoS=*JHdNhT=Fm`(83o@UFuG@^b$#L?w&x3%Rb&CXSC~LW56;NACmcuozYK3Ajw`FVfPGv#z*Pqy$K_+ekXhg$H&it647mrXS*f#ML=2bw^T0pH)B6m z9qhtH$_Vc>PWjv_-L9^h$GxgOn;^EOaWne)OiQ7JLC1GhMmZyyDEW&x^nX}>&7@Uv zA%_UBFY4&eF?wrak0e>l>dh0~XA`8p6L+YYncc~l+2M%{Mfeo7>+GEPE}_r zBXo6tzN-{yk7TgRM~F`i$y*ZA*PxU6H5_A(-1$!%XC$o%$QVjQ#>4-W87KjO%zFN0 zI_HlJWQv+1-S1ESG@)(e!Vjmb6ZXqF&hVkvCu#GG7h)mlhMXE)-fz97PQEItJpMy` z^$A_6BjB10rNOX*aOdy&bam?4e(+NTXt@U0#7&8u{hXinVVHb%-uAAOE0&US+=2xk7It3O9FJM{`0&mMs!uXSLE4 z&nY{NFm^e(Z_NI1zWTv8-Bg5P`4Lebl&{2>>ijJI zxXg_q68{XSBJkbn(JtTQBGbUfWvprN*#492_Pf2kF4Ze?lbF#|7J4Ezb`{oXzPKFI8b4!?MBx2O9=Lp{v zS8879g+F&A85895THS~rv&~0;-)i;w%z5>y=s|#A_sUF1LA-^y9=?a5{?bB*hcGf^ z`!atMmkE5ZWjAnPo8A)9`cj2Y*{f!%m>L>czwD~wU`6}xbIm!_no*AFZA%pDiJBp4 z6d_)iIb?!DADRCGjaHaEt!07bhv(}K9r-BY=F@7M(7c_BHK(t*^spq-V+4(3!9ikI z)S?HKF1vMQ`F|DeKj78c5xEsK*C=3d-y7W{0yr3?ER0Gwm}2;L3#z|We<$viBwfqr z$C2xIAo;qs@F-EOj}lIn6uvy0JDMF@53@UF5g73+a^CnB7UzysTc-tAP?J%SZVtPI zFf<%QiH3~%yOjZ2>o!|Ck(O-l+g8wmejbHM06c_B@ablyD$u^ZTnLIYcJU~PQ^v6i6FI(ldV&S>6Mv8J~e|O!sMe!L^(>1cx z_hDiDH&OuYwi?rou(c2b`gFyKx}+IHsm;^zBumxOHvWd?XB7wAT=-eGoN{a4_wkBO z{1u%-bFe}Pi%j7{y#68O{*Io9;+j+2j%|=3qz)1aWn~S20{#r(9#@QN&xmAzgVeKU z@GH{u(Q^8EFSA0Rq@T;F&^DFQdALefnjIm#$bi+V;I%8#&16zon#+Q4xq$0J6Mc@k zM+|OxeGq=}>d8`d@z9M!ROKes)MA>Cl&C>t23*U`kSjep#jD)pmZ ztEW!}F8iovHl9Lv;TOSW)WVGl5%yd8uHCtLPc*Bk(rYMoN`@52y&FhB;=<6#IK_`578qKNYV9(};=otD>x)D+g#He7+HAV?=yP&lCw zeht^YWKg7eb~c(wSs5uIR|B|DN$7wL;3jjXHW^jG)=Pp z)ltK4EP4Eoac7H_sAuMLMVz}nyo0W8XSbCNS*ch*`G!W;Z`Zf0luj1u+8PeBhQF8% z=%S(Gf7%(|+3SHc|e3YPM7@hQsw?XxC* zNfD?2p2^4V9P3TLg1gr8h+x;x|>PB-0nvV=wDHty^r9RF1dShJNo{r>>p$ zyCaE7eYQG|4_?IzY0TP+$3lLMDQjx(=XfKYu~y*7x$R$qOXkwZ-sk&l$*a92DWkZ{ zlz&oo&>`r;!V|>1+l4z8Xdn`*H%%v=i(6bybDS>4WQxnq z@S-PjE-a$8J)N4s zzZgQS7B1ECes-J-@ie@qUt{Jx&aA0;E?!yypW8JVj#64X0EVTSwUr3R2wd7)7(8$bX z1N}aPUN;vdQMAy9HHRAE_2geC!pl6A`J$X$w`pPrG0wX#+%qa7Wo-~@t zw3%O{;;((K>&&+8rfFpJ6EupeosSH)P_N%h*`5)rPErUgv`M8B6-X9`5actq@W+wM zB(#@cR`j|Ex<5xRz^<*Qorw?SGc1lm_^h~JPJ+NSN{grbkTiS|!IpYDe5bJzmynP> z%LL_hPv``IUo2VFBc8xgO`?>C$^!r7ZPSmw{>${ZNe^$jNEazUd(PxY37Iq z{R=J~Rr-?F!akFq7TJ|A_?rBrFZ3o%Qm`irLrOd{k2^$2R1V?-0(zVhObiQIx9cVL zbT`=;d5VLr*NWp&A@$7-;XjHP1`%aT>>aZhTb(7gt^E3P+Aj5`=xw}5#oYWlCIfpzxTqXYVq?z+&zm-tI1<^+IPcNwL|SPRJG}mxJWD%emJ;LZ@(NM zlqy};OvDDhSZ<8A+)YPCg&~&g6zGLLgQ>xQ; zqIYh3-n8knx93KqIkPYHH}lNT<>Fxde7wWsPGQ(g#pclD6?gEt?rrYFzBOQ*J%VbrC|9&hm?xw7b?wl& zKn(SJ>KRx1`Jj739u}3_fA(R|S4}UtV!VBIcn9|^o51G+M`BT|_rVo%X0`=tp3MSY z%2yk3D-%u1Bs$0{s@G>rpJSU>4Tg?7bcPp{8{CT(w%l`v(-QN z5n^XL7PB@ppcfT#-za$CgS*^MH-Mm`ws32qmUevN>bzrFo)EMi6?bPFT%w7Vq!cYPSQkope3@9NlKibJl?e+sWZ1c86*seN z%#{rtH#A;VIf8CB89zgOU9U2s*Y!rt+^W~fywzNQ)~N!Qv)}{zW>YWzPL38z0J2}0 zAc2(K@Yw3Xw~%XG0=i+YR!Al`PvZPUl(-T{*qQ4-bn)uXdH%ThZQlif)cNKj^ljbZ zxx>ousgt#i7CpO$5?+~fzjBSs4W{&X@G&T`*#0Zr?>J#pJB^5ckqTc?);!6MYo+ym zJH`mN0=j{0d`kmg2*s_bOnIR<+ytlcH;&&;b%!_sp9ibOOe%7?e(AK!m0TrFP6`10 zhFIyXzSeFPUVhr`#_a4PTf~$wS#}owR>n*g^SNlQf5<7p(IRtwb!T;0$lYcR$DP12 zJXK9F)b9=P!SY_1du)Y~(iRzjENgsIrahg*}a z>1{H;A=N$ILQ9&znSUKhO;!r>``(zT{{68bu(gZ8R&4TC;GjPmJ1m;a!OM8e_AP!l z`L4i8tHALCznSn^2BvJYU47|pb9(wmpB(72fL;52)*K$eE<4J({2K^oioT!4%ZMIv z8Zwlb2p873*21eaUlU;Z+0Al zlsFxYm$5XNJO%IR!IXbULXY$#@QB{1d0;eK2e}9)kN<6@3X_c~4eywOWBE!Eo0@5+ z+4W5z@zj1k=hk*qPVD)Ny<6dzcwDt7*dR$#!6VM(e>rc(D z6W@L{bu%fvACicXmHrb|8L}J2ZMp0q4UBTj-)D4Olee|p^zKcUB1GgYghdn}f40Y< zl#*9{S13$n%M@}*vkc{k&rr(Oamh-OS6EBTjd2|=XIG~zt4l8bv*VgMWWm#eH6oy% z_9NG)VaCoEny-%Lr~2&SxlYO~Jo`H_Z_4DH+WWtkv0U;|X~1_UAAbdnt?sIc231`c z9N8jQ#&@!qoG{FQ%V_gUCVjufOeXqUO?RD9q-k}_sc3-z&VQrR3V5J!xXDPVsfp=)riVKztJ^|&4_ZyvR*>gY+J{=Un(Jo zvtmwZzOhF08YM)$l_8XLKGFxc+v8XS{V6>#bwfZ62=9XCC%L%mb*Ogb4qR8RXL)4(gHd-*OkiM2Wh(3AA4LLdWPZm6sJPZE+YdE_x*%ZaJO)mh(t%A`@i z8v;6ZE;U~bx(Z0xNUUkODjsjdk)KVMH6E0I*~oM=hS<>7bvz;G+LK~q7vTU_5U=4Qv)Yn9+Z zKeVjh!o`uq-0qRzz(|#SP}g>wOXt!G-S6pS9`-eKaYu}UN!dSVr7wh|Z`nu9+`_cU zfmD}-%{1KdM0I@_E@9Huj8L9lZZ}dre&M8xs&bU3nh7F=^>X?(;_J?1Ns@6P*hQVu7n0 zn-89_L}9mg!CKd4@hLggX)dX*>xyR1$&yA*!(XZgLR{mutohd@s?uz~1{J?3^$Jy~ zYSX)IU+d%~V_FbyrmCh3IagKxQNQu(g_mYeb0Zu2$ZL^z!Hc=`E##!%iBwlX_teLd@hrkfjm?weot;%TyB66@xj6FWmiz`8 zLR*}4!{m)Lgx5Fs;*KMX%snL;*2Mb!_jPGwi8+@w+Teauf6U9bD-6gqU0ALeqpIuO z5;V!itJ#}c&FS@KO+J7DN=;(X6 zXwZ%M3Hn4=02^ldC|>w31@|dxhs6t%4yVS{TXd--(km^51NNTNRniy_1sS{A-0Qf( z)&p5dw#1p%nFJI`s&XhjUneH;v{M_pYf}-vO&3Y|)pgj;EzF!zA*=P5RzOG{{zmQO z>rrmpSQdUuas1{y1ReHEef_fVZ?D#R7LmPM-$jdL_l08O{(L8Xxhw2b73+Fg6a z#DML!wjR#@-^nNE=N$2o1h}EC(&KWF-a!lw6EaH5B1mt+0@I&kEV`Ir~ zWsD29X&-j~klgmrcyaQNHAXLDbyTWvPq(T>)+PqL94*q@QO`W>`+d#@EnDKpJ{ZF; zoY3q1NNSqWM(EkngSK)JR7NvI4L+FAyIh!eg#98Q+xRU0!&3N4>vvmo2S&K<9~)Js zb*PTIexdTcoc7P*!i%4ERl>(#Czq&`xk|{3H0fV8oO`pMx%%`Ytsc}0hC4@5j>a@6 zo;%skG&wNsCTY(=-HN-g+HWmYK1elUQxEVIpIdV-T&R<1LF5TH&Xx1t8fF)GrZsN| zWwgmna3j;A3ze_4pDxCkH0WuMOYX^do36b z06Kzv1F1fh76Qf6Vzb~Qt2(~Q^ zw?8=bsUsmrbjGN)HaiqPM3U9w;IW)eh8DmPSI)!#)3f+MU`LDb#PitVwSVoM_*aU+ zs`$-y+_=gtwCP>PS#d#95=uYw7m;Rwv2oxI(n58vcf((vq-1jR^cOfz_oH|xIe4$o z4194I^ILa!6B7+_sX~5d#1!yF$t=I3cOOw0sJYPDR_^0tPN_+myJZ|8U4|xOuQ+oG z2|8uarBI%X$lh{kQ+q}P6uu89lcF@aZQNBWXG%2v84>UP59Yr3_b@I!PBUg{tcHW4Qb{^;44%_)O+R4KjFj8`V_zBjo6)X5Ockz3fd5$ zt!#_Fet7v&Od)$;tk6l&z|h9_NS}8jAqtj52X?i4;Ph9#N4C{Y1wM#Dn-@n>?enVulDzunvDtd-5U??V%3`*r(+#8 zBKiq}tT}zvQ{`7Q?#pY1$@yMoA2()?r@Gu#y2>C08soUO`7L3V6V5PJW@MFaX4ZOr zx>`H=H4{Acep>ORSTNvUW^UIr{BZA^Qj<$vf59JW*&;HY`Fuj5#rcKM&X1p;8z`+b zjnDb>DHrDGV^{Qb@D=SO)>DvyqoZBaimBs2A5X^(y;>+)g@qCq=GorU*_WN;8X2Q& ze$iIc*1<&Q)a`$@hq%jLN7$6enRULN3 zE6L~5oL*fnCK}%}DH0S!5f5m{RAGSD`m%C$ajHa((co7cKbLS+{XSe-3ihNF8)7K#tL zSh;T7i!<`GA?SAxH_OgJm;LT1tzNoi8iXtO(00__#p*h>I&2P1J1e20s)nP(Qr27H zT{oM?KYd1Qh}>?UiYpZu?>Egt99(R$NxF6$bR9h2pG8nD66)P39erpj@iKjnYC;l9 z-!E6PbDzcb)|_~IN6&x^j))XIB&dIVnm!x#W>VVU6K!h?mP(6lY84jMO~0gvb>glinkp9gT%OILvvbnMl!I*o4$X6ABY$5vT=s(1U~Zme63kh%jke;{4i((P)7>eM@TZ`x^Vr)B}i ztIMyjWQsv%xpcNs`>jkZIq0^~)m0^!gGy*mLuKK--_XITfxU$qcCat|TmwtU&9-97 zS$px;={rq3o-fm&f*$_Lm&tSKPaV$-ITuN(Hf3w8Q1xt}W)kMc`2B2IS0nB_+clEy zi)6cGK1ZEWklHbu2m8F(`s34@{R_jn7HecFE;G#zsez^joK&Vsa^}<4BAexld;ST1 zJlo4Fs>_C$kRK}B@tZ>f;d2k%>KT{JcHO>B+AeNdb;>rDF7qSb>9aTE_rI{J*)8=g z%!#cI%!yx^S#W!;6&gOcxDWX>@fF(+FLmFINoe>ajBXS1Qfb|vj<}p3c>IChFcjyp zpKz`nO7%l~B3^A?*&g;^H>+c6wK?5ewC%st?x_ZQyVqW2Hk_($7*-f1ZcfO4x>4Y} z<<&Hz2@U^lv*9aTg1LBVa=0DS#CKO;b|_*e__x*Lhk>{#2f@uLT7+Er;WO5?4bM`~ zhK{nh&V}X8b&Btz)2FsQN*d)nLPp4&!ySxfTx%ERu9W?)i_5a=do}b+W|Xf=>AHm7 zSeNon)f?5?cq_3KYhCSqm(o}qO_)j}Qbz7*6v|^RJa}*V@m3p`W%1Wr5~rQ_#uLF) z4PdVqK5=TVdt3Ib;?hJlgME;;VVzi5zmi9A=Ens2=>_S+#SQM=HJSF@-07yD=JZU< z6>3L2?ei4V`iJv{EOqGVZH29Fk+-q>;5;1gIcGbaN}u2F(s9JtZ|KIYCb_I$DDl>+ z^xleyKdrC>A79Y6=D5~il8oZ4wf`KQud-vk=lsT&w0q*zZQp3)L@0CCa;n2r%C`SF zP_7`QF1MOn+ausYl7kxTYjaY1nYsD!YE0Th2_84_L(CmP!k2b8~W zpNpLNj3Tw@7i!Sw6~Cj~$;a*SV!K1-UH_DjaMf(#I_b|(QmS&|9JSOFSWU{Y3}db3 z;sg0EKN?9>2Bc}0Zm8Y)MT$MA=F|$&gYIh%71}Nk5>$s&z;MYITSs@y62k@IRl`f< zg4S5N>{bElVTJ@g&_5r->KQ#F|ZQE^bapPh5@)|GgO4B_e1 zs@IAxR8sN%vb}i4o?2>Ju^E+jFY)yN>cuyK8kQy9<@BbGFd&qkn+V(qk2Tr`b_CupIo zYg+Axow9rPCmZ~;OJ6sg6uOUMaKl2igS9GAsvW-a2i_vGVJp-;ac@e40UlhzjbRPaaB?#vi97cQ{#}%@ns7TQX~l(Y3|R=YkvsEE zxzvJQg_eWFXVdKHITR^Rr9n5k0qcn)#)bVfnnvgSH_xQ7lCkfYM!5OW^-av04gXfz zEY#b0wR2uS)BqPmB_GW5& z@#kx88r-$x3ZlL>$n?O0AzLm9S62dVm$x0=*AuTB%Dh%J@F1=|Dg8|FBbj9K>iDLh zW2EjE1vpce_jqO0{(gA0GodL+OWiZ+96aCQzMq{T|7N6Y4EUhv8dVxn+T3ySAl<>5 zd^KUaAmwY(hpv5-$ncUtvT9-?UA1<1xK@H_SSMdE#YXaD9vo>E<#1-j?sDgekLceP zm6*e6*_*4*8=;3ICN1i*NH6>&p8?mcgM|o9DA)%Tz6fCIt4>=jF>~5zo|+T8n7xq$y*vrC@qEQm2 zdgvX=bI&AUT2E?TXZPd9=S!QINslhjZr;$@ zbY#LQSoU>c**w)<9twvs8 zog$CM5akjqI57jAeS25hH1d3)gT1;WS5?&%@+gkDd=A}K4=kJ74&IS#MBw3!`owg} zDQe_Gw9d(ar74}hKI^=%mJ7A452XU1x4wo!bTZFr(2-wk(6rSnDxQ6vH&o-z#3EOF z@7{)Sn`}DLs>uc&$1f>qH1ALjInYW|I<@Mt3Es1XcWanLRAYTq)NjE*grXnTvs(DQ z=zc?q&(A79RqiqG?43E~S0pC4Q%sG@XLG|AI*JIydFmauE9=?9uqgJNwK^18er?CD zUqRf9?U-IKo@Mm=?7QD?2?HL#w#T<90U|JEM1Y770tb;aIw7;CwW_l%3v-G&bmSmB z5PVz6F`88%v0$Z_Y92{=mYv_s>{rUm+=BiIR&N?f6xN(N4&Uj}vVIW;euX(D&ejK=V!R{j_js(ZPfx8SysL`apmmmfl?bSlDFiVHd6BlVlP zbqg(vV1MCUv;Sd?aKkFhy{c$MWc#&4KUYh<$C72qox}hDPp1v=+y>wZ2&Tu=2JnS% zAUW5=3x53Dx7KNi7A02TS-7DK4DcNPLxEkM;{XAZY+E7Oss=2eKd&^_L3==a`9O@qqj z=XoD?oy)yvScVu&JwI8I4NTa(;}!1v`-{iBF=`czmTRgMK94TV9-g1R>rf!4536TC5OW)XXHG7;$56tZQp^gfr_>zJX&J@OZ7PPC)b+5_40CkUZg*}* zsXW~$)(-Emb*}4J`cVb(42cp}R?9&iCY{xghgFG^8ZE_+Bf5sNlI#!eddvQ#F9wiu8<{#>m^Q;f4_M2HQvpE40hdClw_O{4{cLbFlDeYZg|iRK4_? zi7F@7^V=y8+28SO5;o%Zm4gN5rG)BN?T_W|8~y$cXbG*TkM(r07$Mx>Zx0IE zsttSZb#~1xD{CFZ(&FN2LK(*Dc2ktJPm9VuN^YfnEpOBMrNyIWCoj${4qk)U{vV{+ B4-o(W literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/wraith/ambient.ogg b/src/main/resources/assets/emeraldcraft/sounds/wraith/ambient.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9c1e7ef7e4ad05caf34e6a4ccfdcd2d3058284d4 GIT binary patch literal 30287 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%0AV!Q( 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/azure_sand.png b/src/main/resources/assets/emeraldcraft/textures/block/azure_sand.png new file mode 100644 index 0000000000000000000000000000000000000000..1198267b571e8b924ef16705a553fb08825c3299 GIT binary patch literal 1715 zcmbVNYfKzf6dr^&rA`-m*BfX4PTP2gFG)!`%RY=d~K z*n|h50dP0vA!XLZ;a;9%Jq*vecH$hvdTGW>vrdv>1;!&dc|3O!$eN+F3C+QKbGFcz zkBD2AF3@x;m7-Ek3L5P+%kw4ldAPF?fL|C?f)#K2DW*q(v zbz%7?14vp?EZA7nmt?YF!n7K?Q5ZQv)vzTo7?PYbRl2>$$~}{ z!bJX{n({8=fq;E5HF))2Ra0Qf+`eiL2uc?45gdc$W}GDFja%>+x_yz{Bz$56Mw%)?HB)!kTGGnhe50AA$6tR87CTz1(k^$=4ky`&H^=RZj zZI|szDD+>W%&x5}@jM*$4SQHkB@_>f=oPiqJCC8=#3@h@5gLTpBgOt5oh*eH*ESu)x8xGOT} zxG%EQsg{Z7)T3vIPy3HWN4_t=%TcxS@JA0}1NAR{cm2WXHzxZQ2EmS96t-a^@UlAC zpIXl!t%Wn2`?bzk zM%?E=KY#81K%l_X$4`uhJ}bKN{OtJCW25|!my7mij$A(yJyiUH|JcHBMJHa` 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/chili_stage0.png b/src/main/resources/assets/emeraldcraft/textures/block/chili_stage0.png new file mode 100644 index 0000000000000000000000000000000000000000..4e05e9d2f7faa8ff3feae0f39af7ff75e4a6376f GIT binary patch literal 1482 zcmbVM&5P7X6pte#elW{0Uc`$~iddagcZW$*F{!b8 zMiBKTvWHa!75@P*f_P96QM`CkWEW8{?qzR_D0)-;sPsn|WmGhfRHf=yzxUp+-g{>z zC&mU=u3aez!a#Z4p5o(R_AXz>zw6$9!hBc}kN=Sh!m8ETyF|ErWsM;85BZg8Htp<1 zE)8Yu(JGN!Va(Bjuwz#%#_kMZpi1g~WQwnD-xY!Hnc{(A2RgAu8vgivLiW#3RNVO) z*YLz$JHd_?;shaK7_`D5N>R%c+q{U+vt>mDZ3vq&#nH?ln06+CMH2#s<)Y-O1r3ZC zvRZ_OR@eqKsE#ObL{W7Kst6X5Zh-D1a%+iKLsRzeU0eLm6dR1iNKu;2rrgwJn$#85 zFboB1il#{%A*FK>!!0RF*Y_A~lDdf>GoMBvW5iWD%S@4b+6f_ybJ{5F%ESdzS~ylz z8D=51fu5V=;@Ko<8~0p=1SBL8OF34}v2lYknl|V+sPpYF3~*^3C%3VvFJYLQNLlF^ z52Gu{qUf|T7ZYWQq;xiMN$D7ObA1*~jI4xUMw1GqLGPj_doBaZ0-Fx_kw=^9<^^zK zV@6C-gIsB7NSaZB1}bO>>RaJ<1Yrm2P|vT;Eeb6l9ex4j3FBdge+c$mRHI3VdANRv z>qLp8x(IR+kwpWVaKqd?ec^i9vL+K+^8>z-PL1sb<&srYjbc&KWVP+C8Qq?8BT7Xh@Sky@4QXj*(?Ei=e?gizc2B5 z0pj47d9t$1G6#+ODZkUXZsF`FN4vAY2km4**v*Q-6y5Chi6?fK{a;p~L)&Z+PWqj^ z=)h81V@;fp(K=V_2U(|Z*OjbTJ5eZK2iV?QP}n^rvHI literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/chili_stage1.png b/src/main/resources/assets/emeraldcraft/textures/block/chili_stage1.png new file mode 100644 index 0000000000000000000000000000000000000000..4fd654dc81d6e86217edb16d9da155e053153f25 GIT binary patch literal 1759 zcmbVNU5MON6izEuyLMq~`(VXtNMG9SCb>ywCY#W7-Oa2!17_S#2fF(pcqjMHOxQ_o znq=o^L8vWAwF=f3QC1KssC_8AP!VgTg8Qfs$w=2H4Ft5!& zz%biZoWfKzWj(Ij#1$YSMJzO2pQ0J&&`86F_6&~LA}%|g!Tt8Z6^?a~!5vFl!17I8 zaWZoOK022x*mE6UKi?$K!UO;X__ViS(Ig-BKWZBMXk+j9{{<24#aN01HCVWH_`F^@ws8`yZfMrrPgqw#e!z%U{~fskr9QIlQD ztZB0Qk2xM9_3*$NI8MU|8=MTN(m>;7tpGGVA?rXH1j9N2ZKy?%Q)+GmO#)p`u7lEo zK`?^11tVK8k-&vCT*rlFEc#xVV|ya%CaIEuI;QNDwewlioD4|GsnUfoKQYE;$IXNE^BO8id_pZjwTPu+N|C$!p9ma!0Acli+lh~5 zTseBi329E7or7}}AMcE+4%;dg9oq3BFgQETK1N(;+Sx#XJBy%gwqC*1=q>7^4GT#r zs>1+}mZ@5|sXB2p>LIM%n)sciZgb-6s`S4T??`G_pjXDUn~Gc$y`GIdYC51D`O!U@muNSCJDVOY48QnmezE@)7`XnIz!pE|&h_tF zIPvPz^oea_pK?2Q-hb}e4uOx}IsMV%^5?(*cyr~(%GEv0-UG)^KixOKb@8C}>@xc9 zs~uMo^AmgjnET=U;KIvW2AK1gwto1qwshuV?v0B}wXeVb6LD`|y>W8kz2^_|XTRLO z^u=ety#ChZBMUY1voW;0Z+dV)*?oC6@$TxkXP1LlMt<_n{Qdqj^}{b@PBpKMd~(lS X-#qzHZpgeI|AMmPx%7pxr%wI@R9!s| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/chili_stage2.png b/src/main/resources/assets/emeraldcraft/textures/block/chili_stage2.png new file mode 100644 index 0000000000000000000000000000000000000000..0a207cf2e6e88b88047b3085d69de9200ac51974 GIT binary patch literal 2104 zcmb_dYitx%6rQRy@+eUOC1`M%nuw9vxidREvom37%1$4PY;D>q+aD@-?%eH8x;rz@ z%yzd85krhTA_)-WQAxmrMq+}GAEH7K#9)vFlS)483qixyaj2Mc2%4f6))gIyy0K5|xXZL+%;N{E+$B8UrU0q`;hWR4HBfLDQ}h84Q}V~97`NULpHW7!w^ ziZL1AcT|om6bhk2IAptB9Iq$}2Lw(KSb|`^Udx9?*79n{Eoj(7uIc!uZP9^6sM~oz z#t^1sA>^EjS<5TSLtt--_A>Sj zOjnk#aX_R^CM!NB&T|}*0R2_FC>K^R5IdKulGEgMM>Nw4_3Kk_+*VBlV zqY>SR2oUg~68J>KBeKei<5l|KiI*is8EAE3a+`9@oriLJRd|COTz}yHuTZ$)3LUF0 z?)tJTtzC89k|dU<$Q>RGE6sy^RN4==h)OPLE}>ti_EA)ol+fxsqU%p=;;kcK=Bq24 zz_Y`h+sU5{UsNs3?@e_coAePia{T`Nd42u^OSfz&%;Y=I<=3uH45j|q z8Xf&>^zzA_fH_ioVQ&9R>n6#^e|d#EeB$Vi6DNzWZ98@4N^xN4;IVH;*R&0Q7f7cB zKMY+^-yCuE$*12K{(Zz<96EaVkuRHSs5K2*=d6BMO?A#{J9W47{`0$LoM}8iR9x|C z#KU`xUQo(TM z^vTP6Ha;`&W3h4n;Ly9%m-VN#v(=57^qv)aaAVD2__OEM?K=C|!0O+!r~cf%e^7pE zLH*WM4=p;E|LVZOrsey7ZmgZJd~gr-^7o^4-P4z}eE#hWZiTyY_J`@So3?*fXI=jB Ur^sBkC+O{oh8FFe#miUy17#7!n*aa+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/chili_stage3.png b/src/main/resources/assets/emeraldcraft/textures/block/chili_stage3.png new file mode 100644 index 0000000000000000000000000000000000000000..64b867d464eb94e30f8c0ae52ebb88ff78d38d38 GIT binary patch literal 1729 zcmbVNYitx%6rQHG2&NA)M$>3InM#T&v-8;PZfC*(?e4bS&|TZIgtk2F?9AQn(49wT zrrm85ks1?)YJVuD4=W`!B8j1<#Kce|+Coqw)JPRcjMNY-AR-B*2H)P164W83YH-VlH;rP)Wdhab>E*2pM^L7Ai)ski;<5(O2(o%@T;qjSV4@+=A}Jhp{k;z`R1!ICQ>mZy zYi^NB#MZ7sSI1dMAOn*}<8o9n*f@tJcv(2MrU?v9K+IMSE4KvE z27fK;R&{`u+MKvRIcU_y*eEB-(2i9oO;Rp`bP<#tCn=V6vUUbdUKmu<#V}j%sZ46Y zFAj^Crp6LPEEcoH>^4c3w*$J749FePMzB)@L_ILnc3lA84rpeP<&DO=b-Y!>i& zT3roGQMh2#S5=@suiHs6PA5*=sD!zGKkHKrlUD@b^KcjpjZKn7=oMW?xf~*1<_yy~ zOjQwQN+}W-0Y!ye4%*JR_|$%nDzsY(klHW)&;3v75-dPIde1yoSz4LHR!asv)6Qh! zYyfS^QB*<`$-?r2RRkO+Sf>v}EIBRRa|9M>V-WyJ|06FJV1^ntW4sQ^TVS;Al63?$ zov?~^!3*N=4kp$X6?O^^yM;AOw<-9MZgfC_-A#vWY|qi7lL(Tr(dQ`-mc4xVl}UMO zUA}krz^&)ccCQFHPv%OQ-r?7?YchI0nPW(SmNm^iT-)94(JBsP_RQ?A$>m>?^`fVb zocs0Cr$3yYEybp|%U}2XUYOPNV$V3@_~`7jTQ`o9k1Ssos9HbUzWtB9cO2d=+p0dk zal|$>_Xcw2)o-T;dw*(bUb7TAKQ>K|+=tig?LS?d@zocNLrpuEa2flrv*De6$F2@k zE^&>|e760ClecyiPmgAP*fma#5S5jMA!OU^$cj(an{SW5`EE551y`=!cz?W4W=gmA ziW85Wx)Qni%$NSnjU7K<7+9IpI{NvEi>)PX`9qW6Z2o1;y|@2Fd1Qi}-`~+cJ^y$v zS2q0Gjzb6M^6Cn9kHj(T@}=T^9_jqWiSctabp;omfZA=;!BcMqZhjwYF6lYE>i8gm x93Ra4?O4xzNU#kb`Z4>=gA-e>>7(|!9Z0|Q9kXv{AZ-0)eBOX(tfKk3zW|o=PVWE! 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(+BMToI9Jr|5fW5<2Z>S>ST- z-TQl<=lA@c=Y8%#s(tgCm5;5YC~8e29_u3adhc3sANfBtoRi4y0V}@Up{P~sysL&9 zJN76=Ex)d(yWQ^O76oF%2UMIvzM^3fG(~M_DOv#bBA3pftZqh_*-uV0w5~>&ZNVg; zw4x}d#|Le+b+A1R2YaEcGA&Qj8;S~XU?3OJMI&!IN-@He{3>Maz2+FY1aW&KOsf}= z?oOuYD7FzD^hqof0wNufeS*ZxVqiTj@a+8u;40)$9vR4V9fB3ASSyEJ?Bwtr zTvxYm3qYhzCaWo1yVIp5u_*iu)_26&?HuM zZD1i(VnsPE1eHKY2@1DCN!O^r1^)|Hp`u~i03>JK09nLYW|pC=N-9yD$2JK}*!dT} zPeh|B8*6%=Y&cz;H`0l=s3gb|VdN7^bdyOXVLC1_Axgv|4AIA@>#7nGLLi`NfDNh| zWW!njuwf(+GbG4hZwU;1A=F|}gHrB~vOqmv`nj`JV%{rGx(eEWXz;-%u=m(t^- zV+Z%W|HJdvAJV}$E;RV->n8r3`Sthvdtbd(J3Kwn`7zv+eDBKTr^Lifxc0Nina)$Y zCZiv%YnThye>XSV(~voR=;Zb19(w1^-S6JakJU`q%zXdp6MxtKG&xjzqxP$--lr|m M)*kzC;|qKL0i5M!8~^|S literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/cut_emery_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/cut_emery_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..b1067c46680c68d67a6991853cfc320515175b25 GIT binary patch literal 1620 zcmbVMYitx%6dn~wDKt_1;UhjKQ)(bOJFk7s$XeT(wY$Nor7UU1n0R;Q&hF5ixzm|h zcDGt3YDfh!LP8WQfdqb#1_-u^5bNWIRAUTElo0*XXsQzVfr%PSH9qd_E5+0olg!*Z z_kQ;~=Y02^^Fm*5Ph0Eltpq`|rBg~j9&ZfZmh18N<=y!x9+o?)M?HdAadYrqN9-TJ zl^~YhVP*#XLG@utLskgrC<{Yn%fV=ZSl3y0fHnkuG7EF2ouIy-ewQLmJwXjbR91Cl zm^V`+F5EcMo6$ywG*PEIA0XG2B}`yJACP6MV0%(IK~;GrJP(!`imXEXp#;?x7$gVP zK2k<5BqO0Ht#M(VjENyG%8GpWK9Xm-7{kUGPM}#%Vxy8ElJ$qe)?D3?`jv<3w(wtq z%KN?}F-)mc3YCNqa&rtPiXy}E4A0XTL3XGVfdyzm+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 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/dark_sand.png b/src/main/resources/assets/emeraldcraft/textures/block/dark_sand.png new file mode 100644 index 0000000000000000000000000000000000000000..5c6fdaecdd7ccd83cfbb12caafdf89341fc226af GIT binary patch literal 1899 zcmbVNZ*0_L81D=q%q$RDkT}I!#0|06KiBJB%j*8zZR{d<+m3UaaTt2-dw1RL+S+!z z+XfnjL>G;5XiQXs#ze;#6cTj^TMRgIE+z|@fHEQ&_<#b+APO4z;M?2XW$3_#CT-uo z@9%w{-}8H(_vt`Wa9v69gT)Afl=vHbA^2Wm-wW@7&o>9-EPO4}8=f^01 zb2);{zodlQthT^10AR`Luv#?ecJJPZJoLg;<>eR%1Iv z+X79fS2F~-pQf43xnPaIm(B8^*LYg zOTglmrSk-lN~Ihrr$aMh1jTV2LDB?G;}C(HJ*p+9an)Rzx8MV&WGK3&Xew%36eC)f zC18;0bO=ekU{*DAGC{$Jw5Su5gS11+0%fUy)4PmB*10SZAOVsYm3Rpd^S(+Kw zZezNze2W7pZ6HwaF)Np3vf#qB>bhYVIYDMco8cZE5Fub{U4{hex*^S#b~HNgHGpVo zMp)Al`9wA4DWhJmofr>V(Wbsr(I!+RBK27Sft02E$hWkBKgr+#gi8F4Q#yu3n;v(ga z;3Dm!#Rwz1Tr$Y-Z!{Em3dO`-+p*84T|Rt+V#37swQV;ht2TCf(f;LEkG`_@xPw`I=-8DB;oRoU zFEy7{Pd!vV+FYFZyK(>JxBL6{{Br90R||J#-a7r)h_SQ%ffbDrtbOYKAKB37uTOe{ z@67*@?UjxMi-wHrW!39PTKb3F{lj&uTe!!OAIdWRi81Eki=RCc`^lnnnN15CCzftWbbSB2`)K^8u=`KE?~n5@-dOeWBg3QP Vo!howSz!MT{dGa#r?s2<{{bW?e$D^@ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone.png b/src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone.png new file mode 100644 index 0000000000000000000000000000000000000000..c5248ec26e6e43babf7970c28acb1651ca5f0b20 GIT binary patch literal 1967 zcmbVNd2AF_9G=?PR!X5#lq=YAnpjX~=jiTiXVRrzc6+S4Wm{I;au}yGZ+FM;9L!9+ z+ghYz1W|}Zdk`RM3)BnqX*?CK^lYAE1;*OhqB_AQ13~LEmh5H$@8)CYhNx z?|tw4eZS-VW_O^rI&a?cc?g2!`D(oN@SShnIrqS4_r3@NU-xM>O$LJG7Fc%%a^TQX z1iAMoDcEQ>`k&+kRkrb>+6-)QS%YWAjY#fAO)$q5XVL>JcJ@RNSc z10qsQhYmJ$)CPr)7J(J9^0jDLoPz{1FnKgCM-_vMyRZZ=2glYlfuRYA+2X?7mO-@9 zA3!~-4p4`U!3D}rqfXXFF(gad*Pt{>ISJB9P$f7?aU{c)uxRqapfz0#arNG+q%HX6 z!Xl=raRd>I#cZ(>o2rKiie*`XqzRhFAp$qr6_bzSicyqe@B%~7CC!vn1+^IYX0_FH zVNmIe3$m7`Rg7eqV8DntuMw1uv|LI6MInvTTJ>ncxF`@H3S^*|2EzDBP-c`hQuH6m~F{|gocE~M%*4}F$oJ`4y=31etFlAK44syZ|b z)s@Vi_jx=4T@6W5xM0**uS0#69)@BWsK`boqje{xN8C!k!MELB{hj6Szv|~K z)w@)m46YF2l`w$KmB1{22&)avq=xu+))H&8T2=}U`=B*UH(>aYZs9Wqq z`R|`vIN~|M_}n)9T#lt}8DNzB8~tyyxMnvEt3^C%c)tO%3{=pJg0d zIX$vy;=pv>?_E9P%PU&?dVh0vWuAXYo4@dv+VNq}bIm<}bz}zCPYg|WOgA4XI8#vc z#9_Jg?eC8imhLI2C_mp}>+89kQ5ad_KI%Pt*T#;9@pS(dI;%JQ oR&^$weI|2o%fL}P(vED;80a1ww|#)&)-TmpS?e8G_w0^;0BLTKlK=n! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..354826ddfd2cf92498cb9c2a875cec0749797ef9 GIT binary patch literal 1969 zcmbVNeM}Q)7%xomYfLiSRA$(Djv$-Y`{>8DCmn&dgGP%4YDBX+uXk_T8|~e3ceDjf zhVCO^q<%!RNzfQ)ln}!b-DcdJvcTpN!*n5=iHz(6NQTj941dUsbMKYX;6!7*k z-{1Q@zvuTn?{lqHmF3y<^X3~2hHOuTs~Wy@^m}e5eD2vBvclIqxniSgFf7Q`?+inG z#}b2K_ORfq)oQ(K8BU5ASzhu3V>}{5w82nZ5|>%74rquU1O?H7-umVOiU_;|-C*$& zUfBskLPe7TYMLs2TvHuq=h2ckk>WT54Mc#(BJoIARGGK~P1#9B8TT z5UKT6Ax=pFh{b5dIMPfZwB1Nr2|Hz8g-`@Z;{=V9CX65%!pfNJNa{kNH-!%{)vmWv zzTlSw4QZOp;CL(+Gsa9tNeSYl-EPMT3a2OxA~3a4)Yv#Csw<`}xPZzjf~*OWi0Bqs zzto^PP{?#LgovCrE2=4(pkR2Mm2uKY=piM6JeS7F4N5raoab;51`!}?D#Vg$tQ?Xw zNexMlF`Zt1$N`kr>rMNZkxL|!cA;wSC=4Sd$c$*!*C+$L8mLl(!U1;_(p;fOBQs6~ zu$rX!Bq=hdzg<91p}yA^UVl1ZXoFXItajTJfIaXC<^j8PDH2GDjt zL0AG9&HGu*#Ft+05j7ZM_Wub+CurK{I634c>dV%GuzQmrCvBpg`mQeHm1%^4X96z!UB@46^7;X zGvGiuJ^6q~Q`5o>3Oro|lV)Qf0F6GOA|_#~6wqR<0!o8Wt*0qE{BitMHu_}tPnW+( z**{vO&qzI`EEi(MAb>p;NA+NEz57h&1^<7_l55jC)f61IKYf_)yYM63xq%2xE3hxO zZR>;WJ_FWZsc+?8_rCu3dWoD5FXXNN%5x*{;*#fg>~X$&@{{x0!h$Wt+}vdkkTqw= zk3>$LIAC7gerV{-E&TezotZreU%|lI!JJGoG3TG{U9P(3*N!@K`nJ@szIr$~{+zgY z{M3<-LT|?M1Y4f9=J21<=I+sJHShmX-1YkC&7$6|T`%@%pRc>KYw*zJ1@rabkJ5qAN zaDD9KvAYwa;VZX}4sPu@5wZQEm}>V4FVpw7pI$!e=OOEk7fRb(^E+Fz?)ctj@@wg( z?){6nA=@jy^*irhLa#J%?Gxu(cHPZ8d!wZ(UyOBJyg9P;I5%`Vf1p(e_I_D-xoTk5 zz1*U!ZQspjyx;e9?e{F6?HMHcKTX_5iZ>sqfA?H@-SLCnqrTItIy(!Ck7b`3SXeEU z|Mt_(e>e4+-5KkPKFc`hEHQl1HZt)b`t_lbcV7BSYRf&jP5-HS+?B5GvMoFQ0~Pq7 AoB#j- literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone_top.png b/src/main/resources/assets/emeraldcraft/textures/block/dark_sandstone_top.png new file mode 100644 index 0000000000000000000000000000000000000000..2e3186c886e7b1ad01505ff5e6990950e62eeb2d GIT binary patch literal 1834 zcmbVNeQ4Zd7|&|!blsRAth$1br3xK3mp92>t_h2?y>z{kUDvf&T0z|2OWwPSz2wc3 z^ge1)nK-rVk4^@Y)u}@eMQ|unibMQBa59mp^$$S=*9}B06H%sYP~Y4aop!VAAeZEQ zf6w#$p5ODlPo5tf=-;reeH}$n8xnDCh}>@ru3MVO|IDGBL~ge_@rON%YP~bK)=)=Z zx|^a}el=5L{#bISqGKxr4V*@ylI0LIMQz(&a-cqrd^(M?rmZp;PkqGDrlB&Ukt9eu zF_bgolP(&b97ySt<`}vH@yAuBCkRN7 zB?svkb`c#3NvzI?1v)B+cnQctxQiA5ALT%l<3$$m3Xl|0rfWZjM01UdGNkRO#UgJi zlk}EM$mSqkIoFK3S!Fpxehb7kbI_e%YFs$+GMg3V?{2O)d=DFeFc(6O^_AQUaIUMZU}jJ!qrhA{i=dC)6vp{_ zp$6-e=~yf%OgG&*YT5=adRv#-APxFRWduOv1|lm&QoN+_yb_7r54sfqs?a1h%uIPX zRAL1=#YdEIRN;lIprmUI=)?a78@iIgt_4ZXrUkQzbL=cbHy8&zP5@cl* zme{l?%d9ApMKNNeWgyh;HLOnrT~N0-h`k<`0FoeNfdLTPEr-*rEJhIvGqN7lQ97K7 z8g=_!u1QWI%-^t|;A{r%qr^>*6t-MDJ;P{U?I~~4m5x!M9-IV~(SsI1gh6%LTtR`= zWl*&*<`8juoxZ5TJe={1&_z92qSk6!kGmFs4;HS^es%TxFZ&f+^#zHbI%L;r7KH6O)*W>muK52pY3YOfHTGB zUoI}RWj0&u=k$aA(Jf7V-??jYta@c}^!;N0eQPg0^D%cy_(E-^4$F6~&0HG4efYVj zsOg6`zs#NNXqlP)@#OEHoS*u%>%xw`U(KG=UOds#`}46sj%UX8ToaNUs!k})zP-;FSqsbPWfiDbW`uf<880J{%-Ikq!N7t+S|Q*_x}SV6<9j} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/emery_sand.png b/src/main/resources/assets/emeraldcraft/textures/block/emery_sand.png new file mode 100644 index 0000000000000000000000000000000000000000..4fefbba1360fc26813a9749dbbf4cb98015691ee GIT binary patch literal 1681 zcmbVNZ*0_L81IOLfzG)sW)l@lN5~BJ`sa4NweDPQ?TwvsaHo$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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 M9vg_hzJFxuZ;pkJ6#xJL literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_leaves.png b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..0ce833eb3d09998828c0565af12a1ad01a379107 GIT binary patch literal 1835 zcmbVNYi!e26n23^pj4}PsAY7*b+w6(I=16950Ah~(zRhr*R^4ku55Mfo5pHl8`~ji z$73L>hUXAu8$uO7#<~YvVS)h@ueB60pn&$!KxiA{p)E|6R+$7?IfOEV`tIsrkDOm~^9627za+b|YBXY}7?;cL8Hwn#;gjLG_)hHP)k zL6G!Z!CS3Wd!A!BDQIMQsU8?3K^dYEWcJ*M%yNxDL+e34 zJAq#)YgRy2bGesmZshDdHg^s>JHkMMAkbJe5)6nc6LDY(UIvc!X#ztN5UtUH73&7k zYEK2~loWs#87(+RnN6tGZlo-v-DECAO(bO{NGn0nI7u<2g`w?e^1`4sh4(R)u4j_A z;FkmQYnsduL^vEahH0auG!T^CZYM|+VKU(mfvZiT#zt^a%^zWK0hLn(Sra4?)fw4( zDWo|t=;?3>K{-V$s!5rkU_^wK3Cc+7Atiu3m%_;*C6F-Aa|8&0AP_YbVyP5X_Dha9}19%1v5un)FgdjM>W2 zGC_q0+mx)HDzGFu3J7Q-V;GjxE5U(rdI|s@OHK<9t-vsC*bgA-Kjg(QOqG0Em{mY= z161q3q#gnNC-kx%4u$w@l!>)_N_+$k`-VPDH7xj%YI#6}eNKT5t#JFfHxVRlzuQ&p zwQUSl;hXx&tmT`gY!w%LkiKJ9?8K4Q)0yiEcV0t#W?IRk{A>VGE| zrLGOFc#CiB_@ZXdHoACYOV+1puYE7J_WXdoE7Z47*+6|aaP(C3nyj3szwCOIh#CqW zH^g&^p4A6}OKiCx7xwHrced?dMenF9r6>A-KU;Zbi_J6nz1WLqTC;5Jzdlkt8o6#; zH?-mv-?IgI?OxZ}{LtcY9igtZH^OUb-oL#$YPi&QG&^t1ChCv#o6~o7Ty8R~>J2e* z+u%m3uuVle`)6~xr8ftb-JJv$E44dg$Cn;%iS7Nw?YePD{KhkXJazJy-!8BJ`lmH} z;~&WfYJ@BC34_P7Pv%^x;r3m+(%YMniJZt`JEpqEU{9{h%g)DUw$HyBoAmR*Q{utt zF2kz++Kat!%y@m=q206ai>+H%)_r^6*0MRPqqnACbrzf^KaZT(e`oHJa@X#8b*ujb DrVxVu literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_log.png b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_log.png new file mode 100644 index 0000000000000000000000000000000000000000..72c86b4e72b7fed5bcd5c1ad3fa74e248319a11a GIT binary patch literal 2200 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 K&eoz;b$sqNYHidd%Lo`wzeI2 znAC48rw_apP*bI;x&17DA-S-9A|Q;PEf))FDi8akA_uhj3%MnBxALa)g%i~jk7T;NGC^< zGf2t+GO zI~-P)u{*3hF90iWIs>A}0#=|wV!uZb8qF+7>=*y%{xzBetB?;pFppWAX8LgDk`52H zDPBEQ;N|!zB%!g4;dsHU1Q#ZlDF8$)J}o`40yDIcAb_O*kQXyBT?rTwUIQidP_6%x zdIa>JFw1r(6ymQ@#@1$)cmfXlhB-_&EclUZc|eAJPJ<2Y*7L`ABS=cf>nW+W>K`m z{@a~5>yW!Oub=tFkvlowHg^1A#Uz8B%|N>6x0K8KA5Urd=}bzO+y4zS)#Xl?3JY(X z`y+JimF6FhU)(da{H2MG{dpTwZ+5H>y!dDS-dpO&iw9DU>>6$FTQYDi{r%C0kXwU?hx?8#%RKqvma$7c{g$h(JuUZE zy1xIiE!WmNHoTL!EZlyu*|TuvBJOl)W=`5Db!sxp?$}mw)rS|IKXxUs=ny^8ot^b= b&W5es()|4H*3@O@U&vcl;rXDn_SHWDC+}rF literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_sapling.png b/src/main/resources/assets/emeraldcraft/textures/block/ginkgo_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..b20438b591b0f920e28d1ff019161c588bcb43f4 GIT binary patch literal 1866 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_front.png b/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_front.png new file mode 100644 index 0000000000000000000000000000000000000000..31796309f6a8ebf4781e5a4895c119156d824fa9 GIT binary patch literal 2052 zcmbVNTTC2P7#8J@HP$nGlPX2hO=joJ zIp6vI@4ub%T5I#}(vmGD7>1Pw1O7Jj-e5iJ^3ng{iI@w$inYKC28KPh$$Ijzsbggr zRx~7qJIszy6ECQ;4Tx$tv?XN?p)stsE~x>b2by>{j7o}!`2Djp1TKjlqTLyyLz)l9 zq`;sK_YO9Pg~1+y6N$Q=cx{qL1Tr)Mo|NN?!6!XLikC-YYnmeP6vXWD5MIk5-VtiW zeX0&|r_DtQjDy8%I2+@lIo7cqXKAK}qH8F|PSOldyLdZ?XMO~-ri&52&A%&S3w?Qr zm}zP}MI{mmTf%Nr^(e(~97oYC#j+$qkj8*wf+VRJm01QqGz4AJOi5L6ixG6IeWr&% zO4BaLT8>sRGGRgiqmn?Q7#nT5lmd!E4yX0$@sx2n9xJ8GzvHEAZdG;p?R9)S^GBH&C_%m8d60m zGO!%#B3X9|ia_rBpr~p@V1oYzivk}}br~R^B^g8^r72MY&qb2=sc}_DhLJk^^7)|8 z*Q%=#DUKG5w%zr3u)*hII2Tf6V^VTMAwH-WCQt+z^m_;tADbkJydVJD;T9Ou?q&cf z+8rVZ>?}tDQHVH@{}9+gcE4X0`m8F*?ibO15ja`a!8u8hadD*Rbht^*-t8hIjvCex z5uC0F$k}hvCDer={?I(ATmA_}mc@%aGEkb0OfS`gXl4|bc3N((Rc0+^H4fT@r$=cb zYITdLa^?e)rC=aqcQ5SCDZo<|%mcydOb;PgB?(0$GcB!~Xgu6tdR@6HU*{IYLL)3ZPSDhG+Niu(SK*FQDl-E({DTq)g@ zCmoA*UwZKy*AMX)?ACaHSC}Yz{@S58=C(N-Pwvpv4;Qx{9XnWfcCdHcj_wqcfvDcc1v~TFKBC2j&9t!S&~QhsN6)NAkPg zKmBFpt)=4gOP)iY9L+CptoFSgdNNq9+^BSyF1+>q*u^ D{HUja literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_front_on.png b/src/main/resources/assets/emeraldcraft/textures/block/glass_kiln_front_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e9ec49581fc23d1c89d45f8a19924ea8399cbcb1 GIT binary patch literal 2307 zcmb_eeQeZZ7%zqhOduGhK?PGfPzLMu<9fYo-LY(UlRLA!9mg49nMkjFd)IKimbT+= zGYAqeAb-fmh>;OZ{0M&#oPY)+;0!2J62l@4LBp2_OZakeq9H2!_P!iCa3NmO>)XD+ z=Xrk5^ZuUq?Yc;K&bYEi%Mb(^7Yz8L@IJx5M&AejH*8F@@HR#dEHn}1fr<7t0@=E4 z5`v6sP+|+L1)&CB)KrHcX>s7lsyaj?NOetC7sMsNLgOHzq`laW`?@exk-XS^SBMPh zK9E!bZ3dXv7LJK+OGHk>YG$L=Sspr2fhC|>HI+8`tQX7q<>As5}G9UFnU5Evr zyjaq*beX*SZ3I!PwZN^%4KtzG5wHP9(Uj}Jb*xBg3&j5m@ z88J;u6&ET}q>TD}_QH738S|C2q-D&?K{miISip1#Gny?!O8lm}7 z-Vt&4h&eg)0mWv}T8KLjEG;oWa|-4K(e6wyCfbq&5>|Mv46!1^t7zVBCJCU^yXZ6z zGd0=D2nMK4z||X0D-d_$Zwkxq&OXktZkNj=<3MELe#bB}?s2-IvPic(&XAJCu~1KU zX3x+(<0^L9J+d#j7n4Fd0pMm&VE3NS@cQH5`3$)g{IB`s)S8zX@lO@z<^~-JMM=YR z#vYaqIQURHB0(CK%76!8oA_lNf{b`B=&y~<*r;yW6@I9;{N=6#W4}kKo6|?`-?en+ zZ=v=hkw`}*a%{q)m-_mjt?E5-@U!J3_x4_YvRnq8&Ff!3@YK|8apQ@Bquif2<*irR z$+c&~D_4J2KIMZ=*QTAi|KXEs7fKb694R~b?GI6M3;){Q>FZ`Tm+$U4b~&)P=eSq9 zGIF%~E)#ASVogWbXksr?HTL2sCnr5Pomg~r_nIDUYnYujd;gRZzjoEUc&f5uWy7dd zJ9k`+QZo-ff2ik~%ENmue0RaUV*D?M-~QuL_t6cD#{}mdLY4Ece604Lzka%F;|*`; zt0zv0Z%o_Q6cM&$&)!Enf8(r^*qD 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..671c01f301e3c1b43e265409c1a9f499707842c0 GIT binary patch literal 1843 zcmbVNYm5_B6fP^QfG$~KP0&Og1~yr&)44N!&V;h=whQgj)>@jdgc!MVbuj?oI$RNsuQ%sv97nGL#co)DuZ&07Njqo`jDm+IY@8u#z9;U zp}Z0qHPGhKL|PgxNPV=nlwWXhJ|OU(M<^a}eiryy&dmT$1U}I%P>ml=q8V~lOocZzVv(mH zowqDqWZ81L>?*rm*vPS*AP6krS)OMIf-y%l3sxA-T;22#My6yax}{)^vOU5KE?GgE zFs-Mc>MggL*^r3{##W%taxP$}R0GOV3#XTiVlB8Vv8aetq**4xaxJW$#}+p8_$IDf z+cyLt(#GSh7;|z_)m8}88W<*NGz6IwZKg+b#HNsmONN97h6&Bpb~d^gG7z+|k;b^# zEL5^dnF@vM!UU+EEs7@NvblDa4GKdG1!*1-xq*iP?lcEPAc(x%2?8Pjb!Z&RN_J#6 z)W`6F8Z;nso*ST~Yh-A_{{_pEn8k()NzRH2bBNWo98I;96hpX(4HB5JbI*Ps4TX{h z&MHN+VWu|rQ_+Etj}v@^k&CO*jmO2PW?E2_P&6E*i9Rkxkwq`^!HkrJOh&RZ1s;JB z+L*nd~8wl`~JHQ{6q+RN4eCJ(I59R%6aB|0eth$ISM2qk)8oB|BZtRP;rriSsQ#{Xtg_Tc$EMHkbUwcA zjkY@n|K4#Re8~CQcUONtF!tb=g?-7-cJEsM>Rb1APJjFH32nz84@XXLpUbHY-S1y+ zJJu`12R=F`I)A->s`m&VD@`Y^R{IMx)ya3SFSyjUzsp^HuigHvMF$e$xBIt` F{R2{RU|#?L 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..9c8a28c4ea73cb4c894df881cf4f6ce4bc2894c3 GIT binary patch literal 1863 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 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 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 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 O0000;tUbowNKX!Lr zyBSf5F&P0g86-}K(~#^Be;`o= zckg}P_s8e^dEeI?ZLD8jvZjO}h~?piP!oQybe;!_@c;ThZv*@)HX8O=1W~%$d6p2b zA1^0}qG2W0Y&S=ql%TGS>I@o(?F=RLyp>IwN5NDzX8YQInb_Wdc;zu7tT2KIN2Cd&_ux2 z&6uty^M#7$Lnebkr!ao9a<`(%dfM7NXAcSi8wDsgi|J;)wA&wJMad&b0$auUC6=9q zMs!(8bkBwQX;zGJ9$a9F6YhXw)yTjG{|T0%l+aBT;G7i|v?9jPS}C%?q!iSXx``d* z=sa`h!@*$G)Dub)FIY|WJIHWd(94Nl9K4Imh8u}UVa>9E22nT^pfEo!MUkbrSB{Hf zT%;2)!P8#I0~!c8XITJ{7X{YsgN6Me9i|)=vP1H7FJ?Y_VNnQBonZije?xPC|f!js%cQ z<))Q+7+6>avu4w62pheJE@oktp0LxvM76D$t%XRBxm)}e=(>0GNPu3q*B{6ALw-8J z^N(E}F=YbHHML&n~+0Pd}?~_%iUbLsa z^Ibt4AfF!p=KT5XeVvK1@u{WlD&qXE(KA(N{nEDU;8?1-J2QOCQ%;!Qe;JFGC)RTE&9bSEP+vLQnr#_a_ ypL{U(@J!3T=hpP?8y*24x>j7PIeoeE+=}Vn250V5Peq(-JzUoqI=N%-{=Wf!Cb(+= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/palm_door_top.png b/src/main/resources/assets/emeraldcraft/textures/block/palm_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..dcc924db7bb1d499d2253fed575d1a2e3d63501d GIT binary patch literal 2034 zcmb_de`wrP98aBg-P%I2qf{p>rhlw+%Ox+#<&v;l?Q-XO%&WCMxC#@S%X_(ty~~S9 z+Pl`#u45Eb`sZYp!jyr3Donxp114kmhkx}?m5IW{4HeuNI_JRoa=+-bo23{?@_u~Y z_s8e^dGEb8GJK?S=i@smit0=aB}U1=D}38p$#>7qy9W8~aED&-DXP6Yd|RmHm0pT! z{mjmc2jl5yH4~R22E;iOsgzuTrl^Ah71uB)Q9$QV-ge^5ub*CEXdA|vY&6ZMT^$wd zp;-@&%?@YG*-2A{%)lY~U_~PaN+>YsN~!4hS|!d@?P{bQ4s#4$g#?pvW-xR}kEcgy z9eaq5Mr76ml0e7Q2#|SIkPgrS4`Li2=+L5(!&5<=A(7Tn zD7j6uj$fyV5XMyumje+#OsNWlW)tU5dBv)8XmY5CO2`R(f(1>iTfhPK3-~^!o749= zAk?PQO&=S^QYtlF_(5`-q){hiL$sfnaS=C)d_3iuC^=2S>^h+`6+xPCmP>mwev z>>`=)M~@t)Q%PM0s!W29fNHquw3c%Gz;H~IO2iq$PsFyNhGG%|G61Xv1jI&FNn&%N zEV4!pA|N6Gnz>rKWPJjgQ=tkP>mgaMN{X37s=^AEAh9x#0ILEZu`tHVF%U&jC<_h$ z&v`c4g+_79cEY_G%10ZreNxz&`tBJ+uhd&bo31KGGt6)GV`0D???*xrDF&1FzC zTP`4C^Z~l4!F+55Wy3>*dBWCaq{rPae&3jWaP$yDB`1?QM^y+|Xi1Rp9}`HIlp4oR6eTB8L#kVhzD}-LFq}LhhbzZyJ)h0#@!!?haO?fA`EcQ}T9X?0PZd_@ z)*Zp5oYf(6u7}O$g+e;bD+xJ-Dvw+^)2Dy`fm~LXQ;EThvShAgyZ$_z99mv@;`-HZ z$69-Op0pRw-ok(npPT-<{y*;A*uS!LV0-t4`8!}+_o3ZuotIk2+xF40?VQs0^W8Te z&bC@}&aS;zwhhc5M-x}Sw^l>s8~yF#;yZ~mH}?D}ynFtejv)Wn-cw(zT|Yg4@x+;@ z_3ete@YVItcQ0LAoDg@t-*Tz<%Tq^BF0?%Q;r3R!9?zp Q^Wm+WN)9L9J3MjnZ&jF!a{vGU literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/palm_leaves.png b/src/main/resources/assets/emeraldcraft/textures/block/palm_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..295ee964f374e4b6340d7cc04c0dadba31ac504c GIT binary patch literal 2481 zcmb_e3v3f*9KR{=g2GTT(cpQ2Jg@iYt?gZ?INHIg>sGn}<0;p>>w2v1b$7S58;`{$ z5}po1430N01EGV7x*?f>0mR6{25hh_2FZ9S;xb`8BZ}X3TQd}ts7%+!3@2UNNOm z7BULcGP%MWj^>exZ@?463^3pqR2B~VeF23DTac(-2DG(d41uE%HOGP^X%68mhZD9+ zvH&OQjVMP@By6Jfgb}AnYCKHhgbBk<7-2whg29c9frdLj2=FHJ9>!&x-02JSEQnWC zgA9g+LLq&~pqJ!qjG$>6!%2)JQGh^|f`H0~(SS0%%Ysc%I9Uv;q7;BNi>zD9Q!NOH zv?B$7FlIKObkYO}!@_J3BlNhIQWVH@Fe2L=AW*k;qUc#(_38ej`2vcp9MLKel}acf`M!VjxottC7&b% z#~?aG_i?+`>Xapq=mQgqYsw_po@_M|w9$x?dLkOG!@<}CipmB!!EUo4fFHdm@(k}L zSjx!rC@Gk6ls8aDl=k4!E=}Sz%bVzqbisO?#N}x!=vvQ%^#o<$IMzg=CJ#-Zl$*j) z8s`nD!C+=dx5124w6V*7x-5cS$ol@Z9c^!F@?la$1r)ZRbN6Hjxt%Sa2uBseu$;CN zEC{DbK;V(iVev5xJY5DIW982uYvbifqJqlQ>nNXiCmJ&p9RC&jO@`F|fh&y%=7 zCDJH~dvKH_H2zIEhth7sKnVoR^Ma=<`|i=lq>3|%RF_o$W%Qloa$Yu&Er7!nL;gcP zPo>AdRwI^A_pSH8=7VX+YKPRYKdUf0*X;-f<%|x2b6so3E)>v-T}eU!P$h#4N9wKn z6@s4GXtyP0npe+VcQ{R+J@D%yrEcxAxW3_g840?Ns_z^++T?8BHsa3l%f1(OHTD=^ z_d2of(-&ut)0IhV>MwDtifu2)>5{GvxqIZcGHTt=r3XEplP8AtEq?QUTUJhav+t+t z*T)@CAdY+W>&qIhrNR}Jm4jD){Y6d9@b$GVixw|l`&RiU=T;Dt+uGXh&-~@?LFed{ z!xwsgl`y>S%$fMJ3#Kh8UPUz6ph4T`=&xU1j3=zAy<#?-o!OJ>6Uq+PJYz!!UA=m> z&rv5d_JbAGv(Qxp`O0&-ON#63>TX@U=-zEFcTK%;cjml#y|zt{T=P;FFJHDnu3e1} zdsbAPY0WQKxbV`02Xo@$m-jf-mN9jbFNbM}t^h zUA?0*Jw5$w-rS2f%;hdS@VB?3;#Aw+`wt%Q`T0Yd@|v5Q2kmUQb}F#HDD6mXt?uBw z64$N~kWQ!bNm6Y?!(fo(=im9aY~A{>XYZtKyH6ZDf;Zy*Z|{8gvSA{T`-HJ;m-0JXQb^W;m5E^J-0xbIQtsM?Imro{N=sXaFz+f%jS kq-V^Kl|`-g&zc*HpzpcV9m$pmto^C7C#Tu=PMTl*2fmbo;{X5v literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/palm_log.png b/src/main/resources/assets/emeraldcraft/textures/block/palm_log.png new file mode 100644 index 0000000000000000000000000000000000000000..96734777362dbb0abe42ba93d0cd4e67fdc1afb5 GIT binary patch literal 2277 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 Kb7aGoZT|p1=dE`D literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/palm_sapling.png b/src/main/resources/assets/emeraldcraft/textures/block/palm_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..1a162bd6611bef64b03159d7e448e1800aa81ed0 GIT binary patch literal 2436 zcmcIm4Qvxt96uy57$6SF7&_#*DeB~UcfGdv0cCFOU`0FjQQ0tpT<>1n%i3PKyRF@l zZ4rWGC_^G>n1Bd@Xf%rx1H_>)3?eFsh~P)SK?Dhq;2hbQNbp_Pm8oM{NNnQGdGT1_@wq%3BX;Y^f`X7>G@UAO2Xd(i8W7k1P~=aQz}&v zMqya=@iI9qDN*eS!>Pm`;1qOV$IK*5H)+GojE5q5GtHCClO)TNWG~bW zr638q&>zg=BN$|l(ss4{FGA=sbQ@JfP=fT20S01CH~9ES^5i-3C>;DbC2Yo_4v z3O)>#MBb;UApuH74heohM8bXyz2l8T2`Z{vkzmg0{_8G>qexYJau7byO6KLEu6&1$ z;%u-aCdyDgbOVN4AZxJ9)rnpz1|i#fx(+YsGCG#nNWV z%b2an=>IS86Uh|=Lf8-BtCqm-J)WV7{=d~2unq6A8Ux2e7%$mgsS*EH;T>W3wM;H- zW<#S|qOy5{KUw2B_uiqi<6Z=1$Q7UU(h`H)k0bjX7k!)I8Dvb8habF29-kl#3#r1x zF{jCQ0YQcxbUAZ9?3x{~AGj&lLud%HW85wBO=xAWEP;?|?Kp7Uwn?ebGo^N&ykErprW-x#qwYvY)) zYPexU&MGjaU;}#IF~>T~v+v_k`>(oZAU96Ue>YaSPJ6n%xj}bNm_96!{&3{N<*U;2 z)nzF~YnVNr`kc0^NBq8>EmIq2re9h>9gm z;i|4~)AMg`U7C8SD@CmzKBm)DoH72dWk=h{!1#Hk$A?oBe@NY$8M|JW`ARcgU)T6m z8-Y;kmR7eO@K$OkKUlK3xHxs~3!kPV-#iyRx#K|Tq6ur-Yb(|s8rxX%(cZLRYU9d_ zFV=S)?BId8Z+~^|%C7BA3r|m4-`L*yS$6l?x0_IC84Z{IrCbnw>X kX(LhlkB=4J++L49}klAKNM&bw=q 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 T)ad=6{mVGf*&Uxbbn^7yG~bne literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/peach_leaves.png b/src/main/resources/assets/emeraldcraft/textures/block/peach_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..614ec35f9f9c922312e1b04a3a2b28cd08698715 GIT binary patch literal 1761 zcmbVNeM}o=7{87W2ZMyUC0mfmaf?o5?R^0KxX}@4krr*m(uHoxle-5~jE;Q{OA4VFtf;$=$v8 zzQ6bRJyI&8U&rZXvdZ&FJdUq*|GLo58;s= zAk4eE70}l0^|Rd(*2ZD=`_Z}t4GjoDW6*>U6;(Q6$I^CbIM%0e3{69{h#hOt3DJP3 z6?I4oKx<8ABTLp$sKsU?&4i7r*^5#HX~78#PF5QUk|xY_wGGW&7-Unp5bbk5k>P@0 zb}X!EGL7T$c-$1PHc3h+PTFiXoS<-uGD3t=O^O~JnI60<7)8rhBgD4PysHqT3X0dWu(j+x3 z{f+7D@;wAlT8}5ov7s-5kfl(yrXw(nj367LRew?jxDTjOOkqLO5$NV_JsO#ID1gx< z#V<+GwS#J1a~X9w^n!#x|*yatTaKa zLOl}4hmspYDZ0jd4-{q%$7syIf;pBBNs7S0n0bNe1h_1AVrW)L+95?H1rkH=s@KoE z9gbE-3h`06p!%8{QFoKWOxnz5BV{7f?s`15TU0ehWP#gh$DlqYp66(DkO2&31xAKt zIis1a2^xduATWj~tA!$J84JrnqV%EBPKk}_S+KUB`=9%tR(M#2O!U6(=(VY*5AEVr zc(BP#^|XPm%qYsE>5QQnR<8s*#_A~mI4m>G-?sv*X5(Q1js8Pktin_&q{SHpG;~6> z{!8lN(0^Pn+tpC;zebr}TUX+1aM(BWVYXqxk8H~WBJ6VtY-q!E;5335B5r4c-};)+ zHaYqwT2kiqy4sZ=H@W!dAN?f%!?BkKOT)eSrq4F@zwRnX&ffg_TcP)nj;Zg?-MDOf ztK{>Am0bvmjnBO|SBPBOj|}>XkaIV-Z@u8mT?mi9JCPqTPEFe$SS%a+=}c}OvaRvd z+3h3emwVs}ax=vqGay@jyW2A|7;N0EE~mb*S&lAQkLR#Ow^DCDzI6A({OzF~Cn^W7 z-YR8lR`xn`Q+JxiFYPRz?fK}%l2Al=srjMBq!%Hs#J)aMmFVa9Ek4YoX2xFt1|(2% z`czKe4%atF`zC(9n1_5i7NMM552Djub^e8d=k8274(vHmIe%y}VCXnz$PcuTSnsq0 z3y%IW+ux6V7524UzmhW_nE7G&ys2toyY9Z)Eh<%CjF2QF|7nfr{n>i{;5(NNwKX Ru0H)IgDIFNh-5`KkG!Hz_Nn=4CJyTnx-h`tb)tUOlsId8sx zdH=@^ns>Z6Vx0Vb{lVu?-vAi%1|q~c$OXs4!5ov`9;jMuE{6Gz+YU=Xp!X+MO(2N5 zpx`(jSyh;HY83#jE8D6;MNk#MB1Nve4z>=PsRwg za}Fv1?}#+eh00FGE22W{4(gyVPCy>vLO{i2v;FCwfs%A_{)LEA6e8fJ2!V>T>e>)_ zVTEDBh$2vhQ~(Dmof%;2fU&51&p@P;wJ0$* z(MQaT$deh1T#kFO@=^hSb-m~&AUjn>MdH9)fXs=Ba=Q(hE6omSO|lFC-<_330gL+2 z;5c?RZI=Puj8!Mz3>5NCS}-U>r7>=U?hQ3zl>o3c?L-XvzLRrY!;3pO5LHAVsz3@c zrS%;onVD=@qY@S!apTyZD1_FZ5$mufkwsMzDL~_#1FcE1*t+{A<2k69{QmiqrUe3X zOiBf%s0dt&GY64E+n+Jp*=7W1ED*5nyp9)CI%iChg!RujcSYiI-8m;!Cw~D7voqu} SLAk2{0000$SaG-CcWYyWMSo z#F0s02G~H!3?EAv6Sk-%%NPLxkwoM}LTi>TN}zu;59Csw?cuS2^rcm0(yVv zbO;)|NboLKmwOh|tQ68QoaEzm(NGwmAt-xcG|aH&ybAmHfFN3to}(uaSm3NkiP3|5 z!VbPn$g7e0r8W6pwx*n=IAq}hI6F!M10h~z;Aki)DsYR;IHf1&!+M-BW4IY33@A>}xQRAUaNk)Q51&jF})rI2vn&SRVIpx%G{&{C$F%w5LN|Agf)wd zPpVX{2=Fu>LMWUvD=LXJfrMdECX5j}Tni}%oKz$BKAGs+3vYRR!Fft3?y0 z9Wu|TlI)eFU~-`flP<#!hqf>lII~0$IVqyNJY){R7PZZx6_J%{OAOM zqb)wpV&?TMYBchG)X$L?)Z(LjsDbozIAJtUI1vvQ%y&v`rKW=9d=AXl<1EQiJ_0r2 zj0rXQNHa=NK0m6bSjGbSER2s#@)yVgs6r%FGLbeDZqKo2V_LBQARKSSCu5IiiAk8w6ExQ91lLl& zBE<^FR7*3gR*hDK)nv$XNTOR9W)+?+i*d7&G9DOxj5gyiMe?f=M&@k+uwqXlf9z5I zD@@hny*E&PTyODNP=@0e)C{&ilwvs+B`pNQa+II+Ya05u_ZAeVyo7-!jbK+ymdjIm zpD@psF=BuR8$5@x;^`mm2m@6~@Mf90N&7gR@0zrVcgmkvbN6 z5u{26hu+S$qrQfq5f|M~n>Vu|)MzWuuuVO^F1@4TwUb=8k;~k_a>AkFG(noP>AH8u zCx2dU?=QX&y$KDZ)zqKPjAre-GV9W;WnHU|oIApp$5))U|IRdq>KD9io^?&9LT zYd=^yqS-g?`!9@2u5H$site`U*ZaSGwZ$+P$l21%H@D2)t`54|ue6R^yg`0pVDEA0 zpswj1(RyLuO7kyuEz`wH(<{EHe7mLjeABMd`;~RNn@d`=PM=y;Ts?1FZ%ILC=b`;= znYo+t`^M~pF literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/peach_planks.png b/src/main/resources/assets/emeraldcraft/textures/block/peach_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..a2bcd90bbff921791d0847de732524f2d092c5d4 GIT binary patch literal 2208 zcmb_edu$X%7~fK%Qpzj+2S}4{me@dWZ)f-Jwzn%Mw0D(W%9Yw4wnfD5WA1M0?e4L= z?OiKAkbpcSyh2Do6bNACm6%|$r4bvef}%y^12t+xK%t39LO>!2&R*{>RSFW~Cc8U3 z^PAuIeZTLUnO$8|J!fqGlza@s#s(_=wdg&;z8@Zeo*OnsS@aqmuWU3iY)qkj=V04j zn}lJbx|L9a)exM^OS|&SK+H-O|md zei!QO@IMS7X@kM6jbVLJ)vO8As%S-Fqy-rkZHC(7kgA2I-eO3wq7}J0)s804`wS>p zx)IX#SSC?58JBUN&rXa7pH{DEvYs%f519k~f(5+<1CZQ+C7mDyIFvQs$<6>C9)Lk; zP?wc(+fb;7q+KDJ;oWyYQPs$TCHyB?miVx4r~-;vQH2Pk;#!2jvr6(lJ*FGTF!Ihh zv_IhU)fjqMiJ<|rc1}4SsPM5g$Fd~jpi}M!gM2_UEkToD!0#oHJ`P2Zc^YtTMrI_^ z;|aS-7j(&_;1mT?36c=; z$ub8yiGi8<^9%*8LLv6RJoehO%ZIO2OqAHR^y;aDOVX{Ff~P8m7bJTncnQfa0Vosc zZeYz(#zWcL>R_o+|E|K+*pMw4r8Cuq_I10NJy6g`_DF&nlFC2_4%ipFieWix0{*hl zw2kVfp6U-k!OGjNC--+$?OVO8Cue2vW0%XjvA&Z#ZeY9iA6)+S;nj<$kIhR=9Ip0uEqPV2>ub(T;g8Y}hs=(KOe{|1UPpET4SO2TCUoXUp_)sC>5)1>BD+Yfbe^S*3snAJO`ZvX5>mzsi;2Re$yEo)y`wdmZL*nx!r8`Cjm zS@*yzt9t0@$iCg)o^6|6tUUkS{2Ph9_b(P)7U}hGJbUo^-ZDZcf3No2qg9vw*wZp! z-dc4tB9@HbQHOoh1-C3^<_;($a{DU|pKW|3aeRd_&{v8boc;xO_0Q|47JMjda>T5@BQ=eLo+78dN>ZT~|A MDysd5%bQ;Q8?@!@;Q#;t literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/peach_sapling.png b/src/main/resources/assets/emeraldcraft/textures/block/peach_sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..89e0408b0e2663edb1b1be997746a6006913feec GIT binary patch literal 2488 zcmcIm3v3f*96yl9U_55VE1+=P5+3UH9=*1A7Yf_jv31a~u>#`};2vMwV{Nb8U1_%{ z7{!bslb2zL2r5sF2;q?!P!`@2C4j`pQzsyZ5EeuM!HC~=T|ou1kl5twefQn(`~6?P z|9w|mT2k1xbKlMgf^_v1xyQn5mN_yy!2ba^?+ftKDOxm9N07{HbF@KLtn7mz9fOLm z!l>|$<|Q?35oA>amP9xT(FihZL?S9kmB2tn5KtmctZ7#RhAOfXn_%;j-lz)%m7;15 zlvkJdr0PnEld%!Q(P0T55`=*vpowrOqVowSmgME(+*~FwGzl>(omie}5Uuc*qApbf zsLf)>C5oX@2WO$|Bu6tZp)^T32+~1NR-B}G(#~5sH1)%vHBI*OW8EWDw&0x;3mQh0 zCy01FZi!nhsumz9j^hZDCTJRm2wbm<7(xP%=s7J6ZlFt=5;YVxf|`tisKyK@20d*K zAskK9M)XvgV8V!m5G5!JX@=AS^m?BR4TsZc-6)s^t)%>YB(d(RiUMLR(AAhGfr42e zV&t?Klcn_DXiN(wBb6lrgg_X=bm$nBHWdx3hN=hE$Hb9-oQ@{SyEGses^(MGP)ngo zTUbz+%Pb6w4w;}tWHqi2HJwWB0dBznPK+jDx=A}uJA4$$(^j5zyhySt8G*yf0SBOP8_99FU}FSabO1l(aj-N6hbZ_l zRF-(Zs)Yq86(uYL01=G@F!X^pE;XcTUR8!Uw?4e?ak)x0)vtu$1AS~^KI$oO*(uHr zOJbo+$gg zpps^ouKJC*pn<#qEJ#K6G5PY=&o$IZYpa@FsnHf(R_61`o%r zM<%|4AZ>1W+<88>Zrzd*!Sb>`2j)1uQ}2$ho_1pYqDeUiS*}NZP2;kG86UElv0oZd zi=~6uaowoc%#YqZwSV1dFZOFz&3t3X%o(|On@p$59SR!bGzwm z)5?3D*7dmm%>8Keg3$NXKTh?WI{9{xE4+4YJ$@-LA+dAj()!!+k=e+dHF-NG5#rZ# zDdf=g=fyB#swZELm@cN?=H+EpGJnC&*LPfg^Ll2a3@JXSpFa>O zd#_|vugjxMZnXSxY0urk-wbX%z3Hop9UVHVowvkK%85%~^y_k=a5FJ*N%5BL mUWf5Rt;{TzkEt+uH7K*{y8bv`bnmB)pw@yB)hbGo6`s zwiwS~Q8V&`T@%>KwT3CwzS55s1@okYFddwt9 z_Y*`}of2)c+9I1pNlQ7Pti_NclhQGoAS$afI+Qw*MaEDn| ze$=6a`V7?4*ASKZIwc@e)m3C=M#KtI$bw`hl~heJIO4=G>OzXCM z6lR)pA*C19s%Ab+IABZ$>I~;#ZI`k@St{c6ZX=mBE=vqbq7+gs6Jxm|R`1X(&Fs)- zQC&Q~$p8**BvQ07BbQXFXu`CDJ=l$WKxRan(Ow-f&B)Zc4G9H%FwNDrH@fII5VSNS zs%gnWqM8bnNx$DtjF)`4RZ(RvZLXUpg96Y(K8j~?xLG&Nd!sB6o!<4VS7g~7E~3dw zymvazOLNXB$BQl?a;}@8xMXB#!T$uyk{H*F6vPfIDVRWvt|ln57)H^rB{c&Z#?*xA z`(eMo$%;!(UHAJC+3y95gIGM4vnz=K>ePXh!H&C5=n_CmzdcoPDT zM|R^*D9AS&3T{D|oVOm_Du0Kfprr0*@ zxRr(ms!8C~&7}#L*~pu)=hoB(z&RlsV`+i)#Bd!s0qqr>kcKhf0dAH<5P^d0)2VxD z7DPEg?N&GGM4%=jMoU;W9JYOcLJUsEmjs>fa46m!+89XvMe!Bgx zMa0_Y8|!xjH`JH^^vtsNOX{ljZP;_$Sa0N=m8aULj*^3i*7%M^o6hYW34U;6&^2(i z@i@DcnE=PW|@ltD%bJZ++FZ?D9jqLXE5Fy3xHK-vP~%%FRDc oZMjmN9NoXT|BoN)$Io~#@A8*EbwC=4j@e%r;b22xxOV%%Uk-!hfB*mh literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/purple_nether_bricks.png b/src/main/resources/assets/emeraldcraft/textures/block/purple_nether_bricks.png new file mode 100644 index 0000000000000000000000000000000000000000..9bd91ed8e5fb1f3b9a3f28bc8a6ec4f03b472fd0 GIT binary patch literal 1688 zcmbVN4Qvxt9KR_+1UCoU4DlnLw;4C#dSC6jURIW|j;)5<>Q=+Zlz6>+YmfClc6X!Q zG9iwDaWRet7=j;(Br|ACjd9tBi-0Hu4Hy%mbGT$7fyqeNa6|@9r|-J90W&3X$-DR7 zz2E!&zyJ5Tucj(<`J>Ab1j+PPd+OkvZH;C3!S|k6s2ENUYSo(!1X+<|jSS?_JF5|7 z$&}=8FdMjytf0y^UQ`3X7L_%KMv&67sKyJ;z(fNeC@F4idiWTIN}?OvnK2+BrUHYI?fkj81PdN?6m6bKLoGEhtdVyQG%3#q1Rgw%hb zP9NVP0Q#2W(lQp+MV8Yd46||@G$ZMdMbU=8O#?(7Fw|CE0F~RIn)#MB8e5?Q-c)tJ zs)kdM@}*QpX~yP23pYuMs78#U+b#ePZvr=FMGYriIOXtD3`;v$hFL?Fuq3$v zYFiXq%+k~yP?$3!Z}N8qivruE>M{=vmSjE%2u%rMXxfczg&J0MC>UzTB(&f-)~gsM zuL!{FabwVCnlwHKh61x-UDJO%Mh^_!HQXs&)oT>XBRcN&$o4POl z&-=By1WSt#-!qR@a8^pN)sg{&)t0P?deD+wg(WnR1uQRE+3m&zE381olAon}_P_#d zBm^Moe}sDhW~fbOgx5iN5PIvb=|n)~39Akl>>&PWV&d$!noYrBBe0g~76doxCI%GP zxpdf~uDtQsD+rR|^Lontg|YpyFKbVbxu?b(hfnx(Uqin>bN}$=UD?8hjrM~1*|BS4 z$#L*N*6D(L?!dsw_UH!(3wHl>Zg#soK6mtys_d_J^mI%XAm8u%=t!vN>@ybzi}I%P z@;-eFT$hLob+(z_{)yb3WN2?MH*|L9r7xboe)w?Z(Ip6#>-=+X{KKy9nH>B)u>v`N zXw|d3)*<9b@5J0?y6}&d^*vW|vIhM}vO3gnapdD0lLe16WBY!NkMmF6+OqY>gSWuD zYaPA%*wwCObD5JPwFc5xSlT_*zuVZ_d~M})_wRAz*N%B@bnvwI*p{-B!GY&)x+W!J z<$J#ju9|-#|BUzH#@NO8#cxJ0#doySHrCG`XC2M`aot;{N&uX6x3b0)U;lFF-}r4yQ~&?~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_door_bottom.png b/src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..a0e668a8d8c494cbca29d5348ba84d161fa9e8f3 GIT binary patch literal 715 zcmV;+0yO=JP)655^b& z1^*cRpL{dX#Do|n639@Punm}u&u%Sr?QL&cA7*?$=XcI|IOP4SclFt|V4_4~eZTQx zp?Hst*VEJ8RI`~RbqD8--Y)9wPe9e09UDD#h*Y>b^93;^4#0H|hJ zF}_{X#+8Dl>7~8iE*+LksoeyjCZS1dd(5mTPMx_&I@7~E9c3#8OSdO&NdZ6sn1rgj z^G|c?01QF_=tK@B34kLrRZ;*5MD%0qF3J)?Gy=YRM*t`vXvqYCyTrGtx*NM@AdL+4 ztu*Jc4ipC9k~vj-9zc>EE6@ONRuZa0mev6n7ya|%A_WlUDdI2;U7n?$Oc;^kT(CR^ za2H&W)eWiL1Q1TGaS>3@KMO-QpIU=64gbri7eE-g0M1v|CmP!d&AA|GZgK?l#w_KI zPJ5?O=yo5j7F&lkvqk^_>98;H6`rLTv-*@9MmZhc(2L6h5_xju0RU$1@}w8^K$XZp z0gyzO1L3n&GWAN3i6BqtoFL!)Q=vNm_||9n$uk$AzxSw!lKMv6{0hLlJ$L682`{LZ z4SIahs+MO)yW1Gl8oReyTzv4Fa96Z($n#T$t4L($SwTZKaU`6gBhzbBeOU0RTp27S|o&o>=AiOtW+%1E5KF=f|KsCNXXr xp5P6?qXxqf$xVZX15fauUaNP(ZK`^L{{`yvGWnQFGphgq002ovPDHLkV1k|wI*b4S literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_door_top.png b/src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..353e455e100bdee2abee8ee6f2dc41329c871319 GIT binary patch literal 704 zcmV;x0zdtUP)}RLQ5b}K&ir!^nOsOn01>pXL^o;`E?}djFX6lR z4!(?~<;IN#RifgBLPR3>kU+>Jnar8YnVgw%5f|>dySnRZ<<-mgE2^!;R*MFTux6|T z!2kAgq)x(i8h4uKREno|t`7hJIB)-&uic$!zdlW;-;V*$?-XyZI(!J=inpnz>fUV4 z%jDe2DF7o1dZ}=4tkR!PMP~F;0ie`vdFA?yRlTSc$q2f7^UDHL`O=zJC}+&7nngO? zFwHzO3X6<+e#eS~>9a-aX;b)WBlgg=*I`O zvS={Ihdo9rfI$+oOtLJQ41{A-HD%3uNrJKC1^`9Zp)iB8e+@Hdg&Y9JF#vgcg+Q8m z*pPr44Nm27J{=dBmY8_}LPP*WnkenPt6OWS!OOc_Bywf{Y%?)k=q93Jm`S7vEOP`jX>%ZRth^zwrRJ&)Yn$s-+11TsO`xryFf?-oG-v_9UQ%MSd3qQBGt^{4BbL2f*w~rbCvdYr1^^0mu?=XU9gqZ~37!H7Bt`;>u zyCURioNRBHtIwEl!n2QJ*eBBqT}2-Nwn7t5foVSAiV%RB>MkMszNHadpaalB>l@sK z0@DDvWVkZR5SQa>0OajzFKiu^7nWctVIqo+5I2y9%H` m@@ZPFDt`fz?J@(kHgR5j&0mcc8nWyyJSPn!h7v|cXihf+irK8 zil$=FNj2OnQw1*7r+e&P1?R~ zf6wpvJsBkEltI;8nw zT&ir-VO?8wSZHe!IFTsbgO{XuL?A;G;3+ww7<|e{qNo`#rBKBC-mh&P04 zaKEZU++$}+fu?EP!`YdL+XXyaG0xH~OVMtMagdCMce;7TiDwQ1xzoicUmJKP;|x9d zh`4ELJVhmwNqf>^SM?aha2!X`EXA@ULXbwQVuBQ@7(22I0cZ%iq?wYc;1(l@sLiI2 zKvEZCkhL7GVr24!GDf9JRWSn7!;~g%Zaqp(RJWVe^L#il6 zTmJ`TY2HEejN=X{>KPH3;J#o{;G?Q80~D|%gBYYVB}U-6H1d8mq3XynQs+pk2!;5d zVwgY?U@+h#P|S8o5_u*98J6{MqyusyDFA1bY z?7dMp!+04N>5h76QgArkWF&&@y`qN^oh(B~I3{a7|Pat z+lg9Aya8J7E&aiYw}kY&+wWndXVNOfff9pgR#Jo&3}p?Kg`!Y**DL+)wgHrdqp4;s zbMq8E_}?~1dOEv$ z@ritG=34*2(bGqV&R;t`Ib7XSwP|1eba;wM5ox}#H9vUZ@zcG>OS`B3 zz1iMyk&V9epb~Rr7EHxp%aP{dI^UQ)* zJD+;b^Xm$Hq<_nwU)Zh`9?Tnd7Gh(s%edqI? z(kF8#w%zDC1}|Lh6GwMpd-T119{mS?p_<-_W?NpSI&RGeARaIUz@$}A3c6o_+7y~&TLCp>ehAe^ep@&!})wrDdgcWbb18eM}B3mNOLQ z35TEmQ_<|gxopRU+2TJ=D{Q}Qz3TaHm9G6fCW3hft1Jq`dG^mc_uIbbVB&LWZcScb PKrwi_`njxgN@xNA1vZj- literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_nylium_side.png b/src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_nylium_side.png new file mode 100644 index 0000000000000000000000000000000000000000..96371414629a6f4022e2fb128628556ea7e755df GIT binary patch literal 678 zcmV;X0$KfuP)(d0#Ww)(+!C$k9st43Jzu`J zF#}=H3fkNS5bYSFNy^>DIf2-kTQY^_8?MjJw*!QMG3=qYWJ)-{0pR-gWnR}o8vtY2 z13+(`a(#AAIKRow0EU^4-d9R4kzd6a_LwG9^!bFyuQL1d1AyMID>lzc_{k>cyK$fB zA;tvg#(jwUymX(_jr&-R!{KmyO1O&hO~S|XG7W$ZU^xyI-{;V25^EXCQ($RWI zrO>5PERuxj-4zRwQWb)+l!T)ZrgKC~rg>n(wuuZ$APl5Z2-`-#?{=vQfv|0S*G1Si zRUw!yml(qymw&&p5Ghird`QswgjYMEC=JZC(LmUCF8CkW;0)nt#7xup+WkzqP{7uwu;0elT=g4a=BkK-8S`Z1AzBO0P5Z5 z=+6KK;ts&kp9kV6B1eB_^T~{JQ8%lH@l#|?(&Ke)k ztVAXO+yv*!IKzBrb!W+_0RV_h!Z(F1>4iv7X>T!o$5k=!kHYCdiYW+Buh`4uEB*IH z>u`KOEMh|%A$V;o24LH2Qb{M7p(3(GCjjFE<6J1HKSHTA?Ez5861KW|pgE)-2n?qK zfC#d;=a0Hs6|#&@0BBpqInYevYO!sr>2>mis~BRT^zt7L02qKcib9sg85-PtG6O)V pPQ3LN)AzVGNX+2shgK*y`~o(D{CRc(o^t>I002ovPDHLkV1mx8x(EOO literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_roots.png b/src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_roots.png new file mode 100644 index 0000000000000000000000000000000000000000..713c73d9324b3e11fcba0657ed86fa9c254430a8 GIT binary patch literal 1879 zcmbVNeN5bB7%y8k=h&7-GB->ZO~C|_Ucc_E4JQHza?Y|FoPcgJd+mF7_3qlz_PB!> zT_hS=Tn79xoGzQ1EKUMb=f|R$u#8|#lt9!aI9VXm8BI*KgbWj$(YMFlWt;3HYtr^@ z`+I)R@A-J2_WB#2*tq_o^$3D&^fh>!;C-`ou3HPQ#S8xm@OHn}@Qi^V`32UQhrD%U z8-lDEl>=>N8~+q1s&ShjsX<^%#WjdVkjko*CWujBqCpUr6%TfKbPPjf$%C~zc#_v@ zK}2ro)21or3^UY_nG|$T9fsMu zV>=PI5^o5dx0il*#k+;{o7?YRq-WA9Mg%1c;H)GtD;UBWD$7M7Zmw7Q+jRpd3x`w9 zTIS{{e8^2?pg?LJ&fC9^7q=rwUX9ON9dI9*92jX?RlV)CV^iaWl|O&(e|`Gb@(S^A)XcdNG%c7A`8@kuH=h7wU`q;vvgl_knk*zj{RoA*_1-5Uv z4#V!-sm9u!c5x$+4b3AdMjU#wnu*XD*03RKN^%!;@HkAWdXSj^>?DD!N|4yXi?nDq z!;~7yS#Wc%B_`*(WI-V|tj8O&01;@=k?^dR)@_gt5_w*L*6wSH!1EBND@ZiD4)J!e z6>l~yi2FS(DbqBK`vngZ_wkZnSckJT%TlzDVmOlV1FsJ-Uc7h^$epDmKwIePqBHaq zBvOuJ0*cCHGM)_QF{~uT2!cS-EXA@ULXdW!?nqfux9dv`A!y5%YC5W+<1V8VH+q~P zfkG{4(9ANeZWr@}GDc-3lVUuyt0@mu$_tr|%SB;$=S0^oSS_}0<^K+^@NXeer; z?_W@s1{^9dcMBBtj3PPGUBQYB5{9KoNU*9&Nl2M`lEBMp1kFa;u#jUE9hZ+n6hTzC z9Z8pAG!!I|W{;{WfEHw)hF%mtjV`?6l}W)L@R6*X2*?uaO$bV$WFIo*9=Eb3d*y%H zKWC|EYf0&Q=0Q8)Z-ph6Mx@9_rL&9sqe)5@S7~*DHczKfbK}ZTRS_J}% zD>Lp_BnW9G02?TGGaw_puqqHyclMZXQ4mqx2>ObCH^c671bDtHfh4=TEl9|2n?Z#r zzEPS+FsQs(07+rb-DY=%D^7F`uTJW=IK+29vuik3{rP z9;#4Blhi^Z^S$4$t--L0<& zU=C8V;;QjY=WkTk&QJevde5P+pMT-Tv%NLgIsVrJdrnSVTe7436~=yv9C80d(Qr#> Iq-lHqU$?Yd2LJ#7 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_stem.png b/src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_stem.png new file mode 100644 index 0000000000000000000000000000000000000000..6c34e4f282a28f2d2e74364c4ae5f09c9edcf851 GIT binary patch literal 586 zcmV-Q0=4~#P)fKoG^BeCCJr${1WHdPHy`sg`bGNn zT6`(>t+sfTsa?rCRsnfHE=8GU^B0e}kh^5ORDmq!56q;9O5 zFXG*%a(zh=am_b(S9!*+F9lxCQ~rxOppB;XM>B`zMnUfZe7NUiW|B6G;WQu_{blV^sm>o{<45of-a6e!)gl zSXzXMD~fI+2@<|+tn!?B#)IsHN$K~#yO1ba9zg)`7!ygaBLL(X2H62GKe%QUXxEpp z+Du(z#i6zo5hT2~SLY(n`2GF$k8e*VrD5OsSi{7H7&lh9zBJP@0H0XVvH);x-r^p+ zO~pOW;sg?hW2pk|Ljzo6)gZf~?YL$!U&QOxc90$StOD(GoW;qZvLVJE+N899{ONT> zb?QBhnT{L#k5~og*{(0=m+_g=T5`yv;Y7A07*qoM6N<$g4J#cmH+?% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_stem_top.png b/src/main/resources/assets/emeraldcraft/textures/block/purpuraceus_stem_top.png new file mode 100644 index 0000000000000000000000000000000000000000..741853e20fbacb14ef992be879eb8342667c2f06 GIT binary patch literal 513 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 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 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 K;2zqzbI+d(f>SF1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/stripped_palm_log.png b/src/main/resources/assets/emeraldcraft/textures/block/stripped_palm_log.png new file mode 100644 index 0000000000000000000000000000000000000000..4c4eab143e9d44b75049271ee52f496cb95e6b96 GIT binary patch literal 2058 zcmbVN4Qvx-7`{%71G0cH$b`s_n~_a+y}R~$-5qpev>mIVW!W0W-<0d!wLRC~)w|o; zF6sa=27=)D3*$$EPD~geu*`)m{3I*{tph_0e={+J3`93^{3ucU`EKi)p#up`uJ_${ z&-=d5`@HY>-kLJcyo@nZ#y}91;VN~MgZp^>N>2m-A2tLja2p*dU93XT*opdOfVS_< zf}m%6MeibQk$XPF$zdbQ%Ra#v3r7GNf@T-RA}m)eXs}NRh>{Jt)o}uWMc#%~THLrh zVi$s9X`Lce)OoyIT{TDZNKqj?JH`M9VL@ZzSU4o9Ow5K1_+`La-^LJl0HRgfkYYU` zyvSV!+hs+7Ek+9E2+{;wX(K`5w291zO*mo2a4SZbQJi3KiZRo0@`r$E3h!si9VN+F z;K_yrH7&wmSTq_nM$JZ9319?G(->~TOePc{P&F=TYz&puoFNYmLFE)NqKUEu>mFI3 zT%*|#z;rN$a3tkcQj;oKD!>vcY$Paa zvKo{h;X3vDp#VTyw>uSML@wcQDuk*zYe5=GK}JNY-grd7$^})fQ8>X_3uxx(*+dw- zBCwjQcx5>>RH(8c%COz87p4HttrR6*j;eXXYy=0Z2{y!p1G#YuHCercg)vzfl9-7X zFgQL4b<4cyj}M0ypg8R%%nV5}r0F3j=o+5Y*#8Cd9OIXjFbi@P!)!pnB2oZ>Q%W*+ zIV39}FkojMzVEWz%M{r!hQJH8eBNBx<+M`-O#$*oVt}sO&A230V-Icx~f$0&+C zL$ZX4@{ts3G5K*opJY+m$MGl!Rus+qEUalTU10B!xf;C-hU|G@&(lJI+0Rp`m9z@L zlr*C(PSPkv@i;|*JySu-et{x_Q^G>5?YeqEi&IyBzS)yA zk3Buzx%w-Z{e#`JN6fD%MC2vJ9+Hq`E#l^yX5i<%cDAp%EA7zPs%g7>k4!lI*U}e#7ZY8~rX8)V?Qh?w4|Bhq+;)D{rtIEd zUw&!Xo|Si%o#A8J#W?nfq2pL%XaA2YkJM(C9QBdRGffwI`aB1=t{|_sU>A;xTF=_t z)^z*ib2k!+HG2(BmUT^;H|@9YG%kq#mKAUB*nMmKm3P)Xe`w}&@Qvx$EKsiD{;7uc zHw-Tex=PTrHf+VVyI z4a?Ro&0q5k>F;jbaW9m(QyrYJe3>D=^3vri{Vf@ng?gx+3$$6!mvU&ydOLLHp0}_2 e?1|Qs!MoYiuEeRV_rsX}wRSl@j)QZTulfge63LJN literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/stripped_palm_log_top.png b/src/main/resources/assets/emeraldcraft/textures/block/stripped_palm_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..c038d3de05ae557d116af99242780702e3846bf2 GIT binary patch literal 1922 zcmbVNYitx%6rMgz1k+GLO;m!80}1spJFk7s(1DcQ(r(I@T9&jWkal+F&hE(0!@z`(U?_#JT@mRYjOoojB zh$~H56Ku`4M8xbak(ICw>(RP22OX%u7SObs&@3*^V>!PZTsyA`49!98T|8Fr1VlT+ zt!O|u0qSviaglP6~UXrEV527?l`3TZSPz+8|9O>m47A^cR7|oPqt}VE!5DPx> zSlqS^jv!L0lqFQGP{*SX)sr@l zL8kc>RHNipvkEdn!HBeA5R{8_Qpy1(v4k^{W+E3{5($t1D$r~TVyP0=i0ig)#r5mB zE^S{E07@GUmtri)MO8~7EW4oxrcn@NL9`Xg7=UO4mYy_4(9i>Eu6D99xPS=+TQ?)R zo+uWowMZEa1f0V7(b{%Jlk}8z-#i--6l}m_GzsMkxax{4j6n2dy*uwvUC6SYLQx#y&iYmkaVQ4W7Eh)(b^n`B0z>pm? z|9vPBXf<_NNx%)Ot#Kn7Y6y5K)(gqIs2tsJmj zW+^u=P;L*-(r`ulS%x8_Ud9uZiuOTWOgddqw3nd0hZQ{TXcQW_NdWuX?Z=~jM#5#1 zrM$9-70IYjwBKSX@DvJ(oA%?JO{aahCdGn<%@j`0R`5t+l~B-J$8dt^oCF>dofZHv zgZyh{0Rm#)XlWpPV3aWbd&+_DS&8d;@)i79>phjuK#wZud?U%(D`E*KK%3JwMhFzr?ewo zNB6y>okJqYs`o|@ztsKMSxhDZW#@m9SvnqlYoel>zi0HRug6_k*JNinl3c|%KRf*8 z%54`mpB`Vedv^QpXR46FUL+D?eA)Jq&M9m!sI5WARK^z^IQg*hSw;8Iy|I_Ce&d^Y zF>~ZKGsMh^!;MpO(JgORJbvNc>gFyZ{=fI|2Qu5= h=%4xVgQq91E<2qW8|o{+{Dclv`v=1(gsT7m literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/stripped_peach_log.png b/src/main/resources/assets/emeraldcraft/textures/block/stripped_peach_log.png new file mode 100644 index 0000000000000000000000000000000000000000..0089c0908799ff009579cdd0770ef44611cd0323 GIT binary patch literal 2268 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/stripped_purpuraceus_stem_top.png b/src/main/resources/assets/emeraldcraft/textures/block/stripped_purpuraceus_stem_top.png new file mode 100644 index 0000000000000000000000000000000000000000..6e9000b67b355ab44039b3acb554107dc76b5016 GIT binary patch literal 459 zcmV;+0W|)JP)?{{ny=^B?0jL!#7}(8KCI^k(k0a-TmY3B=hvT8odb4PBM$cO|MXowa!(oNF>iq zliMlVxhfU#(BA=SY9(F!F>xR2!kfb)*|Nm37axFqlrL{Tr}#doe#---9$eMxaJ29J zum^$x=!X3vYnwb*&43oCoq;O(lnEI(roJ@E72kyk2}rYYPAX002ovPDHLkV1ms> B*Y5xT literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/block/vitrified_sand.png b/src/main/resources/assets/emeraldcraft/textures/block/vitrified_sand.png new file mode 100644 index 0000000000000000000000000000000000000000..b8e4403f79e35e85d474759703a9410d15979efa GIT binary patch literal 2051 zcmbVN3s4hR6b)8HP&z7%T0vdcQ9dQvB!oa#0!V_8Y7{Yw2zK1;ZjzNG8?p-tk&mBh zMP(Eet5rZMKYvW2b`;S;w0=4*{%ysI4osaXSfQe#l>&X?lhKa-xih=__Pz7Yz4yF( z@8-lVjCOaM;>O`{+!ZnMIPe~4zekS%&mDO>F?hL}ViFh*XN-sacH(@#e=>*T>`keb zv&)qWP@FdKFoIT-JgdP3&>T)^xYdN=$s`M@NiAiR!ku;XFhmhjI6g?pSDIv`j*79F z$tAXhD%_TgO9(hT3<|ZPfWSbq7-Ti*jSOm)!UMc07~7{27#e`E$x?W(-5|7F84Jm1 zGYJLp#9Uk;5<E_`!%EkjodKd@&j*frc&^SThqEG)_Km$QJmL z!a9~Up$KBJSa_B|9&Oel0*OR|@P&v_$OQ;4lWt@&E7!=(9A=P{3~r`OEJYh3J0qs1 zQ&}ktJRJx9 zmS%MH-%vZ2-!K5ARVp1e-s+3N;4s0kQE4EIAwk}XW>o1W5{V-jI@OGmQE9--RQ42#3B~clz zr_I1H@GkK6d4)_CYo;}n9xO0%(UFiMN+uRa#A2?HCm3*7sYDe z|IR%2+O($+8bdMQVAF@HX9<}yG}2ShK*pdLZm$F>jN4OyB;cWG>YWuBq_yZsK>81P zF$iO54Qs*7%XKP0{lnpWjh!O^4BN_)?O>|VL0d;_MxL;fe%N^BaNWXnL$HS zs7@~Ca7N@R26QFeQC;F(U(;#4|quFqshUq zI-_o>;B9`Dihb2jCQJKLrWJa{?hLGTLTih=sa2ReK+QXawcYbt_! zyC+_FU+I3{>FkkE+a1%7#^gND#u{;bsfV=_{L2_kLSV0I#&6%&BR82>#6Dicdg)qh(`?zK)m1xfj2lA9rhPqdsiyoSmkpUTH7dPDFIX z9o8j=kHl|2;UtXwVNGI3*OoZNl`2?QVq8%nxz!R?wBdQ{rv-CU~(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/banner/bee.png b/src/main/resources/assets/emeraldcraft/textures/entity/banner/bee.png new file mode 100644 index 0000000000000000000000000000000000000000..9aee1e3c6a079628949b6c02bac7d669b80b477c GIT binary patch literal 2387 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/banner/snow.png b/src/main/resources/assets/emeraldcraft/textures/entity/banner/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/emeraldcraft/textures/entity/boat/ginkgo.png b/src/main/resources/assets/emeraldcraft/textures/entity/boat/ginkgo.png new file mode 100644 index 0000000000000000000000000000000000000000..b0636dcf5633af202ce61feeb0d596b09497a830 GIT binary patch literal 4509 zcmbVQ2{@E%-+$~o#}-*K4UxiZ8D@mBW)6d7jg~Ppn8Pe)#-3ft8YL<%Qwcd}ku7UU ziijL4WIu(9vS!Qo=v3Evzw3PO_kHhN*E7%k-1qOl{r<~y%_KS6?~@Q!5(NN20&ipK z1m0u73nwfHe!u9Ajs|ZcOdAh20Eo$MUOd2si;4gsph9(a=eQH>up|aek4R>CQ}jY< zOb`tKdrd=`M3O&+1M#N#Qt8IfnVJSDgi1Dsy6F?(1f~VWk7^Unq8tdfcP54VlQ3kc zsR?9nC>B&eqi~3jP+9<;jSV%1e$$Hu*PGigDC8T2<8KT#+cXGqCpbbZ7%U1zUk|NI zLhM083@~~KG#rE6qXR+05e6{00StlCg(I+VG!}({eE&c}Yb>%4*2&WPyDjj^80yF2 zFtIRLNJxlY2uhE^@`WKV7z_-Kgdvf-AVQZNM&}Sib?I#N9~vwvY!ZvgDuJ53;AuuvishR}m=hV%_cCjG=QgIEFIjFU+)N&tmMp>x6jG#~&_3EG#w?V+h&lMx~P(A#Clx$xtkb9Evd% z2?yzhqjiyn&TtGCX^7o}*bO(t!r^~G2@EpTC+we~C^!~r@GnrXYRE(m@qY!ANmw5S zi$(-vrqYPM6d0543x)h-5^KQ-V6Z^Lpm(Uh@8c~j99aw>Y5;h^cG_nS!CP6N5g0V+ zydL74y95FjPiJ$8bP@$`X$%GV(W6qySTY$!_SvJ4)J32vL|uL2o;|wW7;m^P#s^`5 zFhJ^~DJ0Afc}oTWKqm~LAL%cr3VB3 zhi$g)U!lPMdz9bK{?_6@;NaZYT>czb;KR?6N1=mrjs*_1`?ZRe03fb~w={DOz4+0K zz))`48igL7-JNeEEvNqaMu1rYUx9FEyn{$zic~wy#zDY|+g=_G!Fh3)d8#WC1^r;{ zrhd1~7=lg^X1pR&$2RlE>4Yi`mna>90I9N>4@PRXFOb@7f{E7jGb2-gMy2{g7)t!>gF8;}DMT#+lP`41Y|^-xw#U8(UmB`J6}YYo#9v+_DmySN zBA+YYXx-u+Lg3{-+eO$#aIMb})e1}%Yjn4%2i7p9Y4!yu^Z9<0%O$7qW0OPW!l5Oa zzlu#Rhi8O?9zIxnlgsj6w#P6s_OJsfYLxdkW?O zLGN;Qd4AeQ%R}V~i&|Ze?SB6#JEBB0Ibz}bgwbg;F`oC;K8MZ&RQT_>E>V|L zvQ|5yNYjWcNhl*pP09>MXnm@2)vK48JuZiRF1baMxFt>Q=+sM&kL=e%i3C|&@3Wdi zlR=h|Hex5A=0D|{Xm#-w`Q z|9pgu@pdPa@X+>V#kTaZbhHE-b>%W!why$bX5b1g5o(H^Uz@|#*O|kk zqZ7D#n{ail^Y1>qY6>n%;Aj@NB|LVehzU3EO~Y@)RV(2yQs;5wQ<#}sRJU%2yu;0?QGtFvns5#Ta=eiL8b-tqCTHii7JHGfp z1RY$IxxywzoKk=5jtBy8*rNOVdIv+)?a(MT8C)u$xRM{ETG?gIr#LRSdkgo z0dn`N?F<9I;8-f?q~SJLNBgpRLM6hq1LSmPF?W^D9X6Onk<5I)u?aXdzvi;?dXB6uUc3D`=Lg!yQ6dVes-(xs_Us(b|!x zOY$in8<&(`y}J2pu6aWFfxDN4C97NAAMy9=58GuwM#XI#8|HpVQntNw(Q%-0q|qf6 zC)zskK(=VEPF9*o3aVEqH(Hs#Q~sv8iwCT|%=R>SgHI>7rjqTZ%yPxxO%AK)Tn&)s zr}m7=I!ZXMbKey`R>q@oHu06WdfWZuM+B#%=VLwwZBL-@8OwtjRUy-jiw2st3ZZS+K$_oZYT#2&`$<)-}1Ub6*6=phhz_3QH?+< z+0@80Guri=Os-wZ{|3=vJ?Ko%Yb>co^7wwy7}Z_5dgW3?N&Y}kS32vSVl4N%Fqm41 zhSgQ!N|q2fa+4#1CJ9Xa?Gkm_FX{?i14Lh77~2u?pop{AX^U za(B8^$dR%hZS0kbk2CN3xljnDWhaQONRq&RvT;i8aV%iM7- z^{jKV4I5$UA1_eLfHMv_ygqN{{qWZ&9qGokbAvR)I?43<2=SwfA8xoEx6mfGGfd9- z{+Z|Rdpxy_%Fz;f@2Vo)4M8u`yL+y`V zG%9R!j{N=OkvR|Zi)?{;u6Id+xOc?o?#5@NB#+E=>{|Z~*FWm^UJ_qkn6UK0l;RaN3Od*`w4tQWqt2 zMfQo>8r+)E9lcWa+h=TR8C{|+wC2W-USN&bEq-TPq(AvFej+bZ9>|Bk*E} zUYe?F2z1@wjMRJc(>-68*8YASEl`pB>M$Q5YzoEQUp(OPw0RLjC)nMe-$$EgLyy~L z%Jl$~cK8>3i+^YvKeD487INLC#T>x$^47 zJNwGE%LXc0fuSF<^BB%SB&+Gj zm|Z=Yc4^8P+pKw8WgdJV-qlI6=E?{uN`|U5irK23ue`M~BRRLBtP`jB=1J1hMo!ZV zY`Uk*nD(gG0m&Prf!6BWBGf6X(gFNAZ)-lcaW=fom9L@<{J+ZMs;Rj7M5$}f%JYxN60ou!GyBzm;S*uOQ))I(R+m3i8Z$Z&rCF1t?q(OI z_{#1Be=Ph?UF#UB3OX4u?S!B1G*;~3{Av$@-V8n)?FuHB%nr70kTl%45vm9rt*=k6 znxzJvf!o$trHTPH4R$9o(J=KOC8wF%5M`h<4DH%6d*ex|;B2zuJD*l*ZX0)HsEr4{ zDq201ZGg)#dL(lyLz_gT$CX6&%_;4=n8GlX0v4jj zQ_A^|y1zDTygSzC9HWv^9hqESv^*Cc86aA{Ly~(@w0?VFOkUH~XXgw%C5CgFUHYZJ zM8<_xT%8ER075SoO=sTw%p5YLhdAeB0=;JDd@IOjC{)l9#<8ALHEGo htw)>h{M(H+HStvG7Gx_nee(|#yp_FWsrk{k{{pP>lwJS; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/boat/palm.png b/src/main/resources/assets/emeraldcraft/textures/entity/boat/palm.png new file mode 100644 index 0000000000000000000000000000000000000000..c4c86925d4dde7f11be2d7dd18e01bc51dc9146d GIT binary patch literal 4648 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 yif1%Rux`SGh-atH@(P4DgZi2gr(n9`L1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/boat/peach.png b/src/main/resources/assets/emeraldcraft/textures/entity/boat/peach.png new file mode 100644 index 0000000000000000000000000000000000000000..b410a21d7af4bc9d4398ae5c73376df312dbf1be GIT binary patch literal 5022 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 b?9(eI^(L4W$RGS~1~Aey*Dch(aOr;lTOl}Q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/fishes/herring.png b/src/main/resources/assets/emeraldcraft/textures/entity/fishes/herring.png new file mode 100644 index 0000000000000000000000000000000000000000..04021dfc14b41d18a9e183b3aa6b16bb30c0e123 GIT binary patch literal 2118 zcmb_ddu$X%7~ca^po9pqDnZ0$(FDc4ecs*frU$mSmAlBbrM>hK1fAQRyIXs=yXzTfxzzM1K%uU)&Kd`UTmVGAN*xdF8}dKbM6sB#_R zEzx>BWLOaQdHtlq@GKq>y^Nn0S^iO+rI`Rl2PlRkX-1;`5+~w?hd|yeH6b;~j~9HQ zzaWuv98;pGY&Pr7a$dtqQj92y6wOjBOCkhmcjyktk-EL2XhDXyVrizM89MG-1aYI? z2@;6ubO;%WEfvQr%neA3O?_5^1wm#++p!K4QVq~H+ARgvY(X?vxY3wW$b!Hz zte9b>i;1c)QpQ6ed}Xtyt47v-_%b+@fdhjCOCzOekz~XeLrXj>`IuF-Akp+RG-{|? zqT^a9BeAT+i&sEV!KlCiHwCMTlrXFeK;dc`kc5<}CkebHq7*XHhJ_p>cHHITkx;1K zG7?%EP1p@v+y=*A$ZUGe6t7tu76O07kX(8&ligX6n7H@3B}DmREff{HiH7U z7QwXHYziWyH>itgm~AASEU;iz5~+2Qs-vz)-3D83Ok4#V8{mXE=}SP~O&v`Fs0t** z`WPkwIi5}Ui-BKDoRJux#L>kn{qMvJk}4^nCm}jbDdP4+xwR_1UJkC>aQ{~*lzW6u z*A{hk+2!XhJ8n@D^F!zice|y_1O1e)AE+ahEOfbWWA}Gqm`9GtRk3i-crWwB@%oDA zzg%^yy5|mg)_C99;U7;`z2%tPw!R$?O_e44f4MY!^NoL9y|RD#omFpK zI56?rr9s6W{roYnpLvmWf@qf)X%8nJdac72hU{o?S*vQ1@9 zm(}~o*rg+#Az>?qJ?P!j7mGbP(7S%1_lLiPbNnu0;2H0_!-0EO9((H0&Ux6+XFS;V zlNWcMtz3Qjlc`PbgRka(w6Op1hn3rn6+eB`I@zgW#Ucdry@8 zd3xc%@ba30VbAg3!>QMu+TCZ~ta_ng@iyQ7nx(#tJI>EJG%!>#)^y*l2XJlK$kIKR zs=Y0SaPT`*mY*BEuxQagdykYS#Jb*ZEv0$%?w1c>zfMjqe`n&v{CC;W4JSWnYW=&p iVrtHiXUH?v)m^vmeD}E?@X~tsrjOLr%7fKUZ~qsQ-o#q~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/fishes/purple_spotted_bigeye.png b/src/main/resources/assets/emeraldcraft/textures/entity/fishes/purple_spotted_bigeye.png new file mode 100644 index 0000000000000000000000000000000000000000..34956b9c99b62053351612935daf6a5248cee985 GIT binary patch literal 2168 zcmbVOdu$VR9KRJ9V`K;nl^KKQ;bVkd@6qNDK&s*B^k4m-0w7h(Z*{w_v_M{>d6K9FXTfIRN$@j_`wqf*YLbtaF0QArh~^2rE3TD+lUWGa7<& zqhftP5BT0>I5}!&c{wPU<52~mA*i%0uCUx}L5G7vSd^T|^}YKMSmd3^G@B3iDQ=-r ztZY$*x|ZsCu4Ohy^GMkQxHQfHf~cUga6B53G$!sulDrHU8=o-*PD1qAPQ+yxgaf`B z*e$C9Y%^0RM_5VNPMZk|r%7uGOyYzc!|fPhL2-h?DaJy>=^p~DseFj>dnToAfj1}8 zsOt)YVX;`u9J82ZHH;B7O=CETkt7NbsFsj)HjYZ#*bIY5&^T38bWxUIgOLr&O}Y~S zN>eUGl`O5KrNaaQhQ(P0Bh0wrQWD5>S)9_OMv}&P4ih3mRFHHHV2LbNX_R$YYm^^B zot?hV00^zmm$mUwEzxM!gr-+C12@tEc_><|PbdQB7c{v^<%Ei6AaktYjl#H9fz@TT zUX~-7MAc*@!)`ZRJWZ5%Ii`)f2QGM6U2q~K4kC@yC_&c~IAd`zxMMsH?sy97lX)?e z_!pD}P>^2yJ}4*{p4HhWf_aV!$!e4Z?ut=1EMSThM&N7^8MhpfRbUvXv)udL>vq?u za!8DT3C%yb9QIbYDT1ablr$4bxjrA`l{B4|IKk_2A|NzoQREqdrwD=KaMTtg?Pw@u zrBIrraFn$?Ig;vRuT=8RvXF&9e^pw+3bYf zW^vf)%=)RS2pW)${BIu6DF1{a!{P!SX&}Q|x{b=&aC#IGCm3!%t;|x)=ozpGPK{DT z*yAlGE19Vj4F!p`-8$jDtO7V$ybQ}3P3c59qZ$PsNq-g}l98v2Xo@!0C;-yO)M*N) z$ss+)s)8#FviF28z#b)CW1Al@{OL;R5yBtrn*T059a655mBIqp-7&;)C7IJyLa+yO zm7Ke0&&gc@jRSoM( z{A1p^RMYd^$XmIc3)<(-mp- z7Va(Cvi;=Un~M^C^X~Rv+*j0=x3hZdp!s#12Go4nuygvI@+HMpFRd7wIO@55byA0a z!>Yfg=0Kgjc_*4rG22b!oQHqtT@mZ$2)7F9v;=i;gU;jg092ee%Y6XIrOS zs<7P3UnH&mth?=5$C5wKv~Be8RcCros0EX^4Y0Rk11BCn34 z^y1?)4zIsT_Q749opa{8Mql{xyO`;)=Cqt!)jBN0tq| p`^PiU>gdUHSGL}`zP5IF+3uX(FBhIr-ZK6hcq^(sTgqoG_#4)H=-L1P literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/entity/manta/manta.png b/src/main/resources/assets/emeraldcraft/textures/entity/manta/manta.png new file mode 100644 index 0000000000000000000000000000000000000000..6f1fde0d5a62efaac92eb67db2e13bb54d4400a8 GIT binary patch literal 2724 zcmb_e3s4m29bX=S6A(=_1g+TRG!;DdcK4p_a>w&{sizb#0m&r8-tHb;y}Lbc54a=R zBA`MNf@4g4Adjk`1|=ydWF!cI2uP+;Q{VxaY_EE!Vl%JagP8763dKIc_K5;2~cC za67KoBwLf!>u{1W3JHqQ(n6cj%%K555oR+JM1 z6rHY*%eK%Pv)60L?9C)b@xwwvg$?Hf7-=g3+KdJhi`$g^Nx3*Tc1**3a1vtOtmH>H z6oSd>1Tc!R(4bT(gGf{&0_B(xl_8i&5(J76R1PC@7!^YZiX$>yjDgb^pVMZcba;Sz;k$NrO=g!(c=Ni$oBIfLOc9O4uM1yJALyie^cR-fYz~ zCeR^~&@vfTC7-i&$_1l&R;-DgrimjAwh?9+6(SCoCV><=i!*0f43o+!5~dBbkv3Ub z4vWrW&FPGlVbhtP5Iwv6i~^2YwR%>^oVFN^vnp6?bSCGlllX;M~<4i8LBE zo6`8;EQxp&V_++@}I#i0tFwx9@6+>n?5@2RO z#qFo$T1tk9Nhp|>6A(s9B#@TS=^%_CB#0Cv*rwL=Xo$CHY=Uxg#MSjn1Zp4&YDG7 z=!i6qt>i|J@oHsknz8jj&& zDUQx&>Hlu{G^J!ZVM?R9ZVK~%xhp>}3+IZ#90m9Pas_s@(5c*l|2^#{*Pd#(To5Ox zxE}5p&K@4z$L#S#n>dy%+~G3(dpQpPTn@*pA~d!`LkF5o{m8=hFw6&fWBy6mgTwx7 zLl)opNV?!+<$?pd5U=l@&gulUlC|!T+tOd{fJ$PHc#BSi`9p<=Rf0`n+lkyZs*Ay3cFa_jZE2Z_&9F{+JM5EX8Z)1LldQUAIEd z7li=BUJc34!(LRKp}M$8wEIa%Dg6oXX<=!HV9WB|^KNv95Biq;uqePU?aNL@vvWRc zYu;8+mQ*}$zp>5LpSU;vVq|1;TS@l-An>~VV#$ahzdWhftSFyIZ}9kx7k!gaH-6~r zo+k*gUki$e<8_Q|X-EcuVIR-nvWZsv-GYg;J6}H49Q#+NPT`f`dEWlf|L+Pxq22^P zE`1lM?2hRlScD{7F`nzSc6EAZ7dgEvHQ3>yn14H_6 z{NMKI*tm`L?%R7=a%Hb293PMVDkW}JPn#&Ptu`}y?~3p*O{3<|J?{{848=b#2Yg%6rPlrHe`5a+gn|+Y9&k{n@*4!-a^_qjeWH<<>l2 z7XQ_V=&^?v?e2T&QD|3yV$^k6@6hnWHv;k!)868>c&+wGSk-ZQ`#iw==TYjzmNyFt!N3=(BCC*=G%7?a=UK_TBwx%veI}X;K=(@1u;t%OAsjac+ zhVQ=LH{gd$yH?9y3vOEY(q3`j{pyt+pYNty-#lOC!Qf0sWQ((n5r_1ZV7N?F?FDcn` zT99+ELiOmw_$yV;x2wXlmGD^C(YC6b%ohT1;UaqL%OxI*mlxbQKDI;?bMlM(MQwFI z=AWuPcGdcuVTidR~!?(2FyQ_s3o4ZeVU>(ukT^Zwx+ zeYVrOtQJWVP!*DT@GYRn4^hK8gWmhAo`Ty)oX6e&wy&EfsyY(n_>YW_UazW&OwIil DXnE{3 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/shield/bee.png b/src/main/resources/assets/emeraldcraft/textures/entity/shield/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/emeraldcraft/textures/entity/shield/bottle.png b/src/main/resources/assets/emeraldcraft/textures/entity/shield/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/emeraldcraft/textures/entity/shield/snow.png b/src/main/resources/assets/emeraldcraft/textures/entity/shield/snow.png new file mode 100644 index 0000000000000000000000000000000000000000..ebb30bc212d46ff9b803bd1d0f4fe838035b7669 GIT binary patch literal 2213 zcmb_eZEO@p7{1bQXl<*Zd?>YMvn2RI_jdN#HvdbhjX z-S)0c2$lM+QA`w#Rt%9~1T`9rF@PUfkTlU0sXt68hL$KlR2tGK7@;_OyX{cXYRIseT<#H8;>q3qAUgcc3xbgpfwe3fIyVa=MWVu|$$DAwg zm6gS%E|>d=8f~(hA`eNjp7cOPk0DPwX<)R=Rk1p4K)Ds!L<}{nT7Voq`~^vzMNnI5k-*(EX}eMMo?C#X2Ue4S<5FQgpehhs$r|TMmP~+ zOmDXXBxX8MLej{E)vT;cSTH&b4Vv))r=$!}k#jhs-ArVXD>97|D2X)N!dNDUHCl9A zw_5ZWLg$9BOMs<~L~=Q%<&sS1Qdo9v2QDKk$h2rH+G!xV5m|b>DWlpBOmn$YjUfe1 z1Z~}n>Uv^wp&BMB6TzUfFamMkMpaYvly(1pQ&N#vB2f_g$X zabnDlo7x`^1{+L0t|st+)ws5X2-gOEjOg=GtcS_ajYOodX4z1aQ8*MJu|6JERU}dH zu{>ZA1sMn^pztgu!kA3OImXW`3d8eaZhlCY+Z`87&R6h!Me%zDY;!6W7X``-d4__V z$WUGx2!7t{7kHmCnSY(B;#~+6bB^QeO~*b`ooeBQ?ac0;^{6e|N~lD}F%p!Woe&^p z#{vj5nCMogQDAlzOw3QUARP22zL4LY)<4FukV0`j76VZ90v;P>Cibkv2@)?(T6K=>v*G0ys5K*exYFd@>zSP&|5?wp zTkn6ZhjxzD39HdJx-c^~hnd!pky3@?PQ1C74BL@y&C!SN$YVL?7p<%@W9gIiu3zM|N3e8Gh@ZrpF`xqmzUJ7&pS0weV}SH z5t(0i+ulv%tGZ-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 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 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/wraith/wraith.png b/src/main/resources/assets/emeraldcraft/textures/entity/wraith/wraith.png new file mode 100644 index 0000000000000000000000000000000000000000..6351e43b27e6b665d5e827dccfad62d283e04e4d GIT binary patch literal 3876 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 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..7f0bbef05c3f8833beb8b75337cd39c09089dfae GIT binary patch literal 10727 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 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..67fa8acb5a3f258cddc35feb2ce59ba7dc1cea21 GIT binary patch literal 10616 zcmb_?2UJtr*6t3WNf8tfL?xjdX+jce=%ETCML-d$A%r3&G=Wfq)T1CE3L;9CqEZB; zS3xO)ARt8$0@90w-pe06<(>QfbML$Fj>{N~?7h}(-#6!6bC2x&s;_&Qk&crN002fU zO*I1m0Ff_204+87!^}O`mi%$TRnx=+0O(nc|3SdhXB+@|-@)jn=S`ifvKXARDB1>R zjTQBAb|p&#fV`5AD;nd7^@Lhu?HpVbcu3XtJWvN41s-Eb9k`CGD%RdX)7Kqq=&Ngl z@pZ(=*zhPRLgjsA$p)OUo@l6#vy+R5td9cEPrI_@>*Hk@5A>&qr=tRo^07ncO&xux zD$X4Xl@yf{!5}2Wpwcp;2r0OXn8YQh7#txDgG<8@;v#T_EL=)fTn7649}n4^yN#`^ zfttqezQ}h9JocWRuCg$gx3{;bx4054?*f+DF92gZB>$ zYFH19yMwEz1I`6{Y!PjZyW^?ALyq(}2+pp5nsxE`ohCA2Fdwul3?T|XhV)a=2J@$! z>m7HepU!PCFsu{S8SCQdL6$}QDeG#F^Tc`BFm`aU!FhWK{zV6?hW5lN@QA_5bi*Y@#Kepc)=G*@G!Wn0@YGil|sl!Nr{MwB7TOeqa&;3;^B#Q!C%`u1j1Sxj~ z=-ZI>kv3Qi5`&Ntk;1}lL?o>xFd}FK+*(8iX(NurNJwF@Qqq6u>$y9SyAbX4AKM{! z%m1O`4=c)KL>}Zcd;H!@Drmdkubdndk7541Vamgf8;7j)TTlK)+uBANjf7)lM5NIe zaS>~{1Xcuzm6j4gV|0D)L`FgkYb^tpmWGRC{-XU8!*3M8{xw%W z8&Ou%;g~!8@0bm-ZhxYO{_H(jH0JnBQQ*NGHxt%|=l5lYzp15vuNHnY>urxE8~qm@ z_M4ao&eqc#?T%HpBiG%()5NfU7QYAD>t9DtP7*>KDJ~;|MkA#}5agta$Vg$NL?qFY z5*WBN($-c|@(=WX7rmsEEL`S~rvDG4|D9ZnJ=(<%OCD1&p8p)rzt`FSI~#v{i2Yab z{H)R6N)7gZSK-gSzYH^SI)5&aC*<+vpQD+4^XG8Kx{#@ICy#D8PoX>jaC2y>DI57b z`|;c~*H-IJ%TZ~Ux2|_;*-TG&TP~927dIYjF4ibiX-= zt>;N=&lN2Pj%XqRUYq;a6Gh2f%vDk0G1rsjx~U3z-*vbTV;|+~RakB1 zby0Q)P_*7Ty*kX@@)v}p@dz?fl$&&qeYK8FMQ&%#RF z3yoRYi2#~Xl<0BdcvFjWVS7~}@qtQBsdcuVS)KomSF3VskNn~Ggb&G&c%MJThX)97 zK3bu1TWMlgT+J~3A}1a-#lH|)@B=iqIu&Fx%f^faXic=a z0+<^fPZ~vmqMQ$f8#0;1sMFFwP{&Wqi+gIEUxH>Qh*w!Q2Z(Eysq%D1{nVU5alfa_ z0h|2B7KyX-j>h;E(pk^<3yUW-(?QS$ox({-P)l_LU}eV|ctWpsW<#}Dl*8v21YIaK zAy2^=0N6*j`M>VO)K82wbvH?K$;ig_(;nND-$=1&!xHqqtQMQT(LVBxJ$1YqrAjEY z84xwwmUH`Jo~T2m0!H;edsmuR3#4va)O%pp>2??JhUqTFafHx3mPArz=zYi`oKP>- z`M9Tu9eOOz)t+VPxzv-TJw6@*v9MiVFesrOV3PuA_Q~%rH~S2Mx90;6aN zvX3EFEMqr|?2Vu%jHN>4Mc2GH8dO}(%Vq}Iwo^2Nlu$Oq>Q%4=@WT4GaUeklD4xEw zCr*SV$Q?v@%z>B<5G|u%WYFP$qhLvBEPG3lG%(Zo{I#uZ|BvwIGDR|GWT#n;kDG{b zy`VD26cPohQQKCHw|Q|6;E(_aU zrR`tOLl>HFoh95MXb|#P9Q!EWJQDV$D(+XxWp^FC;+L~=GFFb=7ZARi0+`VBHv^AY z=hJ3l=zIa23pZb11m4^%%0rE7e=1R%lQ9Y`7R`&Mv2v?+#M28Yneg{_0*@$y4F_WA z$am8H*(Y4}2M%)|$MJ&NWQ(P!t?mtv{P4QjHLZzq|B|P}GL}|wa7~hGb~FBtt+PC! z-JPINE|j}(Gh%WMjJnZ_&sx{r@Z{ex#jg(+I4Ut8*W{B52EF!1X|BnjNLYV@Ui5ORnnBX^+J9V~DOq`mSuIE` zH{OYW(|luC-b2x%NzKg#W2%IM85H8 z$hp*=GqyR>D-n>9C9(34h%{2<`A)NguIZ0pg84ExC30r6^tJQaCe6uZ!t3NCuiaq9 zlB^z*{4R;+VT+_G&6WDK9G^742lOb{5vlB>7NX1!0Qji-61|T2i4W$E7BANm>v73M zW?MqC_wa+RgC9%DL~7ujklw`6Mt;{(FF0HvU>890TQ1EL_nSUg@7$a^>h!LE{Vb@n zk0?LYJ{JIR4mj_v2W_;qGjTzWA z-<(c)%?$1w>TK7_bk)ZRqjx)A)dfqowk1VH( zWZ6|(S=G5_Ai518NNkRt;unb^LoP}rl9FTf=3D^5@%&w;B1s~$PeJ1aT z60`e!xrQvdx!KIk^t!^fQ6}=MpT7)W?e2AKLt7jc%QJmA@rg~LR)hL!?aT%L;h?K4 zAq#iPzEXbE*or$`lsl=k+stszPS<*EiDl4lT4sM1WBL9QY@hj4KXqBB%lD4trOVYb zi2BO=#s@2;@g<^<>Z_pDuGaycrZ3kG#-LN;4#@?CC&L0oA^ zQyu9LU@*nwP#lj&b$;cIyh0k@|8zCuuIWcyHl)0Lsvc#9dYmLMY=GbOtk$>LQF!m3 zqVKtoR4NAEz3cV780Q2+kD5D4QJ8@{yv+tEXK_R1Fub~&NPf?@!{U){M`xYtYCh;G z?F9|iIEH^s5?M4q;B2h9@K|p2SygP3OZdg>K2u_LAE&R{-4q*L$moFy$L1C#KF)EQ zYmw}CLMVhUj41T>&~HI3@ZgJL2g-8zrqRazUT;Wy-FjWy2J~Y|eV^o&ZgY$CXZ&-vQ8Sxe-cBy;_um_Nx9@XWJ4M zR5kH}57ESCzz>XY@%(O!jd|$##0^GGc~I>90SeYdE_C4~HvOJ~;Y(g6zwB z)%h_Fzyg^}x1PVFCstB#=g-};9Is8y!%CjyDx#{K1V?S6WoiYPKCW)df0mwh=`&M# z7CT}UNg_0F(UHE3pSqCn>= zNgAhA)0gJ7w4H3MDHxm-y*nj&i!*Nj7{c+-Kk?cgmLo{&8>94&77^j2p^gcGZ9VeXYImnQ!%PrLDe$ zOdfOgGMycw_|^Uyli{jQT#eqqWXkxiDb0GKx$Z+)yJsgw3`gZqlH~^^K8r)n7 zUPwK#bPAl?BQRBL#nHGO^lZKHaArD}!?|cS{H`?UP-0rTTJw88Zl7`)CcVaWYRT)( z$dSPq|3T#BjvFxoal{M{Gzl;E{;r9qs7c)tJkt&a@_#upQjkht)VYCqs@5q+zH*MfpsfKe5wN?D%7e^-c zhZx5&rLYks!2XB^ z+DpG;27F$pgE?+D>?)Wy;5O2>=TH#VurW2EwzGXEsj-_;3)Fv)`M7N>D9We9`Je!gtR=+CPEQ=cXwDlr%d4 z*bZ*z#}C%{**&3W-jpZj3DH4Su`y*wNUru7gB{XV8`n{67uw!al4y_S#0k;br?Qmp zxjH{GoxxFq0%kqmFVkL}(z*?YSf)MUYU6!;`pNg!L=}~cSw@1Ch17<#&DrIr7VTC7ZV%%cBxVn`_!J0;TJy{Y z2w)^VFC|{ScLt*JRx^BWthUPx{d)Me{N~p^-zF=Dxqy@|=t)-4lk!UTv9*Q(PDZAA zYgYkA6z#jGMNho_H1NBWUKSd@#NBV1xbF>V5|AFr z%L+zKaiE6GuRBpNOq`+v2fw{O?|2$k)tX&H=ms-8TpX$hxu)5p{jS%!21krMK=f)E-u0>j9pkFmqIA71@MY|5leUTEB&%=aA4 z^U54%h;PB{4IQ~ny4<|oD>qZmZI}+6ez%%P6D)=o+d@8Wah~1Nz?S#e`C8-qR*~lv z_#f5Qi%vYdIFw)Z$U?w>vu?iXfM=6F$_rz(t@d?duexaes2E7Hf7IL2(c`dy80?$>0IMupJS#=;v`^5Jbbv*N!zb0#-PyqiUgY6Sj zF{F!Z7BTBOE)eQDj*%cLS$vlA=N(~335WbuZII%%?SdVLM|#RDIi^(aA|L9u|KyL^ zy#I~WFsa;G(cmhVT`jOyLB#dmG&_99&_0_>pJey>#FxzwdNI6JJIh^>`oNecmmLCi z1$D(pY>MsXoeWWJrjdYh@O!9JlycYN3DHF26CDBUCre;jv*Amt77l&8Hnb; z#PzKQDDSDRvvxsH5k#RN7W00y%JZOqfn{jm#@$@|Qm#`^+Itn!1g}!}P^-d}n6FG_ zet5wDEPau}@3!l!#Wt^2rO{cdPeB}v!7dscDw$5LB?suK7vqecx+bGH4z=7ThB6wg zozH(V1Cj~@Q+%^sD17?Ddm*tFU_ITtMNh#dU>Qf=TRMQC-fM%L)rwe+Zd0Xvpz3rV zF(+y*>@(A|XY)((U7V-sv6jmRu-nD0-N9~;Ap!Lt5nq3dnh4bi9p%Zq5eWLAhBsaP z(m6jvp&1}J_jIr<|H7Tb7I)!|ZU)+U=ZuE?PeB-#G`U-s^fI8@t+2-?dRFw@g{{Tv zN?2cou|g1Yo(Tc_(1PQjP8O9LrEZb3gI8jQrCn4GJq){Cm@m)7i;o(2(D|qev$7(W z!q7QPv%xt1Xn7x_{RZXxwft8rQ(p4K>inwRM~pvI_TJrMYM2*}nK8c>D7+Ud%WG|U zl0JcD>2yrK#DTQb{p{(Qg(4P!c{ARjp~@uTml&0~bJ<+Nj5bldtt+3khQR%Yx449M zRcac#_ZSL#zTpVKq5S?KZ@vbhbHC1tc*QuSD%ra@l#v{+rtczr@_&givtKgf_lj|B6b3cU<4Hb~{BBzJK}F zujOk6)lx$H%j=ABmc=~F)MG=+<1L3xco9If#e>8>v&T$p^y;e@=jDfno_RJf9y4AwlyuRMY_$JIP~yMqc?^hlRK zt)CJ{iLuW*;~DpbK?$*fo_HM%A%T7l za4fY|M!0bi0o&G?5H?M_QI8?BdWH%Vx3myPkfjyq0@nsyySHQ(HMTXQo-c#@fDE?i zj_3=Gn0a8K!o&1d9>YF93z|(E=Lm{iDwPo0)3OW9nPq%xF}}BThl2qnOmnoY+g)NQ zJIu^WU2C*$(On`iQsMqaPojB)G|WfhAgqi;cPFaW{8IUOrZ7UR>T|mUCpGE7z&tn` zA(bt_keZy#dG^c?uT^RuPHANA%o=#Z&}z zc&5`y&yi3QIY_33xV zi~7N_rnRIG#bYC-1=LsipTzD&$WwoI{=w9|hu?L|j27COsXEuI8NVnuyuy^lso%eZ zlH!E7KxS398cXIPsXZ7*u_XR>@nJ0pv2%D;py6F4#B3#E{Z&F2MWE4cXl4?~P`Tkf;{~&>SmX}?h}IJx8RJ!U78yajX##BmMiP^gHSF8Ix=hBb<@_0uAY}VnzsPeJ|~zx7WCAoNHgs zDtq<6Mlc(iH|~V}GFe2*dpIo4-tg-A?m=0f^4mF(a?_yCM2NUh1s^T#`j5k#$vf-v zR?(D~+IorKe0UX#*AW_U@41@+Fgk%BCl?g}s9-seJ}Vxlw-17N*y=~|%_jvF=|Ifi zF4f*GyTm~p5G$TOgeHnzI+>jjQ6?{Vsr~J;|8u^$h!qrY8NqI~^?Hg^Y3cr2!d)F2 z3XiY>^WfF0tYwF*4cOo+vlMse=d*OF`KJW9>;-GM*a?$JR=qU>R4Q2P)@j&Uj8;Ja?hzX0F&mJF+$YwplnUA7>0a zac5!3>QV`OKRY;jL;|&2LQ^~}!O1)IsK0}JcGqy?qao$Z_}3?x%M%dx(H21Eh0d+M zNwfTi+>aFztk<|CpL@m0ukD2Hhp#LPMZq4A-lpj2L#8OtVFBjK)#!1rtaa4)Q*V{^ zAZH8-BAC3A#L;IR*~>?duUPI!hw?%8K0@^_MO3(`Xr-te{v=@w7p*6Zr?5`mNIsWB zknblN8hN(!0?lr~$~WY?u^z?Kgv;Vpdp*z1d1|#o0#v0l=g)FHP%E!9TJKnZdYVKyJqMqPnY+$`e$_Ub#XdE0zw@y1$nQkqRMMFoUzaX3z;T#ls>Db=2vHkI z(REyU_`M}ygfW+-{T&nlBdEXB8q=oBbnG}ZbMyp%^wjbj4s)?hmMrA&oQaznqE_wZ z)mUfMaZ`tm9I#(LA^P;jxi7)6DcnJm*;hh>K&`V@%8*PIkqU5%&wEOF|F)Sk?fO$f ziQw z=_)R=pq}$!O6BOSzkutNr8z!h&mB8z6B8Tf{ilO`t!qyk^CT|eADNYUysf8)mWO#5 zss=|4zpqrj#@LIyF66A4OnZY07Tt(sMP6TDm%*pj?!05d)9p;Gqw{Bfm2cGS=v{D8 z%~@LF@P1rv6%9YngTIAvin;iMs;C@m9mNZDZrAHb$W`syThNV3Juy^YYzvI; zfvct)!WYWFf4C>XA=jLh)2kpIV7U{+djD=zP85)V;4@9I>ltl9^7-%#3dKz&v8p|~ zEKPck^`*W*KIg`8FOsxXt$aZJFpy3()v`t3rtek4tMql0#LLBl;h3$A!c*57r3CeE z8XUfx>I$$L7LM&{W2d_v{Q0nA+Yg#qoHHy?zv(kchx!i5d1_F6BAwA~mn%cwH%sqh zPK*O55%8_jpO+fz8wV;{Zg}Ou2S9GtNYL=kzZ%L=$E$9 z*=l(YI&^fX-pUfSE|7!k=A5Hy3?mKDYLdTvB}U$x01Z%mQB0gJ$aHKxSTJ+>r7L%F zt~zv(vUL)6iek(()Bj4z(N%o*$~drko^L{q)%&y58Scr>;LMB@FaLkvxBcV0u)ll% h_fKBb{nr%_Ay(~Wg~<&@hR45+)Kb?~D^Rhz`#%lv!Ug~U 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 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 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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 z zmO6ALub@k9PE}4Vd^xoW@mMljXol6Qz=5;c^+OI%ZSzmez>L~R14K&yA~9xQiWpEM zj10?yh^@z@9f4dYv}&D+g7{;AN!de{Jqt(eLR+T$6#7VaIw+v_CZj&)*txe3fUFnY zt}<`*@XgWFTm5BAHg4@WIDD$y**>Re6RGPxzvui=gB94mywbC5UiH-Qox|X#{u|@3 zwVJQpy7R`;d*s_^{Tn71X2*}L03GjujUAcBrCUAo3ZpG8gHub#Cu1k-O+?Eg*3eqC zqi-bt{`8>>fnO&kRbCz#c!|XCVB_PKOMMn{G$Dw z(7!l;AD3M+Ec73WWlc5dCB4CC)l0a+w@NR~HTah3rPT&sR!^0_uR4rlvCeQUH~ePpdBnn z0&mw~?#Z2f!9y3uzH`=(FHd|>HRo8psc)ifbzkG6+wC(>*R0I$d~2j+s%Px({RiY^ z-tGRgeyS_BPhSM~=42Yvs}dVKJ3Ei8xW2Znt?jdsk&(;0jvxGZTW`-fx1sg))rssY zLjQv`zkGfa<0_Kzj-tKqv0f_2h2YmWZt!>hI+Dm*kFEZZ4M|s zGdeo@O~I-h@a{l7-gPP-uX2l*=FH2Oj{k4|I}BV}xn^vaqpI-v{o1dVd-E38C!2h){|=aF9>M?s literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/agate_apple.png b/src/main/resources/assets/emeraldcraft/textures/item/agate_apple.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2195affd407041522aa774d8e4e153a502af82 GIT binary patch literal 1743 zcmbVNe@q)y96uavz_PKZld+L;I}$R`_I{MM^rQ}G8FX8_rqlrwh3nlrxX|9+?vAxU z+zgQ@X6nfF4{?jS43(%0Ls*=Ik-#JxH#9~gvZ*m~aj3yD47#AvccpEZ!C$-N?%uuk zd7tn1`+48*_qx2EigoFm(-8z&=c;u2;Cq99r>=(2ocTW(_)3#2YgGhUdzXGEAw9=8 zAxKKL;IGkY+ITso zw-<1=iUK({fs> zN%|Y=#PTf$ptNpx!p4feghB}us#bmwh7l8FMYQT~l>zPps??&ep!^_oGgpsBrX31k zG)eJGQZRl{-nh%C!=WEc5xTuv5IHHV<}cd=oQwwS7)3z2i9!Qq@lzB{5VYBLFHr;s zOHjAO34H5{PzzmXx&;cehGR75U%?zp^O6!`V9Y{@X#}_|HezT(N!lR=B?TIW-kFxq zyBrR$BJn~HE~vhWGSpS>u#h&3#XuR!sJm`A?Gjau5n14J+A*k)Q4l!V79jZ|TYxv1 z&7>7R3OPf7q|651N(6X<;Q?b|;`^Nv+oESdd_VU;_wQ8%ScOdRwt4j0)YFHq6jXSy zt+DE<0taHFpnyg*hGtm366_eOrvTuv*tBrl3M|ovn*b#JhrC#VsS>Y+83mL!Lbd)& z>fz9TTrbdZ$!+<54v?4$Qc-`tpU&v;Joy%RTQ$j?3Iq^+%6^5zlijk(2D$X9DJ_UCtg zP~1Re47}Zs^?Yr-?s1+j HYv}kBT76XE literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/aluminum_concentrate.png b/src/main/resources/assets/emeraldcraft/textures/item/aluminum_concentrate.png new file mode 100644 index 0000000000000000000000000000000000000000..076340bdacc0481f14dcc5016951d0f51d5bed19 GIT binary patch literal 1932 zcmbVN4Qvx-7(N0T#sZEo6qW$z&Fsfo5ea5){zXIL!eAoAA537x5Cw^1Oh^>P43aJQUDq~42NIfG@4Ne+ z_kExDdEf87oq?9dg$qg+U>LU0*W?YNdy#p~zZd?VFcJVM}-=q6h2e%h~k zU`%T2*5LZ?mXOfhA#fs5vj(qD@yI~}8URlv;F?R4pLxjEbinijDzM_+iIMp87DvkO@Q@Xh-Rsojmmp82nf;P^a2CA36@53({_?&LX3^KaXjOwqFp>qPec8R zC`HmUp&UuOLJW-%JZrxRin>Mw2KZmFDDV+QO8}I!lmJmksdALS^Gfm_C9Y^FFk)w& z`QGR81T-Zg#nFZyY^=k5^&SVqIUFQwVKQ|6e%>eR29O2l^STM7k42J1USz_Ym0<-k z3^>%EE}Me{w3Q|~yA42>J#1&iNY37?2%TmZNqS9E=AzRPj`UB2om2+>LIG_!czjorw^6HgmuNAL9^-SHN zgJTUR_kZw73)9~_QWERiT77iO*EFy)HAjbD`1bgTjgzY?CeQr1G%)`0#M>n+ju-5F zzIQym1%K?}?c*zs4=Cv;ze!&usXG48f)A_OKXShQTl>nvg5~$^arZsddueiD$<(n` zlWN6q$EabMa2{!&3jMmE?Tuqw9q&3zE}nYg^tELF+D|V{>>EA**~UdbHO}8$*1T8g zf9Sc$>NT4JM~maXgdL?*XXT&OKf2DGymj9Wl+6N7|d$2Pi4faZcOf>DpcVtCmAPp^mXVWRw6tjLJXIDgX=QBm%If&KkCz>6H zcr@IF2Q&lX4IZA97%z)A3Lb{11=hPAXKAL9q8llOBWXsYd65(F{2-7wLyn8x!PdMl zwDJ>4%hE-P%49O04Cm2|1jPt~K+!D4vLr%~=74H}EUB7x1q(rFN`|6ail*X@MG({a zEI)ymE{BlTi)K|bFB1}s$^xBYJhT&14k$}SoZe@oa?WLmf+?7Ws%0W9Q^e{?&C<-I zwvOrI_9_QR+Hkn&V@)pUbkT)rwe+Jf@`9|1HX{Q%q`IN0^%)Xu=|?o{oM?10U_fAL zMnuz6g+z4~DC2*U?}J(kTf1ekwqWy`e>RHNQrCol0M$+ zB>@c@NTyMc_)`W^LOVpxd~3N}Z46VeUa zZYte+aEw@Rxm?>XZ5SUP*Z-Q_`<0EBt{!axl>acW#WVct6Rj3?+BI|a&n3I|jqg4_ zdveaI(EBcf9E+{{TqzfY<;4 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&oY_PblRySB6) zcf&Ck)VT?ZI3OrWGJ@00ABe=v1WZs9k!ZjKA{Y`x1rQyv=I;;#XP<9%1vQ~;AS=wHP(j?_1NGCzraFXIkhO@C~>cXHlO$>7lzRHv?_~pUc z3`6AzA|8)h<2I|JMF@&zS%Rbqn#Lgl*SlncPvEj%oM!L=UC<=ekQ5m;8TpXXX?QSb z>4Xb0HA5@wsW8ES5eZ%;C@X2Ylmv=G2B&sv(WG)wAV3tvfNbaxOJ%TXn_?(>n{pTG z%<&WjFtmX{M#r?a#9|p0x>2zSx{(UVv}irpr2?V>=t`$1fQn7f%wp3UmGf$VHxweD8pw9V>3mo!PTsKoWsNdmyf8^D9nB#br5;*={$F&u5;F&;WB#rOyyR5^m7nJ{u*C8}spF|^J$dEf8# z)@w>wioyfEp=u@SukbPy%P=@?rIO|b0-Rsg4PF+2-{-+#aIBIfa`up&aq@t~9kjsW zVbM^>$}R^K9s&+KZl@Us zX>(DmjiuA_b(#cQkdOXv9$Z&}6xAykNG02NTTv0})GY zOVdPPW*$t?#@hfSy+>V4z;q>S#CZ*rM_{z>TX)3WjMw>1_cncI$(zpfY3g)FrhC1U z8)ia8XyfGwfD@I#OjihV_DrON_;0q7XOres8V-k_xy(#m_>r00K!(&BoXXNRegavh#G$?td2c zo;Wwlk~8<_meX5Gck1q2r@HsIU;K4x!=jv`j)5;Ob?kY0tZ3}(2i-MQ`EE<|g#{&Z zUVD7SJNpIZ>f#MYzghdlc;&8O`<{VMN=Dt~LdD(>_WpSGeA&SER?9Q}kDPh+8nyb& z<;5@U{Fj$wKecBe>)$NNs(iX&{zgyk&j*)r7muu2eLK(6JCt2II^2+Zy>Wbe aLt?JCX2;(^I}$d3oc@Yh-@%owTmJ=(xQIgl literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/beetroot_juice.png b/src/main/resources/assets/emeraldcraft/textures/item/beetroot_juice.png new file mode 100644 index 0000000000000000000000000000000000000000..805a9598d6964089a8ed0c235010c58603ad9145 GIT binary patch literal 1736 zcmbVNeP|nH7{4xVt6j><29mD0o>vBwExE6J^p2&qOVT#j#M%ZMacD1hZ`xavyX)Px zxs*XyVbyB=03E2C$oxZxiWLP{8Mw@~?w^7m!%k(>4G}C3En8n!iNE^$`X%{ER3E(o)3PdBwo<>9A_&%Vc3D6@-e(cwir!Z6${8*PKLPV4R z=oMRsRM0sTjqyW$JR@L@4d@<&g$mL@=TIY^k~G%vV|l$S99zpchUOu9pC4I+Mb_AP?w&2W< z_3FC9;&>*Lab;+itoGm}!!S5O;S}YB2&a~nbk1-}THT6 z20bl=kXA}+C9OykBn&q=1t(pE6;d83@Fkowpr-Q11s(?}kOq>jK`dFqD!sBUYrXQn zs4i{aWB^hdiIi-t=}S6YGNI|AK^R7nkTua-EUNDMq%7f4#bhFNiMqvXg;B;Ay z$#QDtqS{wnMgswKXO}1maz?v%6&wUP9r!VdfJ_sNlcHlJ$+{VqrgstbEI|~Y5m^wE z*|ne^H%s|$g2IFmIGwvCSm4>Dtfn~_u9)U}0Io9+AkePL zNihXCw2qd&XgCz`l8o2uq+Dd)-AIHDOPbC}JO~H<7^KD}iULc~0$?aWI|YJHI6Z>f z=VTHDa3(2t(nBODLf{MG!t+6yAFvW&<-G7e&p)7wumHK#ZR@eh(#jmRRn*{}W{ZW> z3Hpnpl!)e&h2?mw2>cjt-98Yo;<9+#3>4I6dI41WA9+!LX>wA}a4Kl(fo$C(>u~5g zZWU`G3jCh|=J!?=_6i(!3u{_dYVVRSa^>G=Yg{8&_BZQz&OUi{VcD#GbN2M~Yr7`t zrEO0Uuh$&ByzY2%ba~=q>cEjNa+b{ha;9a&%hl)K8!GE_To}H7`0^u%cGPv9?H|q5 zHc;E2j@wSWy3=-`GUS+KpQQ;X!ck-Ft7QEWbf%*D>Zhi8*9&O;ow?zZdCdHJq1%JJ zk-c`qXHMMj&XF@!!ga@p@#Ea0`R(Zssy}RdF44U>moR2#a+iKT^27*~V{d7-HrrH{ zVN|uXzCZkt!|~!BsAE%(xb)ZC6L$Mz199Ala@|lqU)uQKm!131&cAe{hO<3%_kB|* zt~}-{|KYoh7ox$2(7^r1mVxcUszQHDGp|E6ZX-?iTQ*MvjS;JbUfAO9P8-&OSh literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/bigeye_bucket.png b/src/main/resources/assets/emeraldcraft/textures/item/bigeye_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..416d2379fcb6fee5fe96d3b17e1507cf74c8cfc8 GIT binary patch literal 1905 zcmbVNYitx%6rLhrdDN7EN;KB#U;+eYXJ+3sb}8H4LbtHBEE`HuNbk(t?GD|Y8D^&J zE-ALQC4xo*wrFbM2bdLzVkA}MT@dAm#srB!NQ{c&qgqLmwuvA=@Xo#jQz5d+?3}st z-S3?5+;h(CsIOaIGX06^7>1PuYWyK|FEy{?sp$XdvD*OMrl~cJI)=@dZC*v#TYKkX z*pvfOc&)KExRMi;xCMv`4=u^KiqIHVQJGYM&;kvdhs~1gAx2IO61XIKhz3WH4yryF zm1?$VaP^kDu&|{?U`3*G30{%p5J4Oo08hqavd$$vM243`wz*6Zcm`s$cnGiQ5MLXt z$9;+hafii83XI)~yI2e3q*<$dF>a+97e%`$#zxW%M>{zii|2j>@}`LqF63X9^M#%~ zMAR@;j-nEYge76KC|Wbcuq;c_R?2E65rWiHvH_B$tk26c_@ORnl4?kbjGK&rS6U4Z zfg;UHh^qx!SPb5tb=n)u>`9dQ|xj z>cZ>09H7(&g9RTG#uASgT+d8lF%340f&BIKo4Q1QKo5@v@&6a9!-w;bMSbck*sv&B{gl{ff|P7C?T#_&@hQr%9**LF|EfP^0{liad)KDbmpi>$x_n z0?j!qCM_{#nqktA5qOsykUV6Zq>Z+-B+ol(l7TM9W`z;J3yuoP>>0EP&std`>fRnR zmCV&hW(296-_>waAp$&8yc`hBrt}bkS&dL6a?8>KpGcNA5rv5K9(9_9=}N>%01bMZ z(dpf%3#h#OtP1Mi0y9avW6^6rj#XyKRn)~@;eBJTwT~q6i ztYLyZk%7MNURsk5oo`)_wGCd7TKbk9@s>^wEIRyDbWd%1rL6Os ouGF*7l=Zv;8~ciClTSf5^oQt)g!o)1uKKA*} z_y6C2o1dI`ejxC0fMJ+{OgcG5--F)0qmMp!Z{C9R)o-U?aT(_RVej6?96kOZ!}MG? za(R+hUj!O9gHXo>6l|C_MKjFk{)P>;3L$I6dtU#a=U;LR+FG!B&pckk zc_jhThD(#x>~usHz1CS(4YpMU0BT-!E1c$~73o~(w{g!AXw%lqh?4$Cy4x@p7fBsD zXskq|b=PtdsPlr?hix6gKP9&IZtK}DoDKqS>5m}#;SVun(aGh|5f$zK<`f-o7c$AQ zTzp~WT`BPSvxBKCN8Vak_|e+Yv+K?8m%qNuojmi?XezLN@bP@$=f2*>8%*U>7&~@g z^5*ouQ=7NGdi$Zp?>74Tb}ydZBi_7k$hfjr9BTY<{ef#I@xH+uXTQAkUif9^xG=CY zKeN2&`2jO>{?+*>(!*;n z%x1~2$CUWY(cgQQR$i~ZGvBj36Bs%%^2usw=bw=;?9s@#hlZV{?F>3`NciybuEX~5 cFY6co*k0REA0y|=S#Nk}QWMFK4jg>rZzbIS;{X5v literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/braised_chicken.png b/src/main/resources/assets/emeraldcraft/textures/item/braised_chicken.png new file mode 100644 index 0000000000000000000000000000000000000000..6cccf6304458475825c2d79bf1e48e4a46563c7e GIT binary patch literal 2181 zcmb_eX>1f#93Kv`QmRleAw)r&0zDV*rsBaqEoCL_q0 z-FmRzuJ=DJsYaYoG$RCvbUX>s2vS;>PAY06u+b2R=m`&Y>CjOO)in>ci1$ z>Q)ofwblgH)<#v-u(Bu7(zFB>#DT4#>3A$*Nofz3(JR5RGfiS>24XjQuyV&BTJH~_ zUc&?^PYAe5a}4Sd30j~;hMR*j6zw7@7fG`?MN5<*u_BtiFlf!x!cwg~KWhtqd9bK$ zCnb_hrBXzSB@8n{(xNDm6hkr$4iUK3lCYIDp0G-C8f0Lprk=EQBY`>^m5|Y7dobwf zUi;Kl)NTTY{Lv1 zMl4sTK+a{9VF@0cxkyiFM#_3(hyaik8+b5=g1M$doOTCkL1I{mre;%aiJ}IfenZp4 zEkmF*g;NkpNgOB9{4G#O8BMX3yMi@U3L9ozfdT7rB?8D~B7&j$G)i70W|+`0^o|`m z@AG;CrV-X-aKWmrsz7~}UV#<`0cQw0Pzh4B#JIhkX_`ziI-U$vgN`eW~Sgi?hNw>2>i$&K_CIMWWodHho|;#MUWBg zKDj*Te&x%JhZihWCarsW;+4M7*7j~KE?71|gm%myUH)Ka!Rn10rf!+rG`rxBM+%y| z$1k607oVHHwW6nd!X%mV$|k>Um0Y`T4A-{hVUs-l>^kY9(JGQ(kGgc}^239z!wLWgabIc!z!8ZX1~#Ms(;U0Guomn_AiKkMOPkwsdWW$r2XcJ z_q$rIo|*PzAMw%L?haBYkIg!yZxRx6{M} z7pWDePN%1)f9ajFvh&8_(nD*@)b;&md%GHMeD~qa7p@gmweMeW?DO7T&X0nxvPOQd HqG9zvj*RA| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/caramelized_potato.png b/src/main/resources/assets/emeraldcraft/textures/item/caramelized_potato.png new file mode 100644 index 0000000000000000000000000000000000000000..bdbdf7813a2285433223be3318cf18b7b51e1859 GIT binary patch literal 2157 zcmb_ee{9rL9Pc3DKsQDZh{&XLIB}!bAJ@BH8&25$kh{Q*IWCR~L|@x?cV%~NZ9DFU z7~_wGALC~Te-MQcfEALHfj6% z-sgRPe7>LeUN<(>FDjcjV0d5Uq9G$Ybp(JkPGi$LB?B_TG3o-O!7 zUw$HG+lEL{*=*L8b-Q#kNil*TP&7-iEQt`L)u!1XM`~8pu!Rt`WK%V4Ro8IGB9Qb} z+fSfKhf>HGMYEb!pa~I1<$yskF4{>c4^-qL&S*8$dFP5u!8FW3&9)GhDPoP3ZtGS` zzk})G@CXNp+E}dUW7JqOnW78J4zEFJ6bKm=ZN=LRNHs!BZ#88YUW3A{a_i(p57c2`NKM5_pkBF{r0?6FElFxo_`}27?Wz zo>0?hz-n9+z@y=yml3>Pl65ipaAPqss#!MBWEc(k2}F%cRTa?#fgmMV59y@=AZ5VG zq$CJ3$+IBAx_N<>*y8+ z@x%U?nkrg=ApO90oMq`KM~tWzs%cwc;VgqM7g}i*&x=I_va<;MgzQuwDny}M9fg7W z%V5ZCHU*KOhm!>;4JSTY;BK$T6$Sm@120f2r+}7(Xg8&Z2T$exRCwnaj9760S1OdVg$`+p z`nT-zW4CR$sEGM4w1+#*;^BclipLMs5KAUHT)O9NT!djIEzwY2+_&Z3Wk1TczLZ@1EFcuS)%>)pnj)Cr$Ib$z6}sly%y%b4OP_y8Fd#&sWzyw4`EkcgLio z>CbjGRF`b(Ss$O#ccu2d_Ogd3bRNTusXLA{rQf^QS>elaZ_nF%!aGl4m^meIaG>jv zIlHEv>p7gBuJ%5+bKHi~!E@VxU3cKZM^EkV-%;Op=+l{le7*g}xR3XqY<^;O<#%U- zT43`#ZHtd>-9B|Jw_|DF)`1Ua@3~l6vm$$?>*nh7iIZb4RUha}w_m+jGp)VlhbdU< z$ZuVzuS!+jb1GsTe^({TlWhyNfKLw(&ffi3Xy0oae|l@~PVDS;tlveQdgVm_tjCTG VywDz-+2{NaM8ox=LxGpx_y;jY)U*Hq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/carrot_juice.png b/src/main/resources/assets/emeraldcraft/textures/item/carrot_juice.png new file mode 100644 index 0000000000000000000000000000000000000000..4ef175066e8c8e019d7d506c9bc626a41c39da44 GIT binary patch literal 1735 zcmbVNeM}Q)7(WO&2dR9BAH!{&M>0isy^qq5J1GWQuoVlWb`yhf9(UJr()P}~D=j2O ziY}W|mZ?z_gP4#Q2@#fUxNkOwTbOPkF&i!;bCV1+%rYIrZT~Rbd!=n~VKeiRyL<0_ zfA8;kp5OaC&mFF<-lEIM&wwCE=XBWJ;GM1AOP7FW!OVRIydIYvI~54ZT&~?I(3#HF z5R{%Pcz}22OlG_z*&(UMi=gq zY<#2OXqEZxt<@g3wTY!TWOFH85}^S>fL9qf67UBVI$}j)yfheV(-;EBAZn8pDbozX zb*@_2Cdxc))SFP2C?;Vur6)`{MHW8`lQ?0| z@MT3BRaK%fEF2E&!v?)5`!Ir{C=4etl0*RlRa$~76G4MYVS>TVE37O?svrhojge^( zL#h=4p3a95kdm}PB`y;X42v)lM(A-Zq!^H6lQ=0P`(wsA7UTVVfDft)z!FKU)F`T= z(kT85b#nOu13+4rD`{g*?h zT_PuVTNZ^HX@l_rC`cHNQJIH=IhOW{a)1Hh3IWE)V^YwEz)2Blo9Gv1U>JC3SUB&r z*=l9cEBL{J;@(mYJ1cA^f-;#1W2P71db*tuc^W8Wl_p( zAy6}0%%K*u!H6FBlBowsbvoB5EO8x zE%CzH&hLwl`~nkHU&PCjgAk3?k0macCnP&3qdLMPJ5Zh(sBNT z)sf1q9yxG#ViHd4J{axG(Jfnn_Kn?ymtLCMWwV{=K%-K52kmvOeQ#i(qU^=0wClCU zzRC$7EQsc>{nNB-_l5BOiGrsik==9mf0|k0-dY(YbJzT;d+bp5+b`UxI|YTaYA$w` zj%SVbekNt^kM>?aDV}6E&5>_7N>=7wPVLVqz4G-@)7e=Q^t<=S^z5K7v&+!)M1ZcJ z89q1I{k{M27h}iI{#BDYU6*~}kBqiUO*ag0>56W(QRA=u=DqUfaObvPx~i~Oed*8j zZM<+aZQYaIr|YNAw2yy&Gw=3gqkSFq{<)!{k$aPypx#p{RiAc^y#7*N#=SkwUy@nx zrtPgE=Yvhv5V!O-cUYu|qJkuBPF%ai}Z^HaI&H#m>o={Z#R%*4xw z`->*q)7|g<+;i=zWu{e2?tBuudV4VQm957IcFL{~Yv!i0*;NIZJ?Be~jE-X3uf|zX KZSODN)BZQIzfH6N literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/chili.png b/src/main/resources/assets/emeraldcraft/textures/item/chili.png new file mode 100644 index 0000000000000000000000000000000000000000..641dfede4fcd35abe9fb3232eec76470e33a78a3 GIT binary patch literal 1726 zcmcIlU5MON6wWFZZCP3@$htmkNGaBzOzusl$t2x$JI<``fY~nFflfiRH}~F|2|LM+ zNp@y-5m^f>RuuZ+LzVTRA_!s^eG(BYR6!6_d{_}heOS;!A1YJ?sqJ_(e->%ieQ_X@ zo8-IS`ObGvPEOCwJ~6s;e5W7?qotYRJU{PAkGps9|B0&|#83BxGbds}*tIu3Mua!k z#suN6i(a{sRGcR*%=`=@%%z#OA9A!HOir~!gcoQcy0qp6wshs=3zFy&TRMKw0Zv$; zb#G=lqQ{nJ%XoPKn?#yAEKas9PT_U9+1%Boq0z|vGpH6H;v3xFQf;axybg0=@{#H%iC2kJOh zDToskU|K5L5*L;6JYpHpH4S7!S*KW)4V*=C&Lx^`X7wzlz{O^++SSGP7a3km%}e+9 znwBukIfnjNS{6{K=b%hJ=#{Ca?&k|--E@h znzT?v^EK}Df3%izJLxfMZY_L!W&huV_btVB6x1jmnTnLAqNKy6R}kgjwdy{*X%G$I ze7dE};aKGt!@*1gP95>Fd++6q6MSU9RVwDoxmWRDozB#q`&Uj^R!7diTk)mug{M|l z&zw5{!cUz;8@o4O`}}fuJ^K6&a(3$ap-+FFc;)Q}POh(i_1os9{ENSKULU*TKD4{B z_Vjn-m##l^?Th`-{j#??0$2XnG1>Y0vv6(o&2zv1_~3izUfK}Ob~>Ld=RewYKwUX= z_5QKDl7? IV<%7j4cm4%+W-In literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/chili_seed.png b/src/main/resources/assets/emeraldcraft/textures/item/chili_seed.png new file mode 100644 index 0000000000000000000000000000000000000000..1a31b1bb1e175bf25a4914abca1cdec182d82cac GIT binary patch literal 1892 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/cooked_purple_spotted_bigeye.png b/src/main/resources/assets/emeraldcraft/textures/item/cooked_purple_spotted_bigeye.png new file mode 100644 index 0000000000000000000000000000000000000000..90581f28312bce509286c7e5b8adcca4f36f5e28 GIT binary patch literal 2006 zcmbVN4Qvx-7{0=W@{ceG2!zXl5yP(c)AqVMDFfQU8t53MvQ35TdiS+E+TI;^*R>sr zNQlDt31$!o5XB#|-~tf{31-tF$`(-u(MXUvVMZkU7)TIh5t!d~T?1zP=p}de-S<7; z^Sk$9%0^34}i}}H@kWG8mJam=m;`+lzCf_9lORN zNN$G|C^yP|^Ep9@S$RbVb>d*F;o&=See5|`cyZl zl8S3Iu&AaaAk;(zR>TTtpwp8aB!~fnN0YIrtaC{hmgeQ)*qkOXGz~E#E^L-*5H0tW zqHaY4sKd(O0%fOBCu^k`lBMnWC{0pMf^-s;4JRp%WH=j(W-bg`)5H+x_sq%If?qDI z$}m)pAQFj$HDR+VT9}|%mL*7QTCLiN&%ebfc&mhLI7ZPqZFLseteUU5RS~D5{2TPBx=aIkyIQL(u|? z675Y?X|Kzu+l@{wlVnjz=r7y{2Oi!4E{rCj(j<%1RDfbR8_m)7X=DLMl08tLB1)lD zUr;;C(c}YASTG`Q@Q($H0vA%W7!SjhVtg17svO49tcaXji7Fa248616Kks$BOEo1V zMd5<(pF11%7P%RUWf+{cQfYU6KF%xa1}_W1>v3UF8mlCUoI|kLM28LF4vH+mg^-=a zgN)OLGYoJ7U}x9@3K~l1i}NT#+$@0J{UY2?0!j!v3wS&TC_r{ zjeF{v7vwD*(ONis@kdBrE~8egpGK6Gzq;bNr5_CZe@*{`sU0Urx8!UZoF`b6A1`j+PM%!x_0Ch@Hg&a4eWr89Z)ey0uavZQ zBqF=+cHw)eg0|h~zCWM3d2iI~-E|jl&#Qa0vvosRBryKagaPji**HCa@#e$~?=WO- z^U5zL)UP=i`*`EFey4{ymhPE9@^DURn{Vuese^KNpIUh3i`z;k31e0bZ)ouE-2c}q?uMoO$hZsPrfnVV@3$P2_j;BM;cldu3jez=7S*@s z&a4=BzO8BZou=6%kN@)0iE&#BZ?%Pu3x_`Mo@ZHGd|>sI+C9vYry%{`TO0H1mW#%b z8kon4kNVtCDflXtgZ*$W+&UGC>{`+VoUw-YYhAo!;;}f}8kGAUd zH7$onR7NhxJ1L_5*qvQhjK=({9jh0d@l3q^>-g=SeUZ;DUCKM%-(AwOwJg5!+N8Y2 mH!pwqe0NT#e@^^-{NCWk$TwJZ&fQbypVwPd;@LmDa`it$F}W@P literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/cooked_purpuraceus_fungus.png b/src/main/resources/assets/emeraldcraft/textures/item/cooked_purpuraceus_fungus.png new file mode 100644 index 0000000000000000000000000000000000000000..dd9f14d11d271a2cb4d4e596a5f5b964b4563a05 GIT binary patch literal 2249 zcmb_eYitx%6dn)+iX^2dL5Ojj5`oa!nLD%H-5FSLyIW|jTWh-!DkN}s=I-v$okwS; z-QBi`V2Oy37(lUw5Q<>rk3xv12IZ-S7>SAmHHZlqe1xD0kN7~qJNuGHd4#yh?A)38 z&N<&X=R0%f<%as%qe{k?5Ck!*wkFhw&!x^W{C@oZ==rMY?WeMSMZ9)yGZdMH*e!l4-~=S+ zh8xJBZX(j_;%JFwS<)-GK-5zSy+Q@au^h*+9tQ9<@QQAa2;5};N8xa$91|Nuv+}|4 zm7hx3wjnZ1DwT4jc$aR*86XG(!*UGA(HKEn8O?@iTC>Uv9zw{HOvSJjT_YWjFsirN zehO2~<)9ixx0;o&6RsGOh6V#%tdmm~C`(10(Pk#I!DWd-Nu(mpwlEeHu|`6-bt|FY z!gcZSbpdc~!{K6#0lBDZF@$ATx8pSO1sM=+MKT6r8j+>9nG&jQ$27~GYz#4IB53Po zMAwsrPBj!LlN|4=Bqz^NG+9qsQ?4;UA!s8%<#df^1sb>`KoI##5qPGuK9OZ}(6BBm zvCIunUj%qW&Mor3>!4UOGPL0x!LlUAbW?>mVMT>;#28wfB8z1dgL+aoabV1j&$0-I z#ahj>p(df)ke|XiyA(whB^E%$`vh7Bo){ekZi$9buS|Po=!v;mne$4Xf_+Gr+MLc7 z>}724i+KR>flAsF^Rl$WyFGL?D#U1?>;1&(4Sca%4CEAkd>zddyjMS$bH z0?i{qrX}c((E^9Xz)C(DOA8<`6bh-|M4e+ro)rOK7>9eIo-eDEfLa{kcQ-@bdop)7 z83Xp==Gp%LlF5oRr!eM5@nxS~^L8&N8E+ZRvbb5{i{f^NG+ZYWZ)UG9IMP87gXYwR z0ukTp!)tfeRXy|Ir%S&1eD;TBBQvmU)|c}_>w1@Oxw0%#);r7w`cr|Tvy{w~v*>KeR# WVz&`kW3@OR8@1K-p?9hlF8db?iT1q! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/cooked_sausage.png b/src/main/resources/assets/emeraldcraft/textures/item/cooked_sausage.png new file mode 100644 index 0000000000000000000000000000000000000000..16fefebf1687b6539f4510b75012028983c52d8f GIT binary patch literal 1672 zcmbVNU2GIp6rM^o^iOH=r)p`(K@+UZ&d;{fohd6VyR}_(>#|*KB|*45b9Z;rnYq)M zX?I(r4^)lC=z|cV4W>q;rXhleu?AAH^+6O3Xy{|Hz=L37O+(bAYVgi>cT-H2$Rsm! z=icvr=bZ1Jb7myc*zl&y8|B4YGF zH9_25rN(-kp73LmjC2oBP#k(Px{1*Qv1xP01adEQ$T&=@hM)T7_z8+s6+hM87-qv} z0H)NAAq#d5b;jhOURhMA%@32CG7=`xp##W_t{JwJ@l#n|36I@rh9a{Nr`J!lx(3Of zaD)sX3zCf@UXjdQ6t-q52`L(UBxehM z`KgrSm=eRJ(`irI>p@nM;Y3knSf1f|8Y5_X&~QM8Hth9zh9I~2-Ede68MXrq8HR#>3QOZrRYj70Nwh@kZDmC zAT2{dWLa;*2LQ=uEalHJpX3YD8yZ&-mP+H?wH(*MYdC76v8P8wLSHHp=_PS!Elb;d2$r6`zx z2AEx2R@iws?iTK_(5CQ5q0vDDcQ*^Sv6Ef3xN{cOgo3Rx-z)F#o!q*r_4XG|lmPne z;vLcPd$*n4wYK<n_|$+4TN(!tv&j zkKP}Re`e1gIA33R-^rz%c!7x&NB9K7qc`ms;pwl8c& z@2$LCG2AlY6Q>&1kfp0W9)0%7#NE%2e;%~Xp4@(6=Ui;~yRU@b%gbw?SUvH~=uge{ zGjjv;?Oz}IEB%f+J-6rte(OE;-ucYMzUt^!t?`eRGskr8;MC&Y!%w#m$JUKazBx$D z*M3>^+@8ffQ)PX_cKf4~mp&B#6vk&?J-skvQ{ukMbC=$_|JT_EJm_3GTXyTY4ZB~8 nER;qUO0RAYSGK|(KkoeI+u@1s*Lv#Re?_RRGk9pruHAnF01Yz0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/cooked_tropical_fish.png b/src/main/resources/assets/emeraldcraft/textures/item/cooked_tropical_fish.png new file mode 100644 index 0000000000000000000000000000000000000000..88bb498bbddf48fbfbbd4de8b1b55cefafabdb33 GIT binary patch literal 1871 zcmbVN4Qvx-7`_UFZEpMy5r=p=U;@(KUEB5NTy3{@ZVePhDcR5PQn|)f*?GdV)0Lgc&CdT7skq6J@ZXi3@|)BsM^KT`wkV!7m#Y zQWTNG@n|%viyCx-6vRoZ)ru2(T(8$cgjTNP6*{Kn<0p%vFTGHqv3Cduk45sG@3q=q; zP>;ZJfy#$MA;|my6lM)eEA+pDS%wM-QiO&va}hcSaFGvUXi`baDTDy^f5#>+w)-URG$H0dAKKgZk(=j-@Onz!(ECrTmPU z(faj9Qfna$R&6f9kXEzBOd4oY?|zrSRH#|dyPy4^`=?4AtU@~c$UJIos_8=&b22>G z%0%@{2XhmnFo(u7hN2m@5^NZwrT}2E#5DKF3iQxMLjaQgLtga2WFeqLX$j;9p<4eX z^>FAvu9j_2DEMEajIZ5S;=OR#H`HOWVZo1N%L6>@a}sQ5uT7fcLl8~7+m-LLtk}BR z9vV7rGZ_YD7%hQ8&S`_&z&&G0*Zz#6j-q|GeYv~u%mWxOS8u32`~{{5Bk z8gKPy`$=;qiqyM3XMaC&>d3-|L(|&d+mN&1aDT^~xpmiD7;E0m=BMktQk%%uR#i;( zzWE(;^uyfrt(!h_aN7^B+F5pdSH{4*$VzpsdF;XJ348BcPg&|cbNHrf$3gAMpTC$; zA6jwyg2p}O;>3>yDTk;X)jDllN;B0pWBBWj?ZP#S?Rm$F&!elteM&B_-(I0OOdBtE zyqn(^&J^$cmW}v2M|{xHl7FK5t#8h-^T4p`SjOUG>jr*(@nqJGQImJqwC>&+9Gi^{ zo@+kKhu$gPSKqX*Uh{`HqpqzhxG($i^~N-0dF9mMY=`Fa1#{?^hGop^9exaM#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/ginkgo_boat.png b/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..9559b97777778d69aa587b47d81eeb7c72d1156f GIT binary patch literal 1870 zcmbVN4Qvx-7`}oU1`H(A02AYJlmNQ+?s{F<9u!#Hjds#GyM~QKgxlTM^|H3#ad%t0 zp`c8H{6!*x4Fd{}K`^d3!aq@15Ku%QF|Y-LO#B%m^5@VEbiwbst^ou7aLL_$_kGXz zyzl#b@B7}eqQV*JgEI$X7?$pFyL{;Vq;?N_0zIGWy33(gn&h6XVAzlh?bc!MZ5V}N zkB<@krD~~nCdClb6Y8f()efhQnpg`LRN4C1BU zBHRgOfM**m2A(#X@En_wwoo>cISV&YbPh@7kTheUXqK|Dj15m-1hOUz0oLcrPufCX zb|R>%5=)ZNXw(>Gj8HBoX`9VPQYO-5G9ZLOsg9^z%n(t=^)tAD!powhiZFs}j9eM4 zRP6-vv@e9Pl%kC&NtuvfWQ>zY+DK_3C4d5-!bz2KC}CXSNe}{I5K$F`rBhfb2vw*A z;X|lX%l8>T(t5oq8xQm)98Q@~)VwMbMpBRmq7{F&1V|rHV5Q81yej18I4v59b;^KK zq3nk+)PGP#{VwB9r*<$_d}4_h5nxoAbk82(;#6QKOcauvvKUNOKV@SXbau=Ol$E8Z zKByN8VxamV&}{R4P?R+Sr*i)a7I-!QoV)1s0U$2v(ZTF;I*- z+hDetZ3df_2^cH^3vZzzuhg=jf4}fQ_rD~Is0z8zBlBprsihC=78P`` z)ye892J@4nkccNThUIvz66^%8r2r6!e;8^d&M9#^j4x~g#v z9n5%n)bT~pTk-9U$JR~X|GmEG`M|z>&nKm0woH8M((1g;&-xl_t0uALT`SIPudQwO zP2N4MaBW*l?#Py-&z#RS)VF*-bo63LuRmIEdA9@aKHpkgxA5Bqcf0StezCh}s&`O} z$1!;!-O)Cn{b0%1x#?GqH*~F23=_sC^*qEW@O2 z@Q<1B^tQ9Xg09}q39mF8u&Rr%4QTiGsO^Vt)m>jvKg(2PJbY;>v>suXl)&+iwcq@v z$%!4#tz61a4xRfQ+lB(m^nR5 zSpLr3R=t}cdYW{?)^%Ub`DNRI*2d3<*M2%L{qmF@Lwm)|XQrMpuKcdJp!@5l{56gX z`aj~e*_)WQA;0w=iJs6Ob8Ky^s-v3pSIgeNSwY^&=(%%ei|+8q9bf%^+AYm48(Vzp i5d5=l*rtu@#zg}i8}@y4Dhuq<{&=3eLRZ`|Z}DIFcA8@V literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_chest_boat.png b/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_chest_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..49de0c50f82f37e2cd603d6ecfd0149425a90f1d GIT binary patch literal 2146 zcmbVO32f6=72 z0qYnVU8%&FI0mf*lxu~Fp_M}&Fzzz0A&p6em1FC;1{(slJ-2C8w!*4ecKrO__y7O* zpUSe_>~YCm2X#ddB-vrN=D~Ll^+`&AzeDc-#lqK1LHiULL0;~yK5@wEH3JZ&%XPt3 zpcFVKGMwnwu)OF7ny^0z(Fl@}84j{s5l~P!@CpGlc6;A`3>A1YHaXo%I)fHaDA?yp zAb)PQiz&T2!joN}=W~@+A zf($`~LLp5^rx7JDLD4i#kXk~k#UTQhBLRgC;{iFfRf84CoFoJlK@6a(M%FDBD`pHb zZE?XLjHwOC(J;Y)5n(n+P#RKosTs&~FV12D8sXUs;sT>So+30bktfo?7j3Xc`Y=8p}s~Lmw(Fg+1P;TBt zo7@~ub9x=l(t0g!0<<1C0vZ65PRF~W?m~I1$Q7$q&??VEdEhqkCWuEiW z(rs1CEg!}%$S|>yX!qoU+0m6xK$|OuVL7!E z%owMZ0N}Ccw$M%lI_5!(+E5{YN?%YHEihU1C?Qq?SzZ{ej+7qpJpM8}=f&(hmcM_q zZ?{xC%Dzp{w1{wpY`_cPTqQ8o6+)drEm}#_+l7dD43K7r7xZKK!k6N%E^RS&X`R(!3QR4}2} zy%728w>u_jR-U--NE^9n?*MoUwqY5cZrZVm_kMYrjE~$n6o)iy={LC3jvkI+-B0Ic z_P-apV=Nm|yY%keCjIyaOS;uxn_luDdHW2{x%Itf?!I9&-nQOC7Ctzq%~?BeXxi|U z8A~3LJEtEms-RzAIX@h!NQ*ZvZ9Fj+S(vL$SUNoINATUy>)lt7zZ~mzYv;wp+P79D z+{~ns4xG3;Eoqpg>2XH?(-UW(-Tki10WOtynci@vs;+TrWUJ@ypA!la9hKR70kOni z{V>6|as0@=gKDN7_#TrpcNXQ3srgFtXr5+Z<(9sayV^F;y42Hs*WlWwen-#WioC!3 zw}O*yVfHIu+(*w}N?mkh$h!114f#hVB3pUas&|TaHKokm>RE8S=1|EuaT^ccezgB# Z$~Di;fvHp0)vNyk9JXxhwlT97{S8_(@7w?Y literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_door.png b/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_door.png new file mode 100644 index 0000000000000000000000000000000000000000..73126bacb1aade78a4324fd09d7dd8579d47281b GIT binary patch literal 1536 zcmbVMUx?g97*9F6=-pOY3sPI5Lk`8_C7EPzbDQDf^_txE7R?W{ zz^|>bHRmzp(m=)@trNKyL>w&$^9#KQyKTZioizQ>6n}p2LlO9%DV{Gn(1|S4@>jNE za&Bw2=5DoJ!xI-C1@k?`2?D|}=mniHK|NC(@FG4>mlY8VAgpbQi>X1d=2U=1V*-k@ zF1hNg2IdS|)uExy&HxRna|)bO)Pe+61a(v}z~~XVwb*N*s=Yk2#s5sP#aM(CrQ7Yw z-GWTxrlJ~#p+HU1G>IdmWHV&ACxyxMn87BA8~YLSX$VqAT&Ek%6uGCv5P~S94U>^f zTrj1FBSn>A8qxshxfw3nh&u!0o~w`!2}sBij#V>k)S`?gE&4aq+4gM)xU`Ow+1S^Y zAjnK4Z0RBoV_@XLfmw{!a7gGWc zpZ7zLc9T8V$Bd~-Z96}xH`Hjtep+%&@+n_vaJk0RF zf;|^CXdGZ3vmf9lQKGOZf=o$d(GHEdVeVaF?|Rv?Dlu*N9lnuN&z=G0B}-QgojWh9 z19u$N!WA9?d#F7-S5>ZdwVZ=%y(^JaM$_ z-?0Ki+HQ+*(tpT{AuOQ{*2OVdY;v{!OX?}ye<+|@pk@n?ybw0SKpYpk3HMI@zRlZzC5iT b`8+55_T$Vwuc41`q&>R4v}(V3X8qEicogNX literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_nut.png b/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_nut.png new file mode 100644 index 0000000000000000000000000000000000000000..5befe09d73961864b7c02ac17df0b70ad8c05fce GIT binary patch literal 1905 zcmcIlZ*0_L7%vXzWHA1y%OHYX=Mu=)Yp?BHuMNkXcN-h*#u$ei1d(^`dw1RL`gU#a z&j<)C7)2RGG*c1wfv_(NGy1^{vN+IaG#WGnqZ0ixO;D!^{z-(5MSQ#6ox}jy7cc4c zZTowF&+qv?PoExYXDN9SlQjBNGescj$E6OF+l>_fXpP~x+Q1))C{kT*UoK*B4;3Wm!GP2 z0+Q{a7BYZLNP1jeT5$^;DM~K4mz6l7n&eow$gm>g=4sX~vtF5($n1~8(M&ZWw+8F8 zvGA3jirKayGfX<2cBOe2GNX)Jk|c)Z7>=Vcg0^~e8)RtRs>m?}p{1CbVQWYy9Y)ZB zlD411N@r6@7O@@UJhOW`P4y>}$G!aW9LTA_uK zrUL6yP`4{`!Bi!`*GQW2nM_rMfpM6?FbfNF=R+AWWFsqv?vh9TaXuSE4ww+w$P6PC z&lRdA$3g}IPGNlH>NZVRQQBJLh|2DPL105a#j)6K)=P6@n3ZIYB=eps)+e*=@!MG)RVrrmxJ5R?LX{RAK>`qX8td@V5wDw%uq@BAia?R7B1e#!0Jv4O z1c*Y$(4!RjubKdgBQu0l>^bi=G-k(HG-wvCUQhNF*#f(>tGGta^qmY8r``RO;?xACb5b2t4KNZnig+-m>-s?VCM#DE@! zc!DyNlMmy}n%UAY|E=20v)krU4vvSNv&>Ife375iP{-6Jp27usa)cn})i(xf!@j=3 z%kOlCH$VK`IO^@Nt9nb97VkZAL;9KzZ+b!-MVf_Y}Ol z`DJ0*>rkjz{*uM7y120D%Ehbk&!?_!e{FC5<)6Q-omf(KwC|Pi6IEvq6=#l)+&CI`I9{)L-hxKuzVq<8NNCjE+j()#kDvjm6B{ z(`^U4y{PisfO>A|@A=gm(pTrZ7VBR{N{;PlGEbl1zV+6Nqn~cw@k_;-{uRr|cHXpa z7Ow9ec_6;JrnH#*;-kq`zdibG@w97bxTNKopH@!q^E@&6LX@}Oi1v)7m=DB>@|`PA z37=3csoz0i*|S$ReRo0G)4Al-fvJHTgTp-|-SlVPRWUTaGIjdE)RCu~%Dml2E`5Er tFS(=h`X473l(bC_O+0eAWa`Aeg1TRm8#laKUg>-k8|#{bZ#}uI_a8^TdM*F} literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_sign.png b/src/main/resources/assets/emeraldcraft/textures/item/ginkgo_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..c4ceba047ea8309515d38373046067c8cdfbb4d0 GIT binary patch literal 1565 zcmbVMON`q@7)#NWse_8Huly;TW8Zm#mkZgHHZZ62y5Z%tKM;1W^_8s;q#~!%}OZWvjJPd1Q2==0~Nwfr^9z- zo`fwZDvAOH2}%-25nR;sW7OsR=ZDl+YC@?4I{O&r!StD znuy}14I0KskUh~+y%%6u!x32zO}w;0-8`H`6R3KKQB1-*A@2C1R>m#^T~98i0FIt_ ze2a9VW4q4a5{j|LN&=Nz$a7MmE-0!@?@m4;6jVVNLJeX$c5hFpq)NhVP?|LsiqXG< zEmO5g=ph=jwlhqGIVGaBKMAYlG;qtN3A#!z1ZHUdd}esqnYb~LB^=aOe#TR%_Ie|#g3Mp zJ62#w+i7D;`VVHeCt7`RVr`=U(#` z=AK$T;BLS9^yTf1-AsO$_-GvHhq10CU2B4 zWO(=~h`@KPt%bP{Ghdbu?rh)JcxUo@CYX5s#>?f;Z1n6Sv~@|%quuDzuf=bJkA66E zXzEtK|90`%&EqfL6Hi|2y}J3{z6UrZjb B?>PVf literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/gluten.png b/src/main/resources/assets/emeraldcraft/textures/item/gluten.png new file mode 100644 index 0000000000000000000000000000000000000000..df4d76204b8d5fb6f1c7df53bc78a33ca8530512 GIT binary patch literal 1703 zcmbVNYfKzf6dtfB1xcW_sn8})rMC?wih%?YFgP?N#bupId9XAu1IOkxj-hFY5%XYP(;(U& zY(jmC22i`zVc|&|g*x3<(m}W>+e0WtkWQR%;v{V$NQQ7Qv>VM_7__DdVWx$BBx4JH zd9bKqs0@xLlSylmwklc#C*5v0PEa^SSs=oqcghBrvdH@8B?cDgye6uKsK}_v$aN?Q z!-GLj7ekQLEUm0(WP*a>DNe;nD`AF|1`2!@rzW&`+PJ{uAPyuT8#=_2S*#jW3`LJB z|3aNzzR3WTHWSkV_r%9_v({~j1dMvxWJdZ<$ccni>#gvJB^9_Z#~Ga8lgX@D~n zEu<*%rGsi(avAmc(5-EvEGS9+fn{*Oat82V6akec+!l%ok#2@|F(gqzxEO+1ga#Es z40o;swc8lVc@q>SjKCS(Ex`iMgcVKVV7Q{hMF6hK5e&_W$oQ1FqCvyZJ9_ziz~^hy zl&~0w3wq1;8Z_YdIY_s|VWF&K+TCD~3COy^$vgg&P?I7 zg58->Ttw5!!f?D<1RjhxPaguZ|t zIsVl9KQs(&&0GE8zGsShNak3v*RO^?~Lr+@^IguuJOwKrSo4; z92l&6xqP6b>O>+^OO?z|Pp}Qa%idLwle4j*na?g(V7b`deFOEq_a81e`Mcf!Q~&I- Z8%XIdJ)25i;w1A|67V;&M{Azg`!|IfLLdMD 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/golden_peach.png b/src/main/resources/assets/emeraldcraft/textures/item/golden_peach.png new file mode 100644 index 0000000000000000000000000000000000000000..6f23d22e329bf0b07cd5785df1777ce35f95d151 GIT binary patch literal 2397 zcmbVOdu-Hn96ug{AS}EFW<+TUK@9Zzxc08C+}PGT*k#<9<1%J^us(jbE4yn;+i|zK zz+eMKF)=;}qKHT!$N(Wi6o{e`L=z>bs2gDef)Em-O!fyDjri-`?U*od;c{)i{q_6! ze7=wVy0)Tx-sq79BV8`n=ul~(5?;qR$AiP*c}mYs5ne_ZrB7KdSKd+Q81&}MyvZ)t z@YmHywOt*a&&ztkEh@SM+^K{CwOy{+b5e#V*8v-mK&`6z(W{4#popsY(M3#{2pa;3 zsilo3SlCz|ksIq|PC@4sBC}IGbdUhHh@=v6&EivjH0_s%va^h%NLt0N^P|O1K%_cc zfe5+@5XSArWRj*3ALk~$1V_=c5Q-puIN`%d4@QtY;pIIXlKr7DnyEzj%D~)gEO_Tf zW43MZIG#)<-ARvIH*0Z{<2an4aEij924*#AwwS^+Yih5D0I+0JHEdPa5XYk^>GifB zg-A0L5=PFgW@Xa^6NaZm11H^tLn*DO$T>Zu-i)V%D>4q^AOSSng1Tf**NEx1ZpHMw zxXwNPPXL(Oa5xvEUo444E`((Vmq8lYg!HRzMH&o%R{~3~H)Rl924PNh*ciNE0@2pZ zh_1(b3sunz84(1hFf1}-k*XQz?;+rSCc*Lqkx>on ziW+U`qe>DONkk};r|wXNU89J$_`k}E%tv)IAwte-LaYV2q1B>DE|a{V$8{41hUh$f z*F%C(Vd_ye4j)*R^Gc9VQ1FtR*NahZG7UEz=0logi<%5V0Y3`!<5pFLr-9^QD3-%$ zDJo$MLyH&(MNDEC*`v@h0hA0~Xdlq!dZ!C|?GeG@iP|)nM+D~-{R-KI7WDG#3_vrbInx#kWq-cWT zTG$B#87us5_$_hSz0p%q;EQ@C4x=PO#%Mqjm;@9L#wiLbG87FvFUP)L^ej*NdMEZi z(Pxt@$3(3bz>Nb(@1M`WX6=q@^#58JD4#y>w~WbcRMPF4=`#HG224Nev$McTrkCJ$ z<%qd`65ix?TA;x!nQ$LHUiji(murv_3KU1!SGK)ImJVL}@Uaz1x|Oz1pIRd1xl3v$ zgrzcO=>wWK?I{I9O( zuYY#6eEit$Uwk|5+O?|j&DSSYKUaV7N8$VFDl>LViT^AmF=rL zwHaN=mKzmKlT$~}7OnZ9{kN|+bX+*{d)?09zB3PX75R2I-|(f{W=whShkshemhG7M z=wRQCE8oqXwX##IIXdoK-IdOwCr&q+FHGJ3WDio1x9j}Pbt}iLXpen#VcW=2H;04+ z?Ju|fZ5>=*J^b9Cm-3t2*PQ5Bd*PRuE4ldu{1WOoyXk?GFI{|hU4ef`v)Vo6^Sm$2 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/herring.png b/src/main/resources/assets/emeraldcraft/textures/item/herring.png new file mode 100644 index 0000000000000000000000000000000000000000..cfe78a38c79b47f9ad94d746d4a20b447eecea67 GIT binary patch literal 1707 zcmbVNeQXnD7(c|}m@qzOgeZjbm}F$M_tEawJL$%_c3auH)vj^XMcmuFx9w%^-R^FGgW2Lde(D@z_J!7yy4uhA1k@72~_ybL`z{W=HGYq{3=w1Hs{mRa`_ z?C7!e7*@1a4u#FIznK@+q#a0V1llu64WTh?du>JoViz>=2#m>!o49>xl)z=lO|)0} zDZeJbxZK#Q!?xa*kl5QLauQKngKy99h#(0~fM=2k#o#k;BFoF8u{BK+cot%IxrsW< zARhJya6#1}US(%(BJE`GYR*ox6vsHX;S5DrlThaU4l8B*WMc!e;a+Cdk+nWAi+N2O6R-Yo@F!xWxz} zYRYsI$kUvJq*kC+jC`0-z{m{HNZL+WlCnTaEa0@1p2!-PL=q-o5-O&Fuyg^d#Z^-^ z;_AOp7nbiZfI{o{7i=u*OEOt7VVK@MNJc&&i=vHCj|RygG}M$XLhl~r=4MNc#tS+G zrmBZjH8Fosfq9p4LBK28Wkpic#?}RJ=m92l6AXnSO>s7c4$&OXpku45q+C2j<)D65 zlA}F~LK)uSyaS37Mgk_dD_9cwsH!Ick}D@c43e4>Bk)2Hc|lF6Ix>vBb1a?w#!hG5_4|3BVwgY?q0i$cP-yJ3Eb(;I8FjJ|+UAsyQU`Ey zHWv_Gwkn#dax$)Hl%{iX(SDCArmO^*-!J{o{jIu;3J@gjna3(iD|7fp*+6I7lP{b$ z*qt9GWIUTJJP@rSa1)|+`cNYB)ABt>AV-^yLqz%?d69z|YSc^v9oEHAwC<91Byyd! ziZ!Q#{HMU|+JeHKhof#`4GV1weH0oUR8V)*Q5)-!*jpI3q}J!D3%UAE9U5)=e8-0I z8}efvGaJfJmA14@zj0>z`c3i%bD_vh=rNtl2d&wKsUi z_Ve(&O=a~HfW0#N#Lz_BTj|QRn9mtl{#u7OSW|Ow1bkX{->RX$!?)qkxwC&h^WLt| z#){cr&Ms{&t_WAJSTWRf@pAj73*Ue8<)h_e$5(${QIuX*KG=8Iwd#2P)!FXpa5%p7 z{F86j#V<*dPi!l-RqBZb+WgZcqBD^LjCIXYZc?~ zU-N%dd424smmdFSWZ$7Far9%OyA*q;|LRQZe)5R$ c@Qah9l|{opIBIU(w08i1w&&VjcXy** zkw+LY0XLO692v?)serfvae$M-Py`F$mjJdY{-H|d09BtmI(}vLewe?R-hR~D;#C0 zRgwXkqch?>Me9)$qoa%@qo-%0dXh2`q=}#mI7zXjku@-A{D(nnvfyH!wrAtE;LL(~ zR5id7L@*fC1r0h$b`uoCFa)V5^m-g3aHZC-av|KWOdVvf0fm>vfGSFURAb~Sr5e?O zL8UPle1Qb5Ux|ka28;-C0fN$znoCijz$b8l8rd5)F7O2K0w3_J3dB+gY``O_lH!r> zLY>&Y!vGAe!;!Etq!ynqVM0-h7C|@S0T~jll-C9T;RK3QBlDnW5tKPq^CrMrWx%PD zTrNr8!9|{%;=GDF1|Fkfi{6q`(X-@ir>t-0_iD%+uV|WKz&g+E_{9v;Y%o z;AjRnbG#YPp%^IK>~c{QnM-Ir0}r9GQH+SVx5a2Bvn8UYpf+xI4yaBjK%>RWa=g}* z7L3=b5eQg(SsWrG4;IlFZO{WC={@Q+22&)L8sub9;D*_|PZtn(ldf=!?k)VmO6l&x z@93KUE<7Gm-oyFb06yIbOmiig(^x`?f9EQ?ciS^_5Dp*2+A#43fRn^K1o$Df4BrsV zKabKONK%*GR#0wkh`du!m0pnXddnH#OmE$xW8v&j+VEWQaN7d;lSs-k+r_P?>#{=A zx1gb_)#0ld;)U5+14$jL*NcGbzpSciT*0VLEX~KkG z_Afos@|mG;(@**P{#?>_c6N)QHM4rw#97%cm%H|6q+6gX+bV>~W2$>3WJ~MX=H&Wu z2X^}+m)T2~R<||Qhb`CMJ$U#kRePi|bh^*|!?|N`&ENgvtD7I4){A!bulf2q(Ovg; zC!j{8%*mI(m z^F+=3HM2H$>}&Auxp}>2${6&u_VhHz2lHB;)7N_FNjo!>kR3C|Hy_JHHtacmz9)Ix zk!?5jw~YU)VccIYbiC4icGSY=^S>g;`<*L-y9Qq7vX@`}V(aMji_=!+rLOQUZ*;cL z!x8rV(vRydB!4vAIR;%)zdpV9k2CJ%O^qKe*uELvf90D~k;cj}zO>|2`H#B|`Q7d2 blLHU+J^p!n|H!^~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/lead_concentrate.png b/src/main/resources/assets/emeraldcraft/textures/item/lead_concentrate.png new file mode 100644 index 0000000000000000000000000000000000000000..d802f76c1d6adfede819b613274a7e1eef890280 GIT binary patch literal 1814 zcmbVNe`wrP9FL%LtrR!KF(#uiZK2|FdCBE+$)j;??{4i4uikEly@@(=FYoSRFL_y# z_O2DQ_ye>$9rX`kjOm6tCQK2b2*NhU1piTobbtC!2Rc|moIgMi>dW=+=(L+ zY&*l;wQS`JK_T-PM8u95CMn`b-F7LOVFq^BT?0+vfGy&(<>=fmU!LPw%hb8?SO#R= z1g==4GalYQGnPj)6G$_;-H);Zbw~}^I560{U3Gj|*SUsWNXOx{z_ATTFrjlpp+mNi z$+8LJVKx>~cqGaa8`mPD0yIh9#Y#Yo3m`6tQ67j8C@`wA&5NVnJhKFI$vsV9^h@U| zLEu6`sMTtbS~NnuvLI@jCICs0B%UI8f7%I*I`8;BEelEPBhPXJi#Tj((I}G1K<6ma z)evmAZPxLdGEu>Vy5S091cV_qfF^3=+)1z6aBd<2SFw$qz^7QTjdd#|Aby41#B_W4 z1_xByOs4H)T`soWcHsx9DH=vokaf|1e%i%C4*O)%LpU`>Y4(KCxG>>iBOqR$kZLPY z*%oCskq8r`vi;+hW0IQx@R~h1X#`m3BtYc`Fq078f_Dsh=tv25^~ zsLDJBQ6P)4l2Vl7t^G-YCc`Rd?KkOuF|MgaNh$GIiz6NsWz1_RZt_Jns;Dthjm6AZ zYyab(MNgqoy=^<;*$m4Ej#@rV>~!<=?8k?iqpHO=Dh3)TJPA67!Vc zteUM=Fg1FMx>$wzq!iQ)4-b{8S{o@n;b#1OW9ruIHunn!IM)-Hu8f$A>Rtrx1U^r|yVEWN+;n<<3J=&mm$xDm0xnD{rhw|#-58wH$ z>jK!4S~+1dpUyv2=zHL`AJAY9ckJ!lp}c?c12o$^H_Lr}id|T~nC$&)zVBMF^7q+b z+kD~VWiCGZ%~Q#XXWlkCnC;j5FAbiFEvXBye(Wsk-~TBmX1lk}Exoy5@4I}sylM8^ zsh_vb4ISdLr|)Erd^9m|kW8HYvHOc-Z(Zd^`!BH1AKy8Aq)sgeHd-weM^uhNA!M+nZ=>6)2ch5fv#@~4H%H8nz Wb62kaE^Z6|TfN6^Aqg*|^!bQ;@Dx z*$A>eOZ3+2wVpi;FNaN>AlCy^G^{{0f)wqFDjXjKI$96>qU6LD28S?I6r9*WtB3R` zEC`4dO)A*mRORKHg1ke(b`_&VQ3eu(fzF}Pa7faas1u9vGH`566BrtU=s_n|Vi-hg zJ=G{Hs{pl{Y&cI@Xw>d7Q8v;+Tb@B_lCl$|ouJG(Nin32F+0%sg+Xho;A3iB<#Ai^ z%ZUYaU110!5{Z~1W|OS?3CiJc5F|~|G!7BC)+p&*6qmHT1cM7`yecZXC`+ip$kodY zx)Xz*u7nU)lC+W*mkA0+L^*|^Or#M~3@GqPoYJ6%V#WoY03i?tlCD84mBcCmS(mkd z{4dnW<$DZ3X+55#jWvAjuui_?JA-2Tm!cSpow3>r$U=rBSD+qQ z5PgknL9G_XLf-?02_tYicVDo;Gd@`jb1+;n%=rPKNPY}Wipa2XNLHa?=$(1>yqjgK zRoN$o;DT1OyA*You{O$Kv*EOfin;6YFm6fHIf(~umlK21m_$)v%=LvnUa)Yu!$SLT zP-yYtg;ooV+bOf)qa0R}=0IY# zt`kPFu0%onGr-u|s=`jdVYe`b$u@}eZl3EsXyQSV|3}O zW6k6T19v*f)ae&m9xZzL!m>Q}*yVwqi%8uD*5CEh6IDxT$k=?=$hCEqY13z}&)>}H z%g=l1%4dVOU)!-zemZ^A%v0r`XAIx?viYzukxE?`6J`ZGUj>vVm*v!uAK^{vH* z?!5J9=d(+$EG)Zv2Y$~wbmE*o!=2$XTAwdQzV$plY`^@?_v7Vs+o$_-L*CT!mR8?j z`&?kFp3&OP-97)}dsi*3$G$uLtF8U~+^v!Prm}axF3UP`)-o~mY-QUgIduniym2cy uH|y?LoY*=tesSUC4>do2abPLs&tTmh+f+)&P3gArcX5|hx%x^Ezy3FuHdK@V literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/melted_aluminum_bucket.png b/src/main/resources/assets/emeraldcraft/textures/item/melted_aluminum_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..e5d43de5b50d3903c2abece35c3e2ffa94288bb6 GIT binary patch literal 2306 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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/melted_lead_bucket.png b/src/main/resources/assets/emeraldcraft/textures/item/melted_lead_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..911d3bc6f92b558ef527583dd841f256473c4f24 GIT binary patch literal 2158 zcmb_eTWl0n7@itZ3P@bh8ZO3;L%}vMJGY&y-O_fqv@0x@vO*!I;q1)W?y$QvzAnF6WkoaI9NF;(0&uq7wq6M4ANoMBE zIp6s&-~XL+W_!z;rn$2h&c-loZlpQfirzl&E-OXPid**pdd;$$H#!(L=LzpF!S;MO zAHzyd>#;VsExKA!&5R#tW*qu+84IB?tY$^d0%{7ncpP@lSbOD~rqzy;O1&O>}1+~3yioo*_Hx(r6J%@N( zv;_~DHpF?qK&niD#YNfA2(-)wmg6kVh!ibS3`f$8LJJBf4p{Q&&>(6q2)9#=cS(Yi9rC63k2-4{`T#zFTXYsg&FmzN~w_M#caL*!$o1Jcu zK#`86kgq=mr@?6sYRUCX{YnfHI;&Cn1P1tAS_eFT1nG2ouv5y z)5YQY93X0=(V~w@W65NSE*!V93#CyYWKy&f>$V`(3LUf4R$*fo3UjfSjirQa2wc;S znPz&tP%YyjgzZki_#TeSFF(cduMXJ$&3;q+VsY=4MGXUkRXFvy}ETes1h+87Z@sxgo6a)$FJ*}A`7YnSvgK} z8l#cC764?NrDc*2a8P9faZXAU=Z8(T(^J9td=1TyYa)_tM&-89h!Gsd!+P0#JG89w(%uKl~~PlKIc(U-dieZ*tR;JO!n*mSdT6-a&c@z$;_*qt|? z*?#ASb#^0muuH@CR@{`UW=ex9>K2Edzxeg-sw3ZA4%L&F*uHafVlOk>FyAHZ@D+v{ zt+={-09Iq~RxaTdl>fAJhk9_=`N--6?H6uu{hVny(7xoQSx3!%Rfl#p5N}oPP`?kr z?9tvG*>B$~qZbb3_N0CuUWLWBymM{s-qF2TS&=T@I&EWhch7^@f+d@U4@!J}&({0u zzG$Cob2CQP4=;bTZe;!41;=84_LpO4M(J=?uM=X| zvD%9#Z=5X0Hl?ng{H?UIthcqZ?Zo+ewL@2b|LAPVwnam~W`0?E#rq?OG_DDM*08zv EZvpDV)c^nh literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/melted_nickel_bucket.png b/src/main/resources/assets/emeraldcraft/textures/item/melted_nickel_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..3e03c97ac2448b0afce04d97357678c9c5cf0487 GIT binary patch literal 2312 zcmb_eeQeZZ81G2ro4~>u7#X3I1Oe%_z3cT$Zm`{r?Z$45<2%wXiUVn_vO%m3-NMo-@g65 z&+~hJ&-3(cUu#Rlr13MxV;D9m)EJDQ>lEi0I~tv5-MRzNWt`FYgoR-fraDIjwr~G* z3>(v|M%(PRaI+-q88=Y$ICSSS20~-lqQyA_$nDU^<1ndeeq!+C0D-HDpIGG!(_te3 zQ)=Tn6Rup>5|!7r%c4RouE7`OBxE21ZGh)8Y0Z*yej;yILStu|BJe!KZub+ljzhdH z+=>Tu6XHHMN6HNA!FkcmaJ1-Q7vdh8;VGJ@7%xdP63t0o5ikA-vkYH2}7!>2CosjZCMK0rvPBWc%uE-Qj!wl4H3t^cu)=25LZl&~l zm@YrQ%K?%$94`A9mP;m6c467|T_}vAAj6`qXtx2W2(eg(yQy41@l6K~dExzy|*bR%9umn;C#&Rx=<8DML#Vcv(p)pr>^cIY#Wf zL+3+*K&z=I)HHfvMH=exPP?tNMDk!a2(E7N-1A&%Bk_WPvjMFS61;}$G zkbR;6JUr{+h0^-vri!`{q#xK0>XyHyC|RjR5m_kBRcDWD}Gdf8LNgU2(n{`hw`hJ6+MukqxowNPr*KdUhR zY{-^SDrvOOIK%P=hi=MSB-D^pCfWdfvFkT6tRfx?)<%ULZ|wQFY19hW=7AgAryiPc zELJy#!E0M*XQxc8d>Ws2>9P0wx;~p4oWN(EY{6ac-l*!``hn|&>xZhuwC~<(?yuV4 zL7d&tDc;^cIB?C_Id)@D`1LJgW(Qr*Mc#}&A6XGe9e!u-=hqKbEa|_Zyn0@^?3H`q zmy@xYtDjWP8`U^}Q|x5uy*ZUtFF$i+>)`T=7pVl+_6UFK)Q1Po??B%NFFn3RYlzJI zF|r^=Z?E2bbkdSTZL|CJUFQakj@3I)H}#%w+xsxK@Yq9>Z+|s?Y0aqL{&Zcv^IEoZ z8^>ctb;IHFYv}1eGqGRYgV@Er(z(O4uJ9LTRR1&!eADIHR)MWOv-{wgB)0TGCHBg- zZ%?=v?*6*3s`u?!zY4Ik-~aMy&&8Y6vlZ26en0lnty6YSq-o-o05*3|XzfvT-{s>o z|Jc>;Z9KlqZeB3DwW)9Yz`*E^r}!^s#%eBYcp;QNapCH+-c8HakK4N1`Bn+lw*-&W Ht=ae&B*OVg literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/melted_silver_bucket.png b/src/main/resources/assets/emeraldcraft/textures/item/melted_silver_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..f67efc55b8dd9b2a5fab3e20eb7f5efb85a78965 GIT binary patch literal 2314 zcmb_eeQeZZ81EU`6dbt(Vu(?xT|ywz>&LadYuydT-QW&)V;&b61mfOn-@9ve*LH2U zyAe#($pi#RL@?+KL}786kw}DK5c!Of5X_Vq5Wmd0x%<&l(7gVRf_e29VpKjVEAA)dIw&eFq3!RRY9fK1xT8 zAWW;_6((G`qB$?OMxzxUqjJe+D=sX%u?vM!O30{aE8cBDDh4gR)0AOj7ou6~L}N%n69QW| z6tkKIDM%Swioh$Gl!AIjH<4q+ z&O35G5)8JOdQ#1x1uHgh4jyR?3XCWSBswxsMD1Hc7 zo>Y7ZhV*lspAmH`k_xC zfy|43!1_4W=P&zTV5+DKLFS(AplJvGqqQOCt;hpW^43vD}x`Zod{6-1^csciWWS^XaeEJx@&^nEdBi!Fy_4+lRkk7Xp2k|BymU()BnN8=QEe>*f77 zCN}OrxM*5%(MfFjkK?{lH=SGd>hZzhV}qfgr*|*?-L-k`yi32X$;_SL@}7c1?&3G+ zx6S;NKfdee>4&O%TvI1SuKfHk1_yRE?fdSzpWgZG%R@}R+Pn0AtVLv|)E~g;$2Yi) zN2|~5IrK{E^Q1fU@v`RETtl5VQ?tLl`o?N(=J9L04|en^&%Yj9H@6n+KdB}<2I7ag z6UR0zd#mA-^?T(y0-Lep!jENMm#8 JgE?(4{srKQ2bKT; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/melted_uranium_bucket.png b/src/main/resources/assets/emeraldcraft/textures/item/melted_uranium_bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..52132ba820bcb6bb92509f8f71d7c611d7fa7a46 GIT binary patch literal 2155 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 GEB^xRTn3c@ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/nickel_concentrate.png b/src/main/resources/assets/emeraldcraft/textures/item/nickel_concentrate.png new file mode 100644 index 0000000000000000000000000000000000000000..cb39508b57e5e23ff14771231ae161786ae6232a GIT binary patch literal 2151 zcmb_eZEO@p7~X0_rGPmKF_kDROC%`W+pqiD4F_EB3O($V(q2OW6Fav%cemkoXW8BM z?ub~66lg*NM63dB@JBV02*e-8L|Z>Vlqf$iG4g|`A%U321e=fuQ9_-)-d&0oB*aa2 zcXsBP_v3k=nc4o9=JoTc7gZAkF)!K}X~l1sb3ZW)KbPE`1o$=EXxw5E#GD1rT|pch zswIe7qiVdv?ua!>GSb{YK?&&2X$D3U#Huwp1IXK`J)pbTbrLfY{rERLF5i zcEno9Fft+Ob^BXZ#tSkD$ zUqLEu+lIt2*=*LG72L>7F`Ouh49hb-Ph$ja<#ik6Xx&;?vJiomY^sK>BAs+Bf&}Wa zgA|T*Dh16bo7Jr%O_(qy2MmUDvrb9{pdy!XMwgi>I9Fr_W}pUj+rn6`j5X58Mphc# z$8>r49tW7(Sgh=0##l71?834ex^WssLS{r;@w@?>rBfe~QCAjPwoZq`flT%7Yr9#--MR=;KU zOz)3|!!0ICsu?_BwXUxxqYYsnC;EIe@8$~O#$r-bw``!xFd7L`m>;*QDw6Ey6F#4; z&|*>)X$U+CI=~5DT4p`ofC7DxPlD3?2$H)T6_n;Hczz&&rOC4*EqZ-P+9P<9bb{wu znv$<= z;F0MBt{a^YL@^^%0{lk}Icyo`QIDWvEBb=i&7D z?`q7r^#0d;7-w6Zk{a_*6&A*(ZNa#lg)Y3WJI(TefD>qGD4t z5{d@~&cE^DhQ~v$y^{l}Lu*}gt{ka9Fxb4_pFBl$)(mj{Utd_1 zA04a0PtWmh4lVzJ$zB@Ydg0>5URSRR{CMH&`1Sez!K1HM)%5JL+OHU0yQ(jbs~>$o z(SCjQ?$%9yV|ekNU(bEkvv=Z7<@iDRgSs1CZ+@BIU%zzU`M&(naKKnnH^?@g zt9s|Fp?xa`2k$O7UfOoOX3MdWK0f_%Q}+&i<(;wDHRG<>RMXRQ`G<*Kbmo$NbS|N3 zYZp9r`)szRvZ)!oa^yQ4`H2nd?%41Cb?cYg71eLO|7_#Nm$x~;0?~%%$m#md-G2jB C*~dx% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/palm_boat.png b/src/main/resources/assets/emeraldcraft/textures/item/palm_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..9d7d6888a2615ba4b7c441d6a3647b9afcc8f110 GIT binary patch literal 2061 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 F{{TReE`R_4 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/peach.png b/src/main/resources/assets/emeraldcraft/textures/item/peach.png new file mode 100644 index 0000000000000000000000000000000000000000..dc0b29dd1682fdaedf52bffa8357a444a1c25a2a GIT binary patch literal 2082 zcmbVNZEVzJ94}6mF#(wj5?FwyBq(mZzT91}S9Y7*-P|2`V~o>HV{lK~=kA(aUue7C zZ7w)jNI=6E4HzR)2w+&^OPp^6hoC^*2O}o1L!i(2tR6J*uvA!F=tQp!YT|a zeMX6O*d5V_1W8w2K-NX*%BTiHV_0o{#sE?mv~dw86fHnZd~kxm6*)k(d!uyJ2*RWi z?la-$zLuEO*CqL7qP`BV%?OAvAY69gX0kIh_>QE z-GsQ;#gP)@VR4_|#c;Hr_0-@j&G;zVM=@@aW(1lO+kR2r)ZX9SrQ>gt5>r@hSaRp1%?o`BvUbLMb~hL5r}%X9Uzd> zTnMUBq}8l^noz>13@|9hMLQv7fwEM@8Qo?o>s*#7n1U+QYztwTBGyRiwr(Z$n@|^D z-{1hHHX1GZm{E(W7F}3&Qx6IwpO6{RR;<^6R2#JPZc~CyJxJziCmKTtnh@B!8PoMt zp-`;_$#^j66o$v|YgaT`Pg`rJ*}xF6VSr$1lx~_Q8BdIH3vL?yt7%@K=^Qkw%Sya= zMkp_Md^bQ**T}#I{|lBSA+DP$Krt&SNI=Ta5(Hk%q!83ox``Ykb?)iUBf(&+smGNR zdSSISH{y||AjkMQj$~a-R&F#ZL^R6=ngk=E0DBZQw3NfEe368Jo5#Yuir_V~Oq%X)d9;R^N} zO$ALMNZmFMnwIOSD6ll3h%8iQD?dw(Adz3Cl)Bv9%DRN4UN@!PA`qbnNuK8zl9xO@ z323j61b~CA=#h9Y&(u=R7$FKgx608{*GXpbpKWd-tT=jl^C~vOtwlX}wx0zcIdd8y zB&R{0{N^4jGt}qS@|&|yCm|x8rE7CAOOM-WV8Vt3s^zT=26Z$27U-E>{jGJ^Eb6BZ z(rv2GCs#@WEdkM|pCX)ivenI%hWc;SvhSvSPz!MMm3EfJ?E&2sHyEfPY7=cAcTHSc zj$w1^BB6#Dzx(j>$JJ90%-?Zh!wA;ShZiRYJX-BQyD`3|hE1&@#DZ?**_zfM-Mix-*s)@_j@P%s}`R;_A!5K!t6Npi1zD}$G-|*t(lsv z=FW~B?>|XnH1^9MOSjGKd~xxn?>?-0uO?i{Uz$@=LE|f{N6!tuT(R~pZvNMKYwQH_O*Sxe+zELuPj~Te&O}8)Wr*1etxraL;RD$%7Okb zmd~p_-Sg#vv2Q-T|3Jt1y0c{^WY687S6sc*z3hj&d)DDYmVs5gQg^;b3$B0d$fEHr zXU?s_SC*JjwR7ybhrz1Ay1kM2&t4$L_l+$1eT?1t)3=9)DxY{&f7UMFLSNZ49NsaE wy%U}P(o+XN8yc>e7@AtOv3}bTb)bG9^|!LW;%#}wq_c}hnp#3{GpF literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/peach_boat.png b/src/main/resources/assets/emeraldcraft/textures/item/peach_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..be1bf151c6d4409b41b048c6313782e50c832f2f GIT binary patch literal 2257 zcmb_eeQeZZ81JSTZor~r5d4 zBg(fh!v+f|L?8+Q1T_NU$5dcC191ey=O092E}8{Iz!^k@1k|^;+hyoLLTu9Z?fd@T z=lMO)^LyX7ua?ay8k{vE3qg><-ePw-d_Qj7k7dB;nBV^5;VV-qo~t3qz#+z+hHTn0 z3_&suO8z~gSebQ2hwfaujutk7_X z&heF@E?EVr)ojBBim{+})=b$**1}9eEhJ?pNIOB%I7xA&jiXsKd126-Dh9c7_w=MM z_~pbxx~^~p5sSslG1@GvRRqPdEJ0cbiv@=WT&s`jd>oHzV|y*QfhMSuqDyiVH7xQ0 zxmI^#kZDf{5hZ0dswL9|6Gp^&g`mu&5mEvu3MrgYtA-QKMS%ce5CKtLgIFqsRYI~Z zYa#g_rc=XrIe@A4`BFam^Mm?R-9oO z7H1uF5Vr+wf{n5<3?qWx`7>1su0lTi&~}WqX~>5wmNZz{`sC`V05!>0SV9wu;dsGV z2~JEfBmhJ#*)8>#fd`79$80PFpwav2q6enQK|RK+ps)&N>p`SP+>5`)*WI7J!y2%N zjL6~)paOW1VeB|-w^?x;ZRY_CY;?c^<@#^-4xD5SsnRrOVS1(dknEG@g%BUD0&sIB zu!oQ5!SvW)JpC-a|1}=M*j9U_M*LHSiLpLgFf3=H3-0SiGj*WAkJOO_qA*n|Ja9g3 zY21e(X$QRSLcgPF=X$DmB%k~B;?A1+D}VB?%NWpte)rnCtnZ&HS$Wws;g#(2-NM$Z zXzddvH`a_wKQimlnw-OhrtF=V$)q;yY!WAzILuObe3#=|ZNs9Y^~;vaFLmEpe7keZ zo6Y6dnsYV)&xpFpk|h^9Gj>TYoF8zq`^DDS)-B6_SIA)Z$A6AXZ*uH=q@q<_w0-8F zwB{DNqwS^%`JpXy*0{#0xnE|NezxOi19|=VXAhiNPc`gWv8ge$fVho%ZX?o!wk}_K|C+KN(c{?ywIBmL0do8;{?5V=s!l zwP%wPK~^m|b@3vyo6DOuPW-m?gYetCySS{cZkpbET{yqA3rCi8PbgmezH?yij_WmR zJ-gZ}at>9FJ=gk7>+N*g6xT1ArBAlS<_fEFGEP*F%C9^nP0hpqXquQe=~%!~+};tR zon^rlo6jI6=QbXEXKB%@r<>FFhr&ZocMSP?`n+$RYxNvju-divmC4Ort~~G1rreWP z=2Z+gwXZ!E-CoyrW#fWLTkdR+e&p#0tsdDvY(&8&B$j_hX>PuA^4zu?C(;hPI&T$R X-LPNnDB8Tp`04O^X1MoEt6cUsX^Z}8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/peach_chest_boat.png b/src/main/resources/assets/emeraldcraft/textures/item/peach_chest_boat.png new file mode 100644 index 0000000000000000000000000000000000000000..29382384a5c9eb96897b8865e688f18719c38b46 GIT binary patch literal 2337 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 YVbJ-?nM1EQ&E$eDO-vV0A3XHp-w2a>^Z)<= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/pumpkin_juice.png b/src/main/resources/assets/emeraldcraft/textures/item/pumpkin_juice.png new file mode 100644 index 0000000000000000000000000000000000000000..c83eaafeb1617284639a58b2390b9accc38c0d81 GIT binary patch literal 334 zcmV-U0kQsxP);QsdaGva|L$>UqcZL^(;6vGu(gm zmEqfr1_lNO28MSZJ~GJ6xQ5jtCTxQDUwvixR$DczJ?+U zTph<57#J8BGETh2YBND_<>~kT|9>e%@IB`LvHgesldO63`8WUn?_q>vq6|USd~-R& z|C`Gh{{O$n48d3o!5Rk0Kuwg9fk8$Ag0TP$1Ma{2%E0jC0fWz5QHX#NL`l!)wG6jj zWBLHYfK>+&@vSBbjkzZe2sso1{!bKRi0waw;_vRY7jOn5M&gL=Kg6(zDTE>J-x>_X giwo`W<{h#C00pg-iUSK{_~CQ} zc`8M4muuzDMGPke4J;Xau5FTCoD%AX@G$ zL2Z%(&>Vva=csHNHCqgniL}t!Stw0XW`Z;mlo2N>hBPro3mUyJXiee0jLSYRY72f@ zF~6qC3_*lKAw$S$kQ5(5Su7TUqzRhFAp%!xM2!vOqMAO&U*IL{Fv0D?f&REVWwSlKUWlIoZK zg*vwUkO3&I(;2hzNMC}%m#U+JE)Q|mrj>yN zp%?3D6vRIRjI2FS*kf?mE%afmO~H>?qXQ!BZVGH;v$q`|K#;g5hrPg^+t9S*?7|rZ zGf(BG7Vhqva0I`TzG3d={k_Ti+9!0?Z=9KzIPFB;$wO_mS?kvhp+j9uGrA5AeVKqI zY~8fG-`nxhg43Rb==PRIDS73^1Fg$f?RxJ0f#Ea5-6@4A730qZd>gFfxuqYtmRH2x zb!Gn0^ui}MCjM!@Q+2-h_Nq>Zf)mhx=w_AWu6o{WTxEKU;{{E4X=a!#6*jlw$sU$@%K(2YY_(Kf78T zzI4rh{ltq&e^nEwo=Nj`w5I+RKX~E7NFvfB*6k_37WY$H$W}eFW>RNbZA)`}{I%yOZ~I?VtPeaqp`;dcR)w#Vac|O&L$U6*it+c?0_+=c9&g i_jV@P)LlFv%xP!xy1#%OJmTy0GKFD)%-D}x}S2d;uT8cW~j}?X0>Po#~7yV{2_qLz5a!jf-Hh&<4b_I)}^s`0m6C+^l>p!Md@? zSkhpy=8(}74E8wyyvTxF)WB6oU}&Z{;HF#zkqA<>B$QSFu%|~+Y7MA6IBK#t;I^-h z@7b7!K)(KoIyBYpy=)%IRgi8jftBt6cW#f-s7BhXPyo`hg5&8#`UT}ji?rOL*)Mu0 z*sk7#cCjji^H^Utmx*81C&IF4~`|UgE32^83 z0^5L>?Ysli5P^>{z;^YXRALH%iT{rbXa)e!*&pO;4q)TXEQdRACT9VNJQazx;@G;1 z^rt{fj04cTEdmSO0l(+h@Xdb!SYxxiMQw&3$~0arR8PawCLk8F#^|qe?&z$>hlBd( cmyLG!4%0r8I~;QgIsgCw07*qoM6N<$g0O1Y6#xJL literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/purpuraceus_sign.png b/src/main/resources/assets/emeraldcraft/textures/item/purpuraceus_sign.png new file mode 100644 index 0000000000000000000000000000000000000000..6e88d4faee090c3a455456ffd72051673eafb447 GIT binary patch literal 399 zcmV;A0dW3_P)LlQByJK@f$%lb8zx4A`WxFqM$vP_VV|fA|y9rMJ~q zv`Px$8X@2h2q`3>a%#XJ2nh%&grx8YTtL~q6V@W^dMD=*&1-gdn0fQw3~MQ+SOzOg zRRcMFY1KOlK!^|kDTPV0?E(OWLLMPPq!divCmdeXETce(kkj@VQi?<|z}?`QX175Q z%xHES=@z6EIOQt+Q4fIrsE6yhCebNZaXlBOT%9-kcmu%FLu}PMDhOr^d%t~s;JkgD zv;df{uIDBc#Nz;!^$j34L@5RRQO`)!r@xQlVBqnMVHq2=ZH-SW%`(z5uV!h=7cXAVUBE002ovPDHLkV1hR|sjdJ3 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/rougamo.png b/src/main/resources/assets/emeraldcraft/textures/item/rougamo.png new file mode 100644 index 0000000000000000000000000000000000000000..1babcf3830345cee330dbbe4db8de5f465097e4c GIT binary patch literal 1915 zcmbVNeQXnD7{3`l=A>f|<8W#?4it>L-d)>kugA)y?c6%)7^TP-65aLgZF{V}JMM04 zHv^8vk1;|53M|aI1pW~G1JMN0h_X5S$o^OWH9<6lNn%74rdb?|o9KI8+iYe7^pd-K z?|pyo^ZcIQ^SsaPtf{Ur#fElsk}Kpf~CnvBOJjZM0+lwB5%jcEcyQxLtug{?6h zqP6}S)FZ0^rOkGnr)(C~;WSfr(rK}kpcayH5Tt{ktT;)rq@A@o(e#BuZ>kVx1Ky|8 zzTlS&i|V?<5=0`AFej{LS&a~s)9EBg3t_R~5P@sWlFlV@Nn4h&-~}45ii$4E5^7lF zLUN<-!XVSh5aLSKtfZx7f`SoAP9Z2WX@ryl3Var)G^(+bbAcy748(z?YYk6w@6Y;}kxM+Db)o6yO)!kKATy%1V6y^<0MO({l?UZbkmfQY8in9SiZCtxEqp@wB9T zl#?O=c2fc~LLrR4Gno+L-?>VyP3ch?IBa~zFxzqAN494J37S@6M=rU%dhYrW67*FW%OS;ggZh2FyU^96*u>w{Xq`@?UwPZOO|5%+Q`GpkM0k2Aw!3DZ8oBuIFX-O?e%@Of z&ooaQ$mtuXGrc&(fBWc_m#fD5P82R~n*a8L2mP*z9cO?3>i*6Xt?M=?w-U&nEqgy} zX%oJ~4xapN{_3-HU%&XxnRizq3r3FBJhd;-p8E&?=63V(>;0iy1IhPxj<4G0X!*$T v$kNUV3po0Va`n_i2l^M0e|TuPR~6b8-WXMmb<+dajo+iMyxRMYyT0uoo^Xix literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/sausage.png b/src/main/resources/assets/emeraldcraft/textures/item/sausage.png new file mode 100644 index 0000000000000000000000000000000000000000..9e4be709284057809142c95f84749237f87d921b GIT binary patch literal 2090 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 In^&#<2R0CyU;qFB literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/uranium_concentrate.png b/src/main/resources/assets/emeraldcraft/textures/item/uranium_concentrate.png new file mode 100644 index 0000000000000000000000000000000000000000..563a541782d226d6e33ba0595554175a38e5c81c GIT binary patch literal 1905 zcmbVN4NTl*81CX&05b>9B^yRpx&=|}_2=$-ZQTvw4!A=P2wcWt%%sz5}>Q)w(6e0++((m&&!*`K&=dXaz^>cp<@KvDs+6)A_b+vUbL;45S zB1qn>91NMEz{9+#CTxPFhJh`W&>$K?HdUrHLF@n~8U|5Wabp)pj$o)Pxv^GffDC9J z5R-j9I%w%>2#P%&A}3*$o6$`v9ug#gDWIuDTrv2R8%y)@aBNKz7@CHd9d4}3GKhu( zO{hoJ0qV3dxJWr@)Wz8-hU93+{U}XRE`oFslpQB2o@97Chh{DeTGOQn-|Vf;*n(ef zEM}S-PY}su(w4N_R6R;i9LEtPP0%zB5xCKWFrtDUAB zgPzWZkkE3pijk2C3Pz*^ji79#6;c`~i8-9ssmIgCC6NGekN}ElKrEHRYBAMRjhK2J z>fG`*2B5ToK+eXZz9bSk6NXvS1;fY)vMAaJc58rW28PC2{CVA3v4HQ<5B$&egf+dlUsCq(xG0O=d3J6V!VrWiD-lN7<9U6w- z*%!|HJ)S0AjmUAhU^LfNqy8EXLvaj)(>5yYZXm$>6~h!15%|4s4C-T(Wr-J@91SGK zg_B&^fzzym!UamQ;||FgVI+oQL?M#h?^VT4s|vFFCAgn*acr1oA~@h&B2I=K0Ov%P zgojx>!#XL}>6Dz={f)W|PoWUMX&&orTIIw0WCJF)J9Bzkz~h-wTt?Fs!waHy65N<* zl>m^i%(T3S0!xcvo;Dc+kn{$1F%L7;h?x|0P!)x0Ev58`>-ld8T{rfAY5DuF_luV5 zO?saZSBwct6u{<6U{*YY)rRI%L;O2y>9qwdD+`Bx&>H3%F#O21aG*eH9X9AarQ$OP zvaG`ItqQWe6T64&Z>cJJ?#N|5Rd@PuMc-ug;mNxE&|A;%ZEP=DKRShm9y!%N_4U}X zt-J2{XskZJ`fk)W%9Iw}HooRKwPoaV-#~FQJ48P4MdhDg&K|nGxNG>6eJ3BBVCx5e zy`qK+M|ZU{8-0BngR2fOP_391oPLALJFhB9v<1jg&Rcy=P1pyi{_}v)f)hb9S)ot~bvP{q#>;ab51HF)Kdj$>Mm0t*iLdQ1{(1WQ-YdwlfxnKv6W@LC dx1V;*tm-dFUR-WWw^~0%e@%n;P<8uL{{WTzgE#;H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/item/warden_heart.png b/src/main/resources/assets/emeraldcraft/textures/item/warden_heart.png new file mode 100644 index 0000000000000000000000000000000000000000..615d433985a4bcb96a702923e606f250413f9921 GIT binary patch literal 2374 zcmb_eYjD(56yBoJf`DaUP!uGjIDnGPYoBo!rtGfm0$WSj(pD76CO6v*yGcmW-E9%U z{%O%EKRQ;BB7(xe;9yZvL|qg?alk6r;iZF5UW!cZCkFTw{`iN5uYO8#m1Z*CJ;b1(>RKxAo@HvT4)$VDg&j6 zM^*u1HQO+bv`~oMX(nxild?=eD1x-(gdHboj361p#?VeAeWB2r$_q@H_p!7s_~k~c zbzNa_JRXmmI*sX~Kz7jvz@hG)$ZI5yHU`L=Q9|^P*6D z4b&MV35Iqs7V0V}EEt~E*_(oSjuB)v%0hR=C>sX2B85>T8$`w*+>Cn?ZAeGNDGaH1S^ZtmXL+8 z37peTXXPJPMc9CB`&ZtJfqv>g}myFz6M0?c6s{vGcgF5Yj zX|kZlSrrt9VfJp)1^D%-Yi#Vs#97V`C@#cfc3=--fVL2@ltNaFqe2#|gQw^aYsol% z4e?CZkYuK7{yXt>NV#fO3In*ilYVKo_odh5PGqqF%SLZyX2(_T|c$BmM1ykI$<7_A2+0nL6 zKJa7S;^vRP+M&gAcR%^y+0j!>m35CE*|Pes>Ge`Wu%W=VYR<6tj(^`WVv`!Hf2XlM zcyv&E{<#iO0NqtN4qyGR%C3!vtcmxZdEn@vZOkdYeZMIFHLK6k=+8^XE?SQ*ntN&R zUSC_oo143yJ}5qCeQC`-qwd&TGQ)H1u&tH2aKP`XnAKC4etP8YTw*9Y+NSC4hPTeW^X6l@X}$KumAjaJU$udUprl@Hz4_+`07 gw;e^#A38tq#MYftn@|2Q-T2e-`%1iTOrBf+FCm&VCIA2c 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/item/zinc_concentrate.png b/src/main/resources/assets/emeraldcraft/textures/item/zinc_concentrate.png new file mode 100644 index 0000000000000000000000000000000000000000..8f5972ba232488494239de583358b64343f6f9ca GIT binary patch literal 1936 zcmbVNeQeZZ81F>pHY83N;@A?qqR8TU{kpFTIs$Yw|&{sD-~+(!txh92#JWA5HvspjKpblO3a)fnu*TMx3{~?(1C$Wm;6melWzkjC{YV9Dgj_gL{*4Jkk#c0l^0rofd)WGl3my@?;pcZNpxY2HXrFz z-5@O0v}>TDz1A2GZsY)5fsa^1W6M#jY9;kx5);dz-4_!+Jgt^f+nekq{yi0kq;;_ z!-YYnvnfQ?j9Xbx$pi%>61+-K7Sc>92^574PK{}iWN=X+Km&7TAwcyV_q)NXeNYiRJFo1Qi9Bj*8OcNAnJjx#54g^wL+RJ%xqN7tpVOp zG{2%m(uJx^Q%2oxvoKC{Rih+}N?b3UV*@U@-RawItm z^(mqhY?}*p;Iz|EF&xQoHu5?s>>80b`2Piq0vA-YC=YX%qI?JtsvN@5jFOyNi6|Nj z4B0Vr-+SHeI!y^m5xAk(udPJARc<@Q+U+=Pp^|icKF%xa1}_W1>v3UFAB!Z3oC7c- zV+>_ObhSc7sf8o=h%Dk7oDj^TL0JP9sL zFk1kKSn9Pjj{>)r!K~YO7(k~t>5EyIt^|!ZuYrmXRO?n+kGK(koo~H4`&+Buf7#F5 zs<+8LC9V+W8R0;Nt~EHIrxpgb zB1qOcucyNA>^iZFT3`8i!6(n3#~$j~+27yanG@N4@v9BR9mPF;N7t->qq{V`=;=*8 zCx-J&R`vR#{Ck4%w&9mZQP#oou|3XMoN#Y zEB&BwV{h;8XRaeuYim1pn1#B_h|Z+`j5^Lf|KjLZ~W_~WT(P7W?;+-m(oJN3@w zm2;;@wxNfIe%RD_(zg7Ry)Uq%`pC~Ee;<0OCh_{4zgfD1d*9;^qSUv2Usx12caA9oopWRm`?{U0UbpMu*%P)+?zCB*E zO#8C4V|PUP=Ds`J&z^O6kCz&+YGr#0LI=jxuLol@(?!RS0kyCE2`oyR-%M{+t!J>Z Gx#J&vN|8YT literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/textures/map/map_icons.png b/src/main/resources/assets/emeraldcraft/textures/map/map_icons.png new file mode 100644 index 0000000000000000000000000000000000000000..90a9e4fbb551fc8cd9a3aeb413abd951b98c46ed GIT binary patch literal 1950 zcmeHIT}&KR6doHjSc}9OiD?av!)hUQc7Ar5Wo}sr-CfG0-Ic%+D6I{%Gk2Gfow?)8 z&|R<!%Gc`zXwBS~qLG{l;wmBiS<1C^LmApQkSZ4FA*JIn5dYL(b$ zCz+W$_kQ;~=Y02^Gea%0J*AtsZ6*k!RB8^l;`g)eU2-RWPSwlj@#`+LdB05%ci-pU zw-K+7JU|e4Y}MkOPG@u

}AGRg{3C*a z+rnQ#s>g9mz%ZFi#+&hZk(FXNQ4|@LXLz2*2-@y9963uHc4dJf3~j~IOh-co=`zX* z)aL{#?CDwvx>=+(?7U1^FeWRT4CiItka9p(DdNmNE1fg0Dhy0R9U6{}v0M>r_8G|YtSfC zwPgR_p#tCpz=}6Oal)vwBX0;+6_7-hF5_@DT~0y9G*T2<6cL0_8d=yd_RhC{UJ8X; zER@vJc)@PnvzwG6A%PPGf#$tj&fRDfNQUjmh61H^203mfajPx%Ren zY+V0hTyOex>enOslIPr;2NstX$M2a~nC|*x^7qmoug|q#_gADW@XeCv5vk(*IXO1^ z(asNNUVQn5U4g-YhUl>ii&qY=)-%$#?^P^Jb-&`-kIMV2-t|<^e)*Xk8|(PIj(K$S z_`c=Q6)=4D%H+&&WM=r2xz}P(&kk;SW_9(1=hUU?4_1z(E?*m(-PN{Qs`eh5f9sbE i#8+F0>Hi-aYw$Wz<~=wV9XXY8|DaMN79QK({oJ2x&6%kH 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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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minecraft/textures/entity/signs/ec_palm.png b/src/main/resources/assets/minecraft/textures/entity/signs/ec_palm.png new file mode 100644 index 0000000000000000000000000000000000000000..db559a8e88340ed4b55a25179a4aed452c3e884a GIT binary patch literal 3008 zcmb_e3se(V8Xgo8ESBS|pje$oEkd2lOx_s?2qZ$(AR;fdf|JSQQIbr|1QHN+%Mo9z zXth2nh^&up5no+JU9Er>4sVvd7 z-VmE(rDx>CB~m#VlvKls2#3QQ1TbKtZ6xe48OrAgxN(>*J+dOr~BJtWA*x!sr&{rD!%W+d`uWG|OaKDO!;Q zXpV75V}REs2th6ltVc>*mWA+>x&AfjlBk5Lj_DD7E4&1wK$NE%<;4(OKuO3`B_ z5=6v;G_&2k6h-Q~M@B=qJ4`oCu^1;Yfl!Nx1sV||5DKISiP1R7E)Nq@LQIHj@i5fg zIA9UnHR>{i{;|i-awcL8ZU))ierM40dKti-6-IqMh(xQ!5v^LI z(b8f{DFD{VTHbxrac$hjYw=@;zB6cxO%N1P?O*a!->RUJBOCI(eCq!-=3&2^F0a^zNPE9! z>c575?$nl_`=rR;aBP%czJ28Uj?k#1XPPtau58lP@*lNd9$u^7yS3u^`!S9Fi+|EV zE1z$4AfpGlb~`^?H1qQ4;>&%nWHzU_KRD2@q&#hSWt{W-FI@Mg?G55@8y`G6u6BWX z{Sfa!=xJ5yiQ*-9PW!gsew2JBdrzBb+@iLte5B9T$iuY;N9z25m@(n0`ZLa8NV#^< z;-y8&YVkw!u~jREIF$*_WDr#Kcu`h+$tl01vQf#GL=T&eH`E6yc3;%@aVqord;ajw zOk$jpmz%zJ?C{dJs_VU*(7}ovu9Nlf4m(`rd+VRGpBamtX=Sm7eF|xSpLeLo_Vyct zBW||TwcCFvocykG(%NcQg*=CQYF-7ZOgH4!?MhCm{Pfur=4$?p3(5PIoNqVm#<@Cxi4}Gs;nRxK=-K}Y#?@H=m zt`<&S=&F};9(+=f>+@C0v+)yVEZ9RlUA}!f5-kET&S{-p6C*#lY5$Oq*H=7tO;7#V z_s+orCd8*^gF5Y-_g8IQwGur$48FK+Wn&$BVQC0+D6Hg*%{lw0bR<anZBbEtw}FzH4~!^NeUx!?FKTY?|Hx9IJr#DA}=^&c@{b$P*Rj}2`D%NA6IX#Fd0 z&)HtnUWWhpEw`7ey&)!y9gJ^@eA41?Br>0nZS^3v3!f%m>Flbm>ZL-n_^9lMt& z&5IJO%rI#!pPB-j9DU~gd@TFJ(oy;Z z{IMw?oIUx=`hjb<58t_B=HBVEOjOI{tT%TUCiBk59thSb1_aMZo!dm~CiBltT;o4G z&lW#xUEHu)^mndMwA7kEba0IJNR;{`JZ{+66PT9DouMJOX1(R~sBM9l&fCm8x8iz3 zPRE%NdF50%9?E~o0$CAGksy-@MRqfR>KPB~f&i?!=c5K0W`w@?Q z8_r*D-Qm2RJhOSi$OeVChafbmQK8)Am*!vWzagLQo1K}^lA`dsStOV-e&@stTiWhl z+V^$j_TlY}O`2r(+26A0V%a}7FO=OYZ0Xo>K+(}BVr=ua)61(zy1%iNia7b+sJVIn E0cWalzyJUM literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minecraft/textures/entity/signs/ec_peach.png b/src/main/resources/assets/minecraft/textures/entity/signs/ec_peach.png new file mode 100644 index 0000000000000000000000000000000000000000..ba09c729e08d697079745e71bd1a0dc62dac3a73 GIT binary patch literal 3139 zcmb_e30M=?79PbVfPzm!e25T37k!dsX0i_;h6DvA0RaW93d3XqgGnYNfdDF~RVgB^ zwL<+^Eh>r?6h&-RHt|Wt4QwlQDF|*+#I-KC@g{7~zNf8U-^=$+=FZ&z{O3RCo^$V{ z2g+xSwsN!r0ARGAuQZ6d&!8?kZ3OjSl%KMix>;&{!}S1QJc@b)Ce$8gkdm)A;o(!?sAw5hM zNSBa0oX%tMnHa={=>ic8;)5cX>qdt`NWcaKY>2}IAq3|&GM%E`AGPXh);=ULA`Qi zGQ>}#H=r5}_mg@usQj=9LV*Zj9uMQ<5EF)Rkjde26-*INAYei`409E@0>_m60edNl z#ha^Oz+Pdt7ve%RiZ5g;U@BQC%vCalsFK6v@-ZCafS3^Ci3aQgbOhCfsOm5CP~GzH zR1C0)sfhH{GVA+$$s3LCAE}7x<}l4N1p){KxjZFPz*X>>Tpm}%L_sQQkPm}Aj0f@{ zCFH?2Hx6Y)?;G_IvH#d(Z#g5rgjqpSzu#ayZcqWew}KHAGk2yZ12dN-u3+@PCf>Fp z@0HO$T4M}Ok^VuQ_QCX|(qKe&xHy_xz4vJa_Pg}!(S$!y4~zIBNC+_@h{rQ0I*KV& zDj}vaN}*8V0!+z8sd{>cdI&^7F114rw9a2t-%pRlpqgl$+U(hk|0SOH>5u=8=dD}8 z|23Z8YV9jE_J3Ak@7xL$mhUGOhs3PB zzFDllB(-Zu-Dsa=KdX$ZNsphRwz3$f6gK@maxG`1&8xA?M%qmJj-zcq&v7ZL&uaHY zM`*fAYBV`@)x@aQY;^=Z~!U)TLW9*rpc+xAH3E{Ct; zJg%88L{tQf1^k2eY{+e}oNIN*ww%Y>l)89ATXj`_asK$`)**tf%tnRXq(a9z9piwt zSM4sf){5#Y;q!4#BP1V{yFF7c9p^CRe9iK$jfE54GkSh*6~{(bE+_^3qx>+SvPwL* z5Oms6k>gk&x9+E$F_{E!fAsC*l^UfVmb*XFR9v3pCA+nj7}CU_nn#S}0+$2z?I zVAtuRs!1tbz-snPV14oPbC;KFt84p_IPvHTw*jKc)a3ZA z>ZWIv^9*b8u;Y8IE%s$^B!x9MlFxkE3D*quElrnsk1gDNqan?@Tdic;PAN<5>gd?a-}cP3L`TC+aF9e7dWVF70n zcX>@aO-suwQM+A@yo2FsE)AARU6v7Ui@jQmVL6{fik+$pfZj3S zv!J-ykLDfbJj>_LMUGc5w@`z-^X?Z_eYz|Apd;Yq<9g?uC~{FsDe%E-^uyCdrU{$3 zFTRkz%q`%lQ|J8ybsOdf=h`C?1szL1ojj{~XJaAq^%tcbEjECEyrAp)b&JfOa*mW| z*~xDvJUX+dzVO(_m#4}%7e0PiSrz`v?9vlYxD(G`Z?UN@d{JN2knNJ+dF!8ZUWJ@x zV-?p@3Ml!-C85cJQ(T)d@};TaXU|5+V;{6d)Zc>FkGv(tJld;UeYYB(?7jCq?Qwnh z%+$JagGac^-D`S5UT)8YoJ%L?=FQKuC7a!rfBw)!oSs!x0Jc_TZ7Z|z`b2U$pl!10 zardhSw#&M^9j4Z{wDtUU4{lGjskgWJyt4yw_MNff=C3~gaGCR2Mr+%&G}b&@`(ab; zfsKKdPAzqvcRSe6HhixFz47)1OGIot znLcXYI)^Q^Rn9?E7oK^V-i?UUoWsU@(*mu&85-#@Coy!ZHLcUasbMnh#S8~++@dw3 z?B#+ZSGuZ_O#o`LxPQ&>i!E(iJMR>23)sm@wKC0b8Sb{QLA-0are%or?9|^D#+nwL zbfqOHy1TDVVe1zU-8C|lPDA7l_N$IbzOy;(Zk$Uy)cP^4;jrmdl`e+JDXTnmtSK~i bq2{Fp8SmQTbNKdg^Jl)Fk6c>j9l7dXAUUSw literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minecraft/textures/entity/signs/ec_purpuraceus.png b/src/main/resources/assets/minecraft/textures/entity/signs/ec_purpuraceus.png new file mode 100644 index 0000000000000000000000000000000000000000..918c60fcda66b04d0f66b53f01a7e4f0e660e80e GIT binary patch literal 1244 zcmV<21S9*2P)j^-6U@8T4<}JkRqf)sUb*3qVy6W z!J!8ZaOer~QEuGf#D~OzJK{n?+~5L#0H@q~XpthhL_!LcBNA#A$4=~IH#@Q8<*=Ud zuH(;2ZPets?D(Dc@yxvM`^?O4A_xKiZr=DUD3%M%=kfrQ+!EbzY=@Ft!m%9;!(^>m zsazdd@^m{sQoDUKmGpA!v)~`kA4kG zZi%#!0lmir8ltcLZuK6QGS5;I)uH^E2{UFE!spid9j?q>j%BqQLil~{z4+r+LJ~Tq zg@AwDEzW8!lBsOCsP-aiq6(mFmF-o|YA9PxR0s0ccEgf(YzKg1xuCMB#&@Au-M}#o zOe?2+h47UmhVjQm;;ZZ529E9EHN#Sp*{q2w&Am!ITB&R-2zRUZIA_mv7CM063|g30 zF1CnU>vx#X%&Omj%4W$e;d|xS_@nSY{^6amDj@Oxo1X?^r@}!x$CRD|V5hN%{FgvF zw%bvA0+`fO>@@ZO2J+npMW)S3>i#Z(YUgrKBX+_-8B<|^#ZD#W2T=ESN8*pW7bLID zUB)m>{{Ht5vbh&xot5&RWOFZe3=t_b_bOyhKNs3{qwU+DKXd-|SSkBnS?&0SVe;3; zZ7$5d8sm4{#^sNKm;_|mCR16Odll}tG^J-CR_ef^ePI|sTB^VyUCXjJtsK5rrsNB? zAB@WX{FhJ0s{r3CQ)~~KHZs&?M=A^MRwv7m1$XZamG+_s@vWp0%U%?6e8+Z>r@v|C zz~4|=jxKl*e_SN4EnE)(?5DyD#Z+6<-C+zO?Or~?fIa}N)|s?1m5u2fI$H157wsR$ z|M}L<@haf$SKh@iOt$v@h{k6~PY#J@Lr~dX4Kpmy{{j4&^M~&N^5!Scd8P5pth(X# zLqGnwNCK=?i%Q2z&%32qsY_kUC&2xdMz-xcj9*J-WBP{h7B}A>UzV?Yu2qY%QkT48 z{ILUI7$y#m(pSH;KN4E$=mu#refNhbKRWsOTpr2=y2tN#_K(UR7qLB{*EtTM zzNaGReJ_zopMHF+)l%nmx4t3NaIbqnv~Lvtxc30{GW7MO8^K;{pGLERWmtS!`0=4$ zE}k?bRpV3=JrSUv(vNaJj~$6GE`1mPoO}Ky)(a~vEaq8WD&V&2C!!KGPj~=4xPLp= zVHws@%;&K~v$bge_BU-77W2%UHgQ{Z(z=BV&T)nY;0X`6RcCprz}B{p49ZEU0&QV2 zkF8A~T5PT1k=9Q@0AwSrTLgNO<)s31`HLhPNotJ~Ac5tj0t<_ImGNn7g7w0R3c_)R z2C!K^rQJ6KC9$Apsz^ z0m{tpZ`vvt#~B*H)i$ literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/a_horrible_entrenchment.json b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/a_horrible_entrenchment.json new file mode 100644 index 00000000..0a07ed02 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/a_horrible_entrenchment.json @@ -0,0 +1,44 @@ +{ + "parent": "emeraldcraft:emeraldcraft/root", + "display": { + "icon": { + "item": "emeraldcraft:purple_nether_bricks" + }, + "title": { + "translate": "advancements.emeraldcraft.a_horrible_entrenchment.title" + }, + "description": { + "translate": "advancements.emeraldcraft.a_horrible_entrenchment.description" + }, + "frame": "challenge", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "rewards": { + "experience": 100 + }, + "criteria": { + "entrenchment": { + "trigger": "minecraft:location", + "conditions": { + "player": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "location": { + "structure": "emeraldcraft:entrenchment" + } + } + } + ] + } + } + }, + "requirements": [ + [ + "entrenchment" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/cure_phantom.json b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/cure_phantom.json new file mode 100644 index 00000000..ead6268c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/cure_phantom.json @@ -0,0 +1,32 @@ +{ + "parent": "emeraldcraft:emeraldcraft/root", + "display": { + "icon": { + "item": "emeraldcraft:golden_peach" + }, + "title": { + "translate": "advancements.emeraldcraft.cure_phantom.title" + }, + "description": { + "translate": "advancements.emeraldcraft.cure_phantom.description" + }, + "frame": "challenge", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "rewards": { + "experience": 20 + }, + "criteria": { + "cured": { + "conditions": {}, + "trigger": "emeraldcraft:cured_phantom" + } + }, + "requirements": [ + [ + "cured" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/cure_zombified_piglin.json b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/cure_zombified_piglin.json new file mode 100644 index 00000000..e07cc6fe --- /dev/null +++ b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/cure_zombified_piglin.json @@ -0,0 +1,32 @@ +{ + "parent": "emeraldcraft:emeraldcraft/root", + "display": { + "icon": { + "item": "minecraft:golden_carrot" + }, + "title": { + "translate": "advancements.emeraldcraft.cure_zombified_piglin.title" + }, + "description": { + "translate": "advancements.emeraldcraft.cure_zombified_piglin.description" + }, + "frame": "challenge", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "rewards": { + "experience": 20 + }, + "criteria": { + "cured": { + "conditions": {}, + "trigger": "emeraldcraft:cured_zombified_piglin" + } + }, + "requirements": [ + [ + "cured" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/friend_from_the_nether.json b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/friend_from_the_nether.json new file mode 100644 index 00000000..9ab2a30e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/friend_from_the_nether.json @@ -0,0 +1,41 @@ +{ + "parent": "emeraldcraft:emeraldcraft/root", + "display": { + "icon": { + "item": "minecraft:smooth_basalt" + }, + "title": { + "translate": "advancements.emeraldcraft.friend_from_the_nether.title" + }, + "description": { + "translate": "advancements.emeraldcraft.friend_from_the_nether.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "shelter": { + "trigger": "minecraft:location", + "conditions": { + "player": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "location": { + "structure": "emeraldcraft:shelter" + } + } + } + ] + } + } + }, + "requirements": [ + [ + "shelter" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/green_light.json b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/green_light.json new file mode 100644 index 00000000..c6a3fa9d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/green_light.json @@ -0,0 +1,56 @@ +{ + "parent": "emeraldcraft:emeraldcraft/hard_currency", + "display": { + "icon": { + "item": "emeraldcraft:emerald_head", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.emeraldcraft.green_light.title" + }, + "description": { + "translate": "advancements.emeraldcraft.green_light.description" + }, + "frame": "challenge", + "show_toast": true, + "announce_to_chat": true, + "hidden": true + }, + "rewards": { + "experience": 100 + }, + "criteria": { + "emerald_armor": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "emeraldcraft:emerald_head" + ] + }, + { + "items": [ + "emeraldcraft:emerald_chest" + ] + }, + { + "items": [ + "emeraldcraft:emerald_legs" + ] + }, + { + "items": [ + "emeraldcraft:emerald_feet" + ] + } + ] + } + } + }, + "requirements": [ + [ + "emerald_armor" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/hard_currency.json b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/hard_currency.json new file mode 100644 index 00000000..533eaf39 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/hard_currency.json @@ -0,0 +1,77 @@ +{ + "parent": "emeraldcraft:emeraldcraft/root", + "display": { + "icon": { + "item": "emeraldcraft:emerald_chest", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.emeraldcraft.hard_currency.title" + }, + "description": { + "translate": "advancements.emeraldcraft.hard_currency.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "emerald_helmet": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "emeraldcraft:emerald_head" + ] + } + ] + } + }, + "emerald_chestplate": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "emeraldcraft:emerald_chest" + ] + } + ] + } + }, + "emerald_leggings": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "emeraldcraft:emerald_legs" + ] + } + ] + } + }, + "emerald_boots": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "emeraldcraft:emerald_feet" + ] + } + ] + } + } + }, + "requirements": [ + [ + "emerald_helmet", + "emerald_chestplate", + "emerald_leggings", + "emerald_boots" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/hotter_topic.json b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/hotter_topic.json new file mode 100644 index 00000000..b3fd2fe2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/hotter_topic.json @@ -0,0 +1,37 @@ +{ + "parent": "emeraldcraft:emeraldcraft/root", + "display": { + "icon": { + "item": "emeraldcraft:melter" + }, + "title": { + "translate": "advancements.emeraldcraft.hotter_topic.title" + }, + "description": { + "translate": "advancements.emeraldcraft.hotter_topic.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "melter": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "emeraldcraft:melter" + ] + } + ] + } + } + }, + "requirements": [ + [ + "melter" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/ice_cream_please.json b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/ice_cream_please.json new file mode 100644 index 00000000..498da812 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/ice_cream_please.json @@ -0,0 +1,37 @@ +{ + "parent": "emeraldcraft:emeraldcraft/root", + "display": { + "icon": { + "item": "emeraldcraft:ice_maker" + }, + "title": { + "translate": "advancements.emeraldcraft.ice_cream_please.title" + }, + "description": { + "translate": "advancements.emeraldcraft.ice_cream_please.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "ice_maker": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "emeraldcraft:ice_maker" + ] + } + ] + } + } + }, + "requirements": [ + [ + "ice_maker" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/more_effective_craft.json b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/more_effective_craft.json new file mode 100644 index 00000000..088f9d30 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/more_effective_craft.json @@ -0,0 +1,66 @@ +{ + "parent": "emeraldcraft:emeraldcraft/hotter_topic", + "display": { + "icon": { + "item": "emeraldcraft:melted_gold_bucket" + }, + "title": { + "translate": "advancements.emeraldcraft.more_effective_craft.title" + }, + "description": { + "translate": "advancements.emeraldcraft.more_effective_craft.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "rewards": { + "experience": 10 + }, + "criteria": { + "iron_concentrate": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "emeraldcraft:iron_concentrate" + ] + } + ] + } + }, + "gold_concentrate": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "emeraldcraft:gold_concentrate" + ] + } + ] + } + }, + "copper_concentrate": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "emeraldcraft:copper_concentrate" + ] + } + ] + } + } + }, + "requirements": [ + [ + "iron_concentrate", + "gold_concentrate", + "copper_concentrate" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/noisy_guy.json b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/noisy_guy.json new file mode 100644 index 00000000..92ebc60d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/noisy_guy.json @@ -0,0 +1,37 @@ +{ + "parent": "emeraldcraft:emeraldcraft/root", + "display": { + "icon": { + "item": "emeraldcraft:continuous_miner" + }, + "title": { + "translate": "advancements.emeraldcraft.noisy_guy.title" + }, + "description": { + "translate": "advancements.emeraldcraft.noisy_guy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "continuous_miner": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "emeraldcraft:continuous_miner" + ] + } + ] + } + } + }, + "requirements": [ + [ + "continuous_miner" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/root.json b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/root.json new file mode 100644 index 00000000..d6c10ec6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/root.json @@ -0,0 +1,37 @@ +{ + "display": { + "icon": { + "item": "emeraldcraft:emerald_stairs" + }, + "title": { + "translate": "advancements.emeraldcraft.root.title" + }, + "description": { + "translate": "advancements.emeraldcraft.root.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": false, + "hidden": false, + "background": "minecraft:textures/block/emerald_block.png" + }, + "criteria": { + "green_currency": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "minecraft:emerald" + ] + } + ] + } + } + }, + "requirements": [ + [ + "green_currency" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/surely_see_each_other_again.json b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/surely_see_each_other_again.json new file mode 100644 index 00000000..99ab4f7b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/advancements/emeraldcraft/surely_see_each_other_again.json @@ -0,0 +1,32 @@ +{ + "parent": "emeraldcraft:emeraldcraft/friend_from_the_nether", + "display": { + "icon": { + "item": "minecraft:gold_block" + }, + "title": { + "translate": "advancements.emeraldcraft.surely_see_each_other_again.title" + }, + "description": { + "translate": "advancements.emeraldcraft.surely_see_each_other_again.description" + }, + "frame": "challenge", + "show_toast": true, + "announce_to_chat": true, + "hidden": true + }, + "rewards": { + "experience": 100 + }, + "criteria": { + "piglin_cutey": { + "trigger": "emeraldcraft:saved_piglin_cutey", + "conditions": { } + } + }, + "requirements": [ + [ + "piglin_cutey" + ] + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/forge/biome_modifier/ec_higan_bana.json b/src/main/resources/data/emeraldcraft/forge/biome_modifier/ec_higan_bana.json new file mode 100644 index 00000000..a360b48c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/forge/biome_modifier/ec_higan_bana.json @@ -0,0 +1,6 @@ +{ + "type": "emeraldcraft:ec_higan_bana", + "biomes": [ + "minecraft:soul_sand_valley" + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_modifiers/warden_heart_from_warden.json b/src/main/resources/data/emeraldcraft/loot_modifiers/warden_heart_from_warden.json new file mode 100644 index 00000000..8cbb514a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_modifiers/warden_heart_from_warden.json @@ -0,0 +1,15 @@ +{ + "type": "emeraldcraft:warden_drop_heart", + "conditions": [ + { + "condition": "minecraft:entity_properties", + "entity": "this", + "predicate": { + "type": "minecraft:warden" + } + }, + { + "condition": "minecraft:killed_by_player" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/aluminum_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/aluminum_stairs.json new file mode 100644 index 00000000..bbbe6de7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/aluminum_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:aluminum_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/aluminum_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/aluminum_wall.json new file mode 100644 index 00000000..e0912562 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/aluminum_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:aluminum_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sand.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sand.json new file mode 100644 index 00000000..60384444 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:azure_sand" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone.json new file mode 100644 index 00000000..338baa46 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:azure_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_slab.json new file mode 100644 index 00000000..57699e66 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:azure_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:azure_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_stairs.json new file mode 100644 index 00000000..e3fbe799 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:azure_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_wall.json new file mode 100644 index 00000000..76479549 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/azure_sandstone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:azure_sandstone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_slab.json new file mode 100644 index 00000000..3c64ba3c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:blue_nether_brick_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:blue_nether_brick_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_stairs.json new file mode 100644 index 00000000..5fad7c48 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:blue_nether_brick_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_wall.json new file mode 100644 index 00000000..a0263799 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_brick_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:blue_nether_brick_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_bricks.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_bricks.json new file mode 100644 index 00000000..8c4654b0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/blue_nether_bricks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:blue_nether_bricks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/carpentry_table.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/carpentry_table.json new file mode 100644 index 00000000..3c78abc8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/carpentry_table.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:carpentry_table" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/chili.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/chili.json new file mode 100644 index 00000000..f6a9210e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/chili.json @@ -0,0 +1,50 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:chili" + } + ] + }, + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:binomial_with_bonus_count", + "parameters": { + "extra": 3, + "probability": 0.5714286 + } + } + ], + "name": "emeraldcraft:chili" + } + ], + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:chili", + "properties": { + "age": "7" + } + } + ] + } + ], + "functions": [ + { + "function": "minecraft:explosion_decay" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/constantan_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/constantan_stairs.json new file mode 100644 index 00000000..a2b2db6f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/constantan_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:constantan_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/constantan_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/constantan_wall.json new file mode 100644 index 00000000..5f30db61 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/constantan_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:constantan_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/continuous_miner.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/continuous_miner.json new file mode 100644 index 00000000..a7d24882 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/continuous_miner.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:continuous_miner" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone.json new file mode 100644 index 00000000..d4856c42 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:crimson_cobblestone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_slab.json new file mode 100644 index 00000000..a3242fc0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:crimson_cobblestone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:crimson_cobblestone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_stairs.json new file mode 100644 index 00000000..787ed98e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:crimson_cobblestone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_wall.json new file mode 100644 index 00000000..8af0abee --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_cobblestone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:crimson_cobblestone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone.json new file mode 100644 index 00000000..e19644bf --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone.json @@ -0,0 +1,44 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "emeraldcraft:crimson_stone" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "name": "emeraldcraft:crimson_cobblestone" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_slab.json new file mode 100644 index 00000000..30edfd22 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:crimson_stone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:crimson_stone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_stairs.json new file mode 100644 index 00000000..e28ce009 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:crimson_stone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_wall.json new file mode 100644 index 00000000..a25b105b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crimson_stone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:crimson_stone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/crystalball_table.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crystalball_table.json new file mode 100644 index 00000000..298070b4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/crystalball_table.json @@ -0,0 +1,30 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:crystalball_table" + } + ], + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_azure_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_azure_sandstone.json new file mode 100644 index 00000000..249b81d3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_azure_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:cut_azure_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_azure_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_azure_sandstone_slab.json new file mode 100644 index 00000000..0c2b5e86 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_azure_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:cut_azure_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:cut_azure_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_dark_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_dark_sandstone.json new file mode 100644 index 00000000..d4907109 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_dark_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:cut_dark_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_dark_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_dark_sandstone_slab.json new file mode 100644 index 00000000..2b748592 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_dark_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:cut_dark_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:cut_dark_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_emery_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_emery_sandstone.json new file mode 100644 index 00000000..ae637c7f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_emery_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:cut_emery_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_emery_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_emery_sandstone_slab.json new file mode 100644 index 00000000..454b188f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_emery_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:cut_emery_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:cut_emery_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_jadeite_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_jadeite_sandstone.json new file mode 100644 index 00000000..00dde035 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_jadeite_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:cut_jadeite_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_jadeite_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_jadeite_sandstone_slab.json new file mode 100644 index 00000000..0f3b77bd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_jadeite_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:cut_jadeite_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:cut_jadeite_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_quartz_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_quartz_sandstone.json new file mode 100644 index 00000000..59ff6fca --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_quartz_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:cut_quartz_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_quartz_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_quartz_sandstone_slab.json new file mode 100644 index 00000000..9e178140 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cut_quartz_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:cut_quartz_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:cut_quartz_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/cyan_petunia.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cyan_petunia.json new file mode 100644 index 00000000..43847493 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/cyan_petunia.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:cyan_petunia" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sand.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sand.json new file mode 100644 index 00000000..0010a8e9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:dark_sand" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone.json new file mode 100644 index 00000000..bb01f34a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:dark_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_slab.json new file mode 100644 index 00000000..88267b19 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:dark_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:dark_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_stairs.json new file mode 100644 index 00000000..18a8fa01 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:dark_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_wall.json new file mode 100644 index 00000000..ef88fcff --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/dark_sandstone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:dark_sandstone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_slab.json new file mode 100644 index 00000000..318d0b6d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:diamond_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:diamond_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_stairs.json new file mode 100644 index 00000000..37f1cbbb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:diamond_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_wall.json new file mode 100644 index 00000000..59f5d49f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/diamond_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:diamond_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/electrum_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/electrum_stairs.json new file mode 100644 index 00000000..28a22edb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/electrum_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:electrum_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/electrum_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/electrum_wall.json new file mode 100644 index 00000000..3e7bd556 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/electrum_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:electrum_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_slab.json new file mode 100644 index 00000000..0a513ac6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:emerald_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:emerald_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_stairs.json new file mode 100644 index 00000000..d5d9c955 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:emerald_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_wall.json new file mode 100644 index 00000000..66ad9f19 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emerald_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:emerald_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sand.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sand.json new file mode 100644 index 00000000..f4f73dd6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:emery_sand" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone.json new file mode 100644 index 00000000..35c2f8b1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:emery_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_slab.json new file mode 100644 index 00000000..77541bf7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:emery_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:emery_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_stairs.json new file mode 100644 index 00000000..18bf074c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:emery_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_wall.json new file mode 100644 index 00000000..0c231044 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/emery_sandstone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:emery_sandstone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_button.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_button.json new file mode 100644 index 00000000..7dabbfd9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_button.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_button" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_door.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_door.json new file mode 100644 index 00000000..f4f2c529 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_door.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:ginkgo_door", + "properties": { + "half": "lower" + } + } + ], + "name": "emeraldcraft:ginkgo_door" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_fence.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_fence.json new file mode 100644 index 00000000..029ec160 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_fence.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_fence" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_fence_gate.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_fence_gate.json new file mode 100644 index 00000000..9aae855f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_fence_gate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_leaves.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_leaves.json new file mode 100644 index 00000000..4478e91b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_leaves.json @@ -0,0 +1,185 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "emeraldcraft:ginkgo_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "emeraldcraft:ginkgo_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + }, + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.005, + 0.0055555557, + 0.00625, + 0.008333334, + 0.025 + ] + } + ], + "name": "emeraldcraft:ginkgo_nut" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "items": [ + "minecraft:shears" + ] + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_log.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_log.json new file mode 100644 index 00000000..ac03dcab --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_planks.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_planks.json new file mode 100644 index 00000000..052e7ade --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_planks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_planks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_pressure_plate.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_pressure_plate.json new file mode 100644 index 00000000..174a1f32 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_pressure_plate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_pressure_plate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_sapling.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_sapling.json new file mode 100644 index 00000000..3a1e5c49 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_sign.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_sign.json new file mode 100644 index 00000000..c46edc3f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_sign.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_sign" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_slab.json new file mode 100644 index 00000000..fc81c457 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:ginkgo_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:ginkgo_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_stairs.json new file mode 100644 index 00000000..42e7606e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_trapdoor.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_trapdoor.json new file mode 100644 index 00000000..7f20eb36 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_trapdoor.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_wall_sign.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_wall_sign.json new file mode 100644 index 00000000..c46edc3f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_wall_sign.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_sign" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_wood.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_wood.json new file mode 100644 index 00000000..eaec1442 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ginkgo_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/glass_kiln.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/glass_kiln.json new file mode 100644 index 00000000..66719568 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/glass_kiln.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:glass_kiln" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_slab.json new file mode 100644 index 00000000..c42a13bd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:gold_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:gold_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_stairs.json new file mode 100644 index 00000000..f5795e09 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:gold_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_wall.json new file mode 100644 index 00000000..ee9d8293 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/gold_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:gold_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/higan_bana.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/higan_bana.json new file mode 100644 index 00000000..acb4ff35 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/higan_bana.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:higan_bana" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/ice_maker.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ice_maker.json new file mode 100644 index 00000000..3cb3aa4f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/ice_maker.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ice_maker" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_slab.json new file mode 100644 index 00000000..5083d7dd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:iron_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:iron_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_stairs.json new file mode 100644 index 00000000..6e2d90ba --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:iron_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_wall.json new file mode 100644 index 00000000..906971c9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/iron_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:iron_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sand.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sand.json new file mode 100644 index 00000000..857897f8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:jadeite_sand" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone.json new file mode 100644 index 00000000..ebde40dd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:jadeite_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_slab.json new file mode 100644 index 00000000..8c46235a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:jadeite_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:jadeite_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_stairs.json new file mode 100644 index 00000000..388be488 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:jadeite_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_wall.json new file mode 100644 index 00000000..6c24731e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/jadeite_sandstone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:jadeite_sandstone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_slab.json new file mode 100644 index 00000000..8f54a20d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:lapis_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:lapis_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_stairs.json new file mode 100644 index 00000000..8e93a632 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:lapis_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_wall.json new file mode 100644 index 00000000..78ee26ca --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/lapis_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:lapis_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/lead_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/lead_stairs.json new file mode 100644 index 00000000..c8b2458a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/lead_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:lead_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/lead_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/lead_wall.json new file mode 100644 index 00000000..c9e20404 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/lead_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:lead_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/magenta_petunia.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/magenta_petunia.json new file mode 100644 index 00000000..011c01a4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/magenta_petunia.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:magenta_petunia" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/melter.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/melter.json new file mode 100644 index 00000000..6ad08827 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/melter.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:melter" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/mineral_table.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/mineral_table.json new file mode 100644 index 00000000..e86364e7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/mineral_table.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:mineral_table" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_slab.json new file mode 100644 index 00000000..249f7ab6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:netherite_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:netherite_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_stairs.json new file mode 100644 index 00000000..02d5c606 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:netherite_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_wall.json new file mode 100644 index 00000000..a617b771 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/netherite_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:netherite_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/nickel_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/nickel_stairs.json new file mode 100644 index 00000000..70b58099 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/nickel_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:nickel_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/nickel_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/nickel_wall.json new file mode 100644 index 00000000..7ce6d675 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/nickel_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:nickel_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_button.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_button.json new file mode 100644 index 00000000..8c055235 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_button.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:palm_button" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_door.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_door.json new file mode 100644 index 00000000..cd7f8cfc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_door.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:palm_door", + "properties": { + "half": "lower" + } + } + ], + "name": "emeraldcraft:palm_door" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_fence.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_fence.json new file mode 100644 index 00000000..ee689d93 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_fence.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:palm_fence" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_fence_gate.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_fence_gate.json new file mode 100644 index 00000000..07b07f40 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:palm_fence_gate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_leaves.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_leaves.json new file mode 100644 index 00000000..3c638e85 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_leaves.json @@ -0,0 +1,128 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "emeraldcraft:palm_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "emeraldcraft:palm_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_log.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_log.json new file mode 100644 index 00000000..4ae0b128 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:palm_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_planks.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_planks.json new file mode 100644 index 00000000..7fe86bbd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_planks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:palm_planks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_pressure_plate.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_pressure_plate.json new file mode 100644 index 00000000..75b8fde9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_pressure_plate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:palm_pressure_plate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_sapling.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_sapling.json new file mode 100644 index 00000000..37e64786 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:palm_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_sign.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_sign.json new file mode 100644 index 00000000..d5b16eed --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_sign.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:palm_sign" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_slab.json new file mode 100644 index 00000000..e0c67560 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:palm_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:palm_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_stairs.json new file mode 100644 index 00000000..db952355 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:palm_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_trapdoor.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_trapdoor.json new file mode 100644 index 00000000..664c39a6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_trapdoor.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:palm_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_wall_sign.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_wall_sign.json new file mode 100644 index 00000000..d5b16eed --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_wall_sign.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:palm_sign" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_wood.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_wood.json new file mode 100644 index 00000000..63a69d46 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/palm_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:palm_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_button.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_button.json new file mode 100644 index 00000000..737dfb3e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_button.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:peach_button" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_door.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_door.json new file mode 100644 index 00000000..23a84052 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_door.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:peach_door", + "properties": { + "half": "lower" + } + } + ], + "name": "emeraldcraft:peach_door" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_fence.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_fence.json new file mode 100644 index 00000000..b45c37dd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_fence.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:peach_fence" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_fence_gate.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_fence_gate.json new file mode 100644 index 00000000..98fcc0e4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:peach_fence_gate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_leaves.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_leaves.json new file mode 100644 index 00000000..7a8d7cb3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_leaves.json @@ -0,0 +1,185 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + ], + "name": "emeraldcraft:peach_leaves" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.05, + 0.0625, + 0.083333336, + 0.1 + ] + } + ], + "name": "emeraldcraft:peach_sapling" + } + ] + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.02, + 0.022222223, + 0.025, + 0.033333335, + 0.1 + ] + } + ], + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 1.0, + "max": 2.0, + "type": "minecraft:uniform" + } + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:stick" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "tag": "forge:shears" + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + }, + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + }, + { + "condition": "minecraft:table_bonus", + "enchantment": "minecraft:fortune", + "chances": [ + 0.005, + 0.0055555557, + 0.00625, + 0.008333334, + 0.025 + ] + } + ], + "name": "emeraldcraft:peach" + } + ], + "conditions": [ + { + "condition": "minecraft:inverted", + "term": { + "condition": "minecraft:alternative", + "terms": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "items": [ + "minecraft:shears" + ] + } + }, + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_log.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_log.json new file mode 100644 index 00000000..509d196b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:peach_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_planks.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_planks.json new file mode 100644 index 00000000..b560ca10 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_planks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:peach_planks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_pressure_plate.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_pressure_plate.json new file mode 100644 index 00000000..66afa011 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_pressure_plate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:peach_pressure_plate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_sapling.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_sapling.json new file mode 100644 index 00000000..03199147 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_sapling.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:peach_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_sign.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_sign.json new file mode 100644 index 00000000..1c524c3d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_sign.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:peach_sign" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_slab.json new file mode 100644 index 00000000..d57e9ede --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:peach_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:peach_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_stairs.json new file mode 100644 index 00000000..e7b16764 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:peach_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_trapdoor.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_trapdoor.json new file mode 100644 index 00000000..1962263a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_trapdoor.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:peach_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_wall_sign.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_wall_sign.json new file mode 100644 index 00000000..1c524c3d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_wall_sign.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:peach_sign" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_wood.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_wood.json new file mode 100644 index 00000000..a4106178 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/peach_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:peach_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_cyan_petunia.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_cyan_petunia.json new file mode 100644 index 00000000..1b0155d5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_cyan_petunia.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:cyan_petunia" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_ginkgo_sapling.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_ginkgo_sapling.json new file mode 100644 index 00000000..3bdd9e69 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_ginkgo_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:ginkgo_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_higan_bana.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_higan_bana.json new file mode 100644 index 00000000..09c4612c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_higan_bana.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:higan_bana" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_magenta_petunia.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_magenta_petunia.json new file mode 100644 index 00000000..d21a124e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_magenta_petunia.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:magenta_petunia" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_palm_sapling.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_palm_sapling.json new file mode 100644 index 00000000..f8b9ffec --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_palm_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:palm_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_peach_sapling.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_peach_sapling.json new file mode 100644 index 00000000..26624516 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_peach_sapling.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:peach_sapling" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_purpuraceus_fungus.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_purpuraceus_fungus.json new file mode 100644 index 00000000..28dd102a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/potted_purpuraceus_fungus.json @@ -0,0 +1,33 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:flower_pot" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + }, + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purpuraceus_fungus" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purple_nether_brick_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purple_nether_brick_slab.json new file mode 100644 index 00000000..77e37c91 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purple_nether_brick_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:purple_nether_brick_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:purple_nether_brick_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purple_nether_brick_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purple_nether_brick_stairs.json new file mode 100644 index 00000000..c68a203b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purple_nether_brick_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purple_nether_brick_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purple_nether_brick_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purple_nether_brick_wall.json new file mode 100644 index 00000000..3fc15f30 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purple_nether_brick_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purple_nether_brick_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purple_nether_bricks.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purple_nether_bricks.json new file mode 100644 index 00000000..59931121 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purple_nether_bricks.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purple_nether_bricks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_button.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_button.json new file mode 100644 index 00000000..0ca56bcd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_button.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purpuraceus_button" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_door.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_door.json new file mode 100644 index 00000000..5f37b08b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_door.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:purpuraceus_door", + "properties": { + "half": "lower" + } + } + ], + "name": "emeraldcraft:purpuraceus_door" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_fence.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_fence.json new file mode 100644 index 00000000..f7afe551 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_fence.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purpuraceus_fence" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_fence_gate.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_fence_gate.json new file mode 100644 index 00000000..b769a2f6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purpuraceus_fence_gate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_fungus.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_fungus.json new file mode 100644 index 00000000..bbb6aa9a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_fungus.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purpuraceus_fungus" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_hyphae.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_hyphae.json new file mode 100644 index 00000000..29012818 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_hyphae.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purpuraceus_hyphae" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_nylium.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_nylium.json new file mode 100644 index 00000000..7dd1c172 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_nylium.json @@ -0,0 +1,44 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "emeraldcraft:purpuraceus_nylium" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "name": "minecraft:netherrack" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_planks.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_planks.json new file mode 100644 index 00000000..b2d71a8b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_planks.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purpuraceus_planks" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_pressure_plate.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_pressure_plate.json new file mode 100644 index 00000000..0b973515 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_pressure_plate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purpuraceus_pressure_plate" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_roots.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_roots.json new file mode 100644 index 00000000..7c526669 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_roots.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purpuraceus_roots" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_sign.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_sign.json new file mode 100644 index 00000000..8b917393 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_sign.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purpuraceus_sign" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_slab.json new file mode 100644 index 00000000..9b44473c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_slab.json @@ -0,0 +1,32 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:purpuraceus_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2 + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:purpuraceus_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_stairs.json new file mode 100644 index 00000000..cb083772 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purpuraceus_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_stem.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_stem.json new file mode 100644 index 00000000..a2b8cb56 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_stem.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purpuraceus_stem" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_trapdoor.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_trapdoor.json new file mode 100644 index 00000000..af43cf63 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_trapdoor.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purpuraceus_trapdoor" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_wall_sign.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_wall_sign.json new file mode 100644 index 00000000..8b917393 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_wall_sign.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purpuraceus_sign" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_wart_block.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_wart_block.json new file mode 100644 index 00000000..5a189c24 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/purpuraceus_wart_block.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:purpuraceus_wart_block" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sand.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sand.json new file mode 100644 index 00000000..4b2a24cf --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:quartz_sand" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone.json new file mode 100644 index 00000000..ba62283a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:quartz_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_slab.json new file mode 100644 index 00000000..749cfa37 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:quartz_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:quartz_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_stairs.json new file mode 100644 index 00000000..e5121c3f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:quartz_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_wall.json new file mode 100644 index 00000000..7809ff67 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/quartz_sandstone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:quartz_sandstone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/silver_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/silver_stairs.json new file mode 100644 index 00000000..3e258971 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/silver_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:silver_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/silver_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/silver_wall.json new file mode 100644 index 00000000..167ee87b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/silver_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:silver_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone.json new file mode 100644 index 00000000..7284f629 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_azure_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone_slab.json new file mode 100644 index 00000000..6322dfcc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:smooth_azure_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:smooth_azure_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone_stairs.json new file mode 100644 index 00000000..1df785a9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_azure_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_azure_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone.json new file mode 100644 index 00000000..7b5ed45a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_dark_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone_slab.json new file mode 100644 index 00000000..ce3d9974 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:smooth_dark_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:smooth_dark_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone_stairs.json new file mode 100644 index 00000000..b6625ef1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_dark_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_dark_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone.json new file mode 100644 index 00000000..a79eeccf --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_emery_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone_slab.json new file mode 100644 index 00000000..afdfdc27 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:smooth_emery_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:smooth_emery_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone_stairs.json new file mode 100644 index 00000000..21623363 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_emery_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_emery_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone.json new file mode 100644 index 00000000..a1743153 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_jadeite_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone_slab.json new file mode 100644 index 00000000..e40a2ece --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:smooth_jadeite_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:smooth_jadeite_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone_stairs.json new file mode 100644 index 00000000..e36db739 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_jadeite_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_jadeite_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone.json new file mode 100644 index 00000000..eecb5910 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_quartz_sandstone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone_slab.json new file mode 100644 index 00000000..75ea5526 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:smooth_quartz_sandstone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:smooth_quartz_sandstone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone_stairs.json new file mode 100644 index 00000000..a193480b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/smooth_quartz_sandstone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:smooth_quartz_sandstone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/squeezer.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/squeezer.json new file mode 100644 index 00000000..332b1f3f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/squeezer.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:squeezer" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/steel_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/steel_stairs.json new file mode 100644 index 00000000..8d6e9a38 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/steel_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:steel_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/steel_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/steel_wall.json new file mode 100644 index 00000000..3d02d5d4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/steel_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:steel_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_ginkgo_log.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_ginkgo_log.json new file mode 100644 index 00000000..561426d2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_ginkgo_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:stripped_ginkgo_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_ginkgo_wood.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_ginkgo_wood.json new file mode 100644 index 00000000..e8ae41a4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_ginkgo_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:stripped_ginkgo_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_palm_log.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_palm_log.json new file mode 100644 index 00000000..6e406e98 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_palm_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:stripped_palm_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_palm_wood.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_palm_wood.json new file mode 100644 index 00000000..b70d2330 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_palm_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:stripped_palm_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_peach_log.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_peach_log.json new file mode 100644 index 00000000..26391171 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_peach_log.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:stripped_peach_log" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_peach_wood.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_peach_wood.json new file mode 100644 index 00000000..20fbcb5b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_peach_wood.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:stripped_peach_wood" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_purpuraceus_hyphae.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_purpuraceus_hyphae.json new file mode 100644 index 00000000..5bf026cb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_purpuraceus_hyphae.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:stripped_purpuraceus_hyphae" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_purpuraceus_stem.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_purpuraceus_stem.json new file mode 100644 index 00000000..5c01493d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/stripped_purpuraceus_stem.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:stripped_purpuraceus_stem" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/uranium_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/uranium_stairs.json new file mode 100644 index 00000000..bc71ebed --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/uranium_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:uranium_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/uranium_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/uranium_wall.json new file mode 100644 index 00000000..af2a02f4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/uranium_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:uranium_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/vitrified_sand.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/vitrified_sand.json new file mode 100644 index 00000000..e20a2f70 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/vitrified_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:vitrified_sand" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone.json new file mode 100644 index 00000000..ed714720 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:warped_cobblestone" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_slab.json new file mode 100644 index 00000000..91d57661 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:warped_cobblestone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:warped_cobblestone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_stairs.json new file mode 100644 index 00000000..41cf1b02 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:warped_cobblestone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_wall.json new file mode 100644 index 00000000..e2446ba6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_cobblestone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:warped_cobblestone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone.json new file mode 100644 index 00000000..5a095745 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone.json @@ -0,0 +1,44 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "emeraldcraft:warped_stone" + }, + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "name": "emeraldcraft:warped_cobblestone" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_slab.json new file mode 100644 index 00000000..7cbd1bb1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:warped_stone_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:warped_stone_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_stairs.json new file mode 100644 index 00000000..544d6d6a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:warped_stone_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_wall.json new file mode 100644 index 00000000..cd296404 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_stone_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:warped_stone_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_wart.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_wart.json new file mode 100644 index 00000000..10849160 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/warped_wart.json @@ -0,0 +1,57 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:warped_wart", + "properties": { + "age": "3" + } + } + ], + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 4.0 + }, + "add": false + }, + { + "function": "minecraft:apply_bonus", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:warped_wart", + "properties": { + "age": "3" + } + } + ], + "enchantment": "minecraft:fortune", + "formula": "minecraft:uniform_bonus_count", + "parameters": { + "bonusMultiplier": 1 + } + } + ], + "name": "emeraldcraft:warped_wart" + } + ], + "functions": [ + { + "function": "minecraft:explosion_decay" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/zinc_slab.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/zinc_slab.json new file mode 100644 index 00000000..6d3f4706 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/zinc_slab.json @@ -0,0 +1,34 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "emeraldcraft:zinc_slab", + "properties": { + "type": "double" + } + } + ], + "count": 2.0, + "add": false + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "emeraldcraft:zinc_slab" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/zinc_stairs.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/zinc_stairs.json new file mode 100644 index 00000000..02952142 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/zinc_stairs.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:zinc_stairs" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/blocks/zinc_wall.json b/src/main/resources/data/emeraldcraft/loot_tables/blocks/zinc_wall.json new file mode 100644 index 00000000..38cd76f6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/blocks/zinc_wall.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:zinc_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/camp.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/camp.json new file mode 100644 index 00000000..f2d76d44 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/camp.json @@ -0,0 +1,146 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:golden_apple" + }, + { + "type": "minecraft:item", + "weight": 15, + "name": "minecraft:apple" + }, + { + "type": "minecraft:item", + "weight": 8, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "emeraldcraft:ginkgo_nut" + }, + { + "type": "minecraft:item", + "weight": 5, + "name": "minecraft:egg" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "minecraft:beetroot_seeds" + } + ] + }, + { + "rolls": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 4.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 6, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:iron_ingot" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:gold_ingot" + }, + { + "type": "minecraft:item", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:emerald" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:coal" + }, + { + "type": "minecraft:item", + "weight": 4, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 6.0 + }, + "add": false + } + ], + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 6.0 + }, + "add": false + } + ], + "name": "minecraft:cobblestone" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/crimson_trench/medium_house.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/crimson_trench/medium_house.json new file mode 100644 index 00000000..4c4d0342 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/crimson_trench/medium_house.json @@ -0,0 +1,100 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 4.0, + "max": 9.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:gold_block" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:golden_pickaxe" + }, + { + "type": "minecraft:item", + "name": "minecraft:gold_ingot" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:nether_wart_block" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "minecraft:cooked_porkchop" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:arrow" + }, + { + "type": "minecraft:item", + "name": "minecraft:spectral_arrow" + }, + { + "type": "minecraft:item", + "name": "minecraft:saddle" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:golden_apple" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/crimson_trench/small_house.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/crimson_trench/small_house.json new file mode 100644 index 00000000..df66ace1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/crimson_trench/small_house.json @@ -0,0 +1,127 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 3.0, + "max": 8.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 5.0 + }, + "add": false + } + ], + "name": "minecraft:gold_nugget" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:quartz" + }, + { + "type": "minecraft:item", + "name": "minecraft:nether_brick" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 7.0 + }, + "add": false + } + ], + "name": "minecraft:nether_wart" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 5.0 + }, + "add": false + } + ], + "name": "minecraft:porkchop" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:string" + }, + { + "type": "minecraft:item", + "name": "minecraft:book" + }, + { + "type": "minecraft:item", + "name": "minecraft:feather" + }, + { + "type": "minecraft:item", + "weight": 2, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:emerald" + }, + { + "type": "minecraft:item", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "minecraft:coal" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/entrenchment/chest_hallway.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/entrenchment/chest_hallway.json new file mode 100644 index 00000000..0b69d89a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/entrenchment/chest_hallway.json @@ -0,0 +1,100 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 4.0, + "max": 9.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:gold_block" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "emeraldcraft:golden_peach" + }, + { + "type": "minecraft:item", + "name": "minecraft:iron_ingot" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "emeraldcraft:purpuraceus_fungus" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "emeraldcraft:purpuraceus_stem" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:arrow" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "emeraldcraft:purpuraceus_nylium" + }, + { + "type": "minecraft:item", + "name": "emeraldcraft:cooked_purpuraceus_fungus" + }, + { + "type": "minecraft:item", + "name": "minecraft:enchanted_golden_apple" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/entrenchment/hall.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/entrenchment/hall.json new file mode 100644 index 00000000..d46fde58 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/entrenchment/hall.json @@ -0,0 +1,125 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 2.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "emeraldcraft:golden_peach" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:netherite_scrap" + } + ] + }, + { + "rolls": { + "type": "minecraft:uniform", + "min": 3.0, + "max": 6.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 4, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "minecraft:netherrack" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:blackstone" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": 1.0, + "add": false + }, + { + "function": "minecraft:set_damage", + "damage": { + "type": "minecraft:uniform", + "min": 0.1, + "max": 0.5 + }, + "add": false + }, + { + "function": "minecraft:enchant_randomly" + } + ], + "name": "minecraft:iron_pickaxe" + }, + { + "type": "minecraft:item", + "weight": 15, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "emeraldcraft:purpuraceus_fungus" + }, + { + "type": "minecraft:item", + "weight": 7, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "minecraft:string" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/entrenchment/prison.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/entrenchment/prison.json new file mode 100644 index 00000000..b9cbfbe6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/entrenchment/prison.json @@ -0,0 +1,83 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 4.0, + "max": 6.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 15, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "minecraft:porkchop" + }, + { + "type": "minecraft:item", + "weight": 11, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 5.0 + }, + "add": false + } + ], + "name": "minecraft:rotten_flesh" + }, + { + "type": "minecraft:item", + "name": "minecraft:golden_carrot" + }, + { + "type": "minecraft:item", + "weight": 8, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:carrot" + }, + { + "type": "minecraft:item", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:string" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/entrenchment/start.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/entrenchment/start.json new file mode 100644 index 00000000..7866f27b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/entrenchment/start.json @@ -0,0 +1,101 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:enchanted_golden_apple" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:netherite_scrap" + } + ] + }, + { + "rolls": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 5.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 6, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "emeraldcraft:purple_nether_bricks" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "minecraft:ender_pearl" + }, + { + "type": "minecraft:item", + "name": "minecraft:iron_block" + }, + { + "type": "minecraft:item", + "weight": 15, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "emeraldcraft:purpuraceus_fungus" + }, + { + "type": "minecraft:item", + "weight": 7, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "minecraft:string" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/village/village_astrologist.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/village/village_astrologist.json new file mode 100644 index 00000000..dbbdeac7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/village/village_astrologist.json @@ -0,0 +1,84 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 5.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "minecraft:brown_mushroom" + }, + { + "type": "minecraft:item", + "weight": 15, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:red_mushroom" + }, + { + "type": "minecraft:item", + "weight": 5, + "name": "minecraft:soul_sand" + }, + { + "type": "minecraft:item", + "weight": 15, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:bread" + }, + { + "type": "minecraft:item", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:amethyst_shard" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/village/village_glazier.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/village/village_glazier.json new file mode 100644 index 00000000..2784cc93 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/village/village_glazier.json @@ -0,0 +1,84 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 5.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "minecraft:sand" + }, + { + "type": "minecraft:item", + "weight": 15, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:glass" + }, + { + "type": "minecraft:item", + "weight": 5, + "name": "minecraft:brick" + }, + { + "type": "minecraft:item", + "weight": 15, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:bread" + }, + { + "type": "minecraft:item", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:emerald" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/village/village_miner.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/village/village_miner.json new file mode 100644 index 00000000..67e025cc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/village/village_miner.json @@ -0,0 +1,84 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 5.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "minecraft:raw_iron" + }, + { + "type": "minecraft:item", + "weight": 15, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:raw_gold" + }, + { + "type": "minecraft:item", + "weight": 5, + "name": "minecraft:obsidian" + }, + { + "type": "minecraft:item", + "weight": 15, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:string" + }, + { + "type": "minecraft:item", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:emerald" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/village/village_swamp_house.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/village/village_swamp_house.json new file mode 100644 index 00000000..80ee91c2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/village/village_swamp_house.json @@ -0,0 +1,127 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 3.0, + "max": 8.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "minecraft:gold_nugget" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:blue_orchid" + }, + { + "type": "minecraft:item", + "name": "minecraft:poppy" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 7.0 + }, + "add": false + } + ], + "name": "minecraft:carrot" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:bread" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 5.0 + }, + "add": false + } + ], + "name": "emeraldcraft:ginkgo_nut" + }, + { + "type": "minecraft:item", + "name": "minecraft:book" + }, + { + "type": "minecraft:item", + "name": "minecraft:feather" + }, + { + "type": "minecraft:item", + "weight": 2, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:emerald" + }, + { + "type": "minecraft:item", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:dark_oak_sapling" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/warped_trench/medium_house.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/warped_trench/medium_house.json new file mode 100644 index 00000000..3d2a1b5a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/warped_trench/medium_house.json @@ -0,0 +1,100 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 4.0, + "max": 9.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:gold_block" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:golden_pickaxe" + }, + { + "type": "minecraft:item", + "name": "minecraft:gold_ingot" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "minecraft:warped_wart_block" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "minecraft:cooked_mutton" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:arrow" + }, + { + "type": "minecraft:item", + "name": "minecraft:spectral_arrow" + }, + { + "type": "minecraft:item", + "name": "minecraft:saddle" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:golden_apple" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/warped_trench/small_house.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/warped_trench/small_house.json new file mode 100644 index 00000000..911ae248 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/warped_trench/small_house.json @@ -0,0 +1,127 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 3.0, + "max": 8.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 5.0 + }, + "add": false + } + ], + "name": "minecraft:gold_nugget" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:quartz" + }, + { + "type": "minecraft:item", + "name": "minecraft:nether_brick" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 7.0 + }, + "add": false + } + ], + "name": "emeraldcraft:warped_wart" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 5.0 + }, + "add": false + } + ], + "name": "minecraft:mutton" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:string" + }, + { + "type": "minecraft:item", + "name": "minecraft:book" + }, + { + "type": "minecraft:item", + "name": "minecraft:feather" + }, + { + "type": "minecraft:item", + "weight": 2, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:emerald" + }, + { + "type": "minecraft:item", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "add": false + } + ], + "name": "minecraft:coal" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/chests/zombie_villager_room.json b/src/main/resources/data/emeraldcraft/loot_tables/chests/zombie_villager_room.json new file mode 100644 index 00000000..33cdf060 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/chests/zombie_villager_room.json @@ -0,0 +1,290 @@ +{ + "type": "minecraft:chest", + "pools": [ + { + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 3.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 20, + "name": "minecraft:golden_apple" + }, + { + "type": "minecraft:item", + "weight": 5, + "name": "minecraft:enchanted_golden_apple" + }, + { + "type": "minecraft:item", + "weight": 20, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 2.0 + }, + "add": false + } + ], + "name": "emeraldcraft:agate_apple" + }, + { + "type": "minecraft:item", + "weight": 20, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "emeraldcraft:jade_apple" + }, + { + "type": "minecraft:item", + "weight": 20, + "name": "minecraft:name_tag" + }, + { + "type": "minecraft:item", + "weight": 15, + "functions": [ + { + "function": "minecraft:enchant_randomly" + } + ], + "name": "minecraft:book" + } + ] + }, + { + "rolls": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:iron_ingot" + }, + { + "type": "minecraft:item", + "weight": 5, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:gold_ingot" + }, + { + "type": "minecraft:item", + "weight": 20, + "name": "minecraft:apple" + }, + { + "type": "minecraft:item", + "weight": 20, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:emerald" + }, + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:bucket" + }, + { + "type": "minecraft:item", + "weight": 15, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:redstone" + }, + { + "type": "minecraft:item", + "weight": 15, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:coal" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:melon_seeds" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:pumpkin_seeds" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 2.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:beetroot_seeds" + } + ] + }, + { + "rolls": 3.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 8.0 + }, + "add": false + } + ], + "name": "minecraft:bone" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 4.0 + }, + "add": false + } + ], + "name": "minecraft:amethyst_shard" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 8.0 + }, + "add": false + } + ], + "name": "minecraft:rotten_flesh" + }, + { + "type": "minecraft:item", + "weight": 10, + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 1.0, + "max": 8.0 + }, + "add": false + } + ], + "name": "minecraft:string" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/fishing.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/fishing.json new file mode 100644 index 00000000..5f700d94 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/fishing.json @@ -0,0 +1,98 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 60, + "name": "minecraft:cod" + }, + { + "type": "minecraft:item", + "weight": 36, + "name": "minecraft:salmon" + }, + { + "type": "minecraft:item", + "weight": 18, + "name": "minecraft:tropical_fish" + }, + { + "type": "minecraft:item", + "weight": 8, + "name": "emeraldcraft:herring" + }, + { + "type": "minecraft:item", + "weight": 8, + "name": "emeraldcraft:purple_spotted_bigeye" + }, + { + "type": "minecraft:item", + "weight": 19, + "name": "minecraft:pufferfish" + }, + { + "type": "minecraft:item", + "weight": 17, + "name": "minecraft:lily_pad" + }, + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:leather" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "minecraft:bone" + }, + { + "type": "minecraft:item", + "weight": 19, + "name": "minecraft:rotten_flesh" + }, + { + "type": "minecraft:item", + "weight": 18, + "name": "minecraft:ink_sac" + }, + { + "type": "minecraft:item", + "weight": 7, + "name": "minecraft:glow_ink_sac" + }, + { + "type": "minecraft:item", + "weight": 14, + "name": "minecraft:string" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "minecraft:name_tag" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:nautilus_shell" + }, + { + "type": "minecraft:item", + "weight": 3, + "functions": [ + { + "function": "minecraft:enchant_with_levels", + "levels": 30.0, + "treasure": true + } + ], + "name": "minecraft:book" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/crimson_nylium.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/crimson_nylium.json new file mode 100644 index 00000000..8a3e4ca1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/crimson_nylium.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 44, + "name": "minecraft:crimson_roots" + }, + { + "type": "minecraft:item", + "weight": 51, + "name": "minecraft:crimson_fungus" + }, + { + "type": "minecraft:item", + "weight": 8, + "name": "minecraft:warped_fungus" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "minecraft:nether_wart" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "minecraft:weeping_vines" + }, + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/purpuraceus_nylium.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/purpuraceus_nylium.json new file mode 100644 index 00000000..c69f47e2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/purpuraceus_nylium.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 40, + "name": "emeraldcraft:purpuraceus_roots" + }, + { + "type": "minecraft:item", + "weight": 15, + "name": "minecraft:nether_sprouts" + }, + { + "type": "minecraft:item", + "weight": 58, + "name": "emeraldcraft:purpuraceus_fungus" + }, + { + "type": "minecraft:item", + "weight": 15, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/warped_nylium.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/warped_nylium.json new file mode 100644 index 00000000..721ad768 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/nylium/warped_nylium.json @@ -0,0 +1,51 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 33, + "name": "minecraft:warped_roots" + }, + { + "type": "minecraft:item", + "weight": 14, + "name": "minecraft:nether_sprouts" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:crimson_roots" + }, + { + "type": "minecraft:item", + "weight": 52, + "name": "minecraft:warped_fungus" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "minecraft:crimson_fungus" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "emeraldcraft:warped_wart" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "minecraft:twisting_vines" + }, + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/dirt.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/dirt.json new file mode 100644 index 00000000..dd6dc905 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/dirt.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 20, + "name": "minecraft:dirt" + }, + { + "type": "minecraft:item", + "weight": 5, + "name": "minecraft:moss_block" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "minecraft:mud" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:coarse_dirt" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:sand" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/flint.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/flint.json new file mode 100644 index 00000000..2d273db9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/flint.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:flint" + }, + { + "type": "minecraft:item", + "weight": 7, + "name": "minecraft:gravel" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:magma_block" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:clay_ball" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/nether.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/nether.json new file mode 100644 index 00000000..66b2f1a4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/nether.json @@ -0,0 +1,56 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:ancient_debris" + }, + { + "type": "minecraft:item", + "weight": 62, + "name": "minecraft:quartz" + }, + { + "type": "minecraft:item", + "weight": 45, + "name": "minecraft:gold_nugget" + }, + { + "type": "minecraft:item", + "weight": 109, + "name": "minecraft:netherrack" + }, + { + "type": "minecraft:item", + "weight": 65, + "name": "minecraft:blackstone" + }, + { + "type": "minecraft:item", + "weight": 69, + "name": "minecraft:basalt" + }, + { + "type": "minecraft:item", + "weight": 57, + "name": "minecraft:soul_sand" + }, + { + "type": "minecraft:item", + "weight": 40, + "name": "minecraft:soul_soil" + }, + { + "type": "minecraft:item", + "weight": 63, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/obsidian.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/obsidian.json new file mode 100644 index 00000000..54db177d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/obsidian.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 14, + "name": "minecraft:obsidian" + }, + { + "type": "minecraft:item", + "weight": 15, + "name": "minecraft:crying_obsidian" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:blaze_powder" + }, + { + "type": "minecraft:item", + "weight": 6, + "name": "minecraft:glowstone_dust" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "emeraldcraft:vitrified_sand" + }, + { + "type": "minecraft:item", + "weight": 24, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/overworld.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/overworld.json new file mode 100644 index 00000000..7c7651b2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/ores/overworld.json @@ -0,0 +1,116 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 8, + "name": "minecraft:emerald" + }, + { + "type": "minecraft:item", + "weight": 13, + "name": "minecraft:amethyst_shard" + }, + { + "type": "minecraft:item", + "weight": 76, + "name": "minecraft:diamond" + }, + { + "type": "minecraft:item", + "weight": 189, + "name": "minecraft:coal" + }, + { + "type": "minecraft:item", + "weight": 210, + "name": "minecraft:redstone" + }, + { + "type": "minecraft:item", + "weight": 106, + "name": "minecraft:raw_gold" + }, + { + "type": "minecraft:item", + "weight": 249, + "name": "minecraft:raw_copper" + }, + { + "type": "minecraft:item", + "weight": 163, + "name": "minecraft:lapis_lazuli" + }, + { + "type": "minecraft:item", + "weight": 168, + "name": "minecraft:raw_iron" + }, + { + "type": "minecraft:item", + "weight": 159, + "name": "minecraft:cobblestone" + }, + { + "type": "minecraft:item", + "weight": 100, + "name": "minecraft:granite" + }, + { + "type": "minecraft:item", + "weight": 99, + "name": "minecraft:diorite" + }, + { + "type": "minecraft:item", + "weight": 101, + "name": "minecraft:andesite" + }, + { + "type": "minecraft:item", + "weight": 80, + "name": "minecraft:tuff" + }, + { + "type": "minecraft:item", + "weight": 92, + "name": "minecraft:cobbled_deepslate" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:calcite" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:smooth_basalt" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:dripstone_block" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:pointed_dripstone" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:amethyst_block" + }, + { + "type": "minecraft:item", + "weight": 215, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/acacia_logs.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/acacia_logs.json new file mode 100644 index 00000000..154ff237 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/acacia_logs.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:acacia_log" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "minecraft:acacia_planks" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:egg" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:acacia_sapling" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/birch_logs.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/birch_logs.json new file mode 100644 index 00000000..41ae1e62 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/birch_logs.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 11, + "name": "minecraft:birch_log" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "minecraft:birch_planks" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:birch_sapling" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/crimson_stems.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/crimson_stems.json new file mode 100644 index 00000000..1cf814a3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/crimson_stems.json @@ -0,0 +1,46 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 7, + "name": "minecraft:crimson_stem" + }, + { + "type": "minecraft:item", + "weight": 9, + "name": "minecraft:crimson_planks" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:shroomlight" + }, + { + "type": "minecraft:item", + "weight": 8, + "name": "minecraft:nether_wart_block" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:nether_wart" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "minecraft:weeping_vines" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/dark_oak_logs.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/dark_oak_logs.json new file mode 100644 index 00000000..9271dd74 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/dark_oak_logs.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:dark_oak_log" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "minecraft:dark_oak_planks" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:dark_oak_sapling" + }, + { + "type": "minecraft:item", + "weight": 5, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/ginkgo_logs.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/ginkgo_logs.json new file mode 100644 index 00000000..b937c325 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/ginkgo_logs.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "name": "emeraldcraft:ginkgo_log" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "emeraldcraft:ginkgo_planks" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "emeraldcraft:ginkgo_nut" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "emeraldcraft:ginkgo_sapling" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/jungle_logs.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/jungle_logs.json new file mode 100644 index 00000000..c425bf34 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/jungle_logs.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:jungle_log" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "minecraft:jungle_planks" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:cocoa_beans" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:jungle_sapling" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/mangrove_logs.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/mangrove_logs.json new file mode 100644 index 00000000..44064885 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/mangrove_logs.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:mangrove_log" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "minecraft:mangrove_planks" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:mangrove_propagule" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:mangrove_roots" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/oak_logs.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/oak_logs.json new file mode 100644 index 00000000..d49d1e5b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/oak_logs.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:oak_log" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "minecraft:oak_planks" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:apple" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:oak_sapling" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/palm_logs.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/palm_logs.json new file mode 100644 index 00000000..f7a45ce5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/palm_logs.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "name": "emeraldcraft:palm_log" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "emeraldcraft:palm_planks" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:coarse_dirt" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "emeraldcraft:palm_sapling" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/peach_logs.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/peach_logs.json new file mode 100644 index 00000000..bccf1ab1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/peach_logs.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "name": "emeraldcraft:peach_log" + }, + { + "type": "minecraft:item", + "weight": 12, + "name": "emeraldcraft:peach_planks" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "emeraldcraft:peach" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "emeraldcraft:peach_sapling" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/purpuraceus_stems.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/purpuraceus_stems.json new file mode 100644 index 00000000..f72cc857 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/purpuraceus_stems.json @@ -0,0 +1,41 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 7, + "name": "emeraldcraft:purpuraceus_stem" + }, + { + "type": "minecraft:item", + "weight": 9, + "name": "emeraldcraft:purpuraceus_planks" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:shroomlight" + }, + { + "type": "minecraft:item", + "weight": 8, + "name": "emeraldcraft:purpuraceus_wart_block" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "emeraldcraft:purpuraceus_fungus" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/spruce_logs.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/spruce_logs.json new file mode 100644 index 00000000..82aee2bc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/spruce_logs.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 10, + "name": "minecraft:spruce_log" + }, + { + "type": "minecraft:item", + "weight": 13, + "name": "minecraft:spruce_planks" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:spruce_sapling" + }, + { + "type": "minecraft:item", + "weight": 4, + "name": "minecraft:stick" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/warped_stems.json b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/warped_stems.json new file mode 100644 index 00000000..aaa05450 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/continuous_miner/wood/warped_stems.json @@ -0,0 +1,46 @@ +{ + "type": "minecraft:empty", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "weight": 7, + "name": "minecraft:warped_stem" + }, + { + "type": "minecraft:item", + "weight": 9, + "name": "minecraft:warped_planks" + }, + { + "type": "minecraft:item", + "weight": 1, + "name": "minecraft:shroomlight" + }, + { + "type": "minecraft:item", + "weight": 8, + "name": "minecraft:warped_wart_block" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "emeraldcraft:warped_wart" + }, + { + "type": "minecraft:item", + "weight": 3, + "name": "minecraft:twisting_vines" + }, + { + "type": "minecraft:item", + "weight": 2, + "name": "minecraft:structure_void" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/entities/herring.json b/src/main/resources/data/emeraldcraft/loot_tables/entities/herring.json new file mode 100644 index 00000000..5a4da67f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/entities/herring.json @@ -0,0 +1,47 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:furnace_smelt", + "conditions": [ + { + "condition": "minecraft:entity_properties", + "predicate": { + "flags": { + "is_on_fire": true + } + }, + "entity": "this" + } + ] + } + ], + "name": "emeraldcraft:herring" + } + ] + }, + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:bone_meal" + } + ], + "conditions": [ + { + "condition": "minecraft:random_chance", + "chance": 0.05 + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/entities/nether_lambman.json b/src/main/resources/data/emeraldcraft/loot_tables/entities/nether_lambman.json new file mode 100644 index 00000000..82287d1c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/entities/nether_lambman.json @@ -0,0 +1,39 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:furnace_smelt", + "conditions": [ + { + "condition": "minecraft:entity_properties", + "predicate": { + "flags": { + "is_on_fire": true + } + }, + "entity": "this" + } + ] + }, + { + "function": "minecraft:looting_enchant", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:mutton" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/entities/nether_pigman.json b/src/main/resources/data/emeraldcraft/loot_tables/entities/nether_pigman.json new file mode 100644 index 00000000..5d1db8e1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/entities/nether_pigman.json @@ -0,0 +1,39 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:furnace_smelt", + "conditions": [ + { + "condition": "minecraft:entity_properties", + "predicate": { + "flags": { + "is_on_fire": true + } + }, + "entity": "this" + } + ] + }, + { + "function": "minecraft:looting_enchant", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:porkchop" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/entities/piglin_cutey.json b/src/main/resources/data/emeraldcraft/loot_tables/entities/piglin_cutey.json new file mode 100644 index 00000000..601c1935 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/entities/piglin_cutey.json @@ -0,0 +1,3 @@ +{ + "type": "minecraft:entity" +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/entities/purple_spotted_bigeye.json b/src/main/resources/data/emeraldcraft/loot_tables/entities/purple_spotted_bigeye.json new file mode 100644 index 00000000..4770100b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/entities/purple_spotted_bigeye.json @@ -0,0 +1,47 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:furnace_smelt", + "conditions": [ + { + "condition": "minecraft:entity_properties", + "predicate": { + "flags": { + "is_on_fire": true + } + }, + "entity": "this" + } + ] + } + ], + "name": "emeraldcraft:purple_spotted_bigeye" + } + ] + }, + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:bone_meal" + } + ], + "conditions": [ + { + "condition": "minecraft:random_chance", + "chance": 0.05 + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/entities/wraith.json b/src/main/resources/data/emeraldcraft/loot_tables/entities/wraith.json new file mode 100644 index 00000000..4612fd8c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/entities/wraith.json @@ -0,0 +1,142 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 2.0 + }, + "add": false + }, + { + "function": "minecraft:looting_enchant", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:bone" + } + ] + }, + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + }, + "add": false + }, + { + "function": "minecraft:looting_enchant", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "emeraldcraft:diamond_nugget" + } + ] + }, + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 2.0 + }, + "add": false + }, + { + "function": "minecraft:looting_enchant", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:rotten_flesh" + } + ] + }, + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + }, + "add": false + } + ], + "name": "minecraft:soul_sand" + } + ] + }, + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + }, + "add": false + }, + { + "function": "minecraft:looting_enchant", + "count": { + "type": "minecraft:uniform", + "min": 0.0, + "max": 1.0 + } + } + ], + "name": "minecraft:dried_kelp" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/astrologist_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/astrologist_gift.json new file mode 100644 index 00000000..42452a30 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/astrologist_gift.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:blaze_powder" + }, + { + "type": "minecraft:item", + "name": "minecraft:soul_sand" + }, + { + "type": "minecraft:item", + "name": "minecraft:carved_pumpkin" + }, + { + "type": "minecraft:item", + "name": "minecraft:amethyst_shard" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/beekeeper_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/beekeeper_gift.json new file mode 100644 index 00000000..f2549af3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/beekeeper_gift.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:honey_bottle" + }, + { + "type": "minecraft:item", + "name": "minecraft:honeycomb" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/carpenter_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/carpenter_gift.json new file mode 100644 index 00000000..b8c7ecc1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/carpenter_gift.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:bookshelf" + }, + { + "type": "minecraft:item", + "name": "minecraft:shulker_shell" + }, + { + "type": "minecraft:item", + "name": "minecraft:note_block" + }, + { + "type": "minecraft:item", + "name": "minecraft:chest" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/chemical_engineer_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/chemical_engineer_gift.json new file mode 100644 index 00000000..f76659c7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/chemical_engineer_gift.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:gunpowder" + }, + { + "type": "minecraft:item", + "name": "minecraft:lapis_lazuli" + }, + { + "type": "minecraft:item", + "name": "minecraft:redstone" + }, + { + "type": "minecraft:item", + "name": "minecraft:bucket" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/geologist_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/geologist_gift.json new file mode 100644 index 00000000..22094456 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/geologist_gift.json @@ -0,0 +1,39 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:bone_block" + }, + { + "type": "minecraft:item", + "name": "minecraft:terracotta" + }, + { + "type": "minecraft:item", + "name": "minecraft:tuff" + }, + { + "type": "minecraft:item", + "name": "minecraft:granite" + }, + { + "type": "minecraft:item", + "name": "minecraft:diorite" + }, + { + "type": "minecraft:item", + "name": "minecraft:andesite" + }, + { + "type": "minecraft:item", + "name": "minecraft:diamond" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/glazier_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/glazier_gift.json new file mode 100644 index 00000000..5ef38b1a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/glazier_gift.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:glass_bottle" + }, + { + "type": "minecraft:item", + "name": "minecraft:terracotta" + }, + { + "type": "minecraft:item", + "name": "minecraft:tinted_glass" + }, + { + "type": "minecraft:item", + "name": "minecraft:glass" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/grower_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/grower_gift.json new file mode 100644 index 00000000..766adf80 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/grower_gift.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:azure_bluet" + }, + { + "type": "minecraft:item", + "name": "minecraft:oxeye_daisy" + }, + { + "type": "minecraft:item", + "name": "minecraft:cornflower" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/icer_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/icer_gift.json new file mode 100644 index 00000000..d461db44 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/icer_gift.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:snowball" + }, + { + "type": "minecraft:item", + "name": "minecraft:snow_block" + }, + { + "type": "minecraft:item", + "name": "minecraft:ice" + }, + { + "type": "minecraft:item", + "name": "minecraft:packed_ice" + }, + { + "type": "minecraft:item", + "name": "minecraft:blue_ice" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/miner_gift.json b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/miner_gift.json new file mode 100644 index 00000000..f974cd26 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/loot_tables/gameplay/hero_of_the_village/miner_gift.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:gift", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "name": "minecraft:iron_ingot" + }, + { + "type": "minecraft:item", + "name": "minecraft:gold_ingot" + }, + { + "type": "minecraft:item", + "name": "minecraft:copper_ingot" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/campfire/boiled_egg_from_campfire_cooking.json b/src/main/resources/data/emeraldcraft/recipes/campfire/boiled_egg_from_campfire_cooking.json new file mode 100644 index 00000000..5f0b73e5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/campfire/boiled_egg_from_campfire_cooking.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:campfire_cooking", + "ingredient": { + "item": "minecraft:egg" + }, + "result": "emeraldcraft:boiled_egg", + "experience": 0.35, + "cookingtime": 600 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/campfire/cooked_herring_from_campfire_cooking.json b/src/main/resources/data/emeraldcraft/recipes/campfire/cooked_herring_from_campfire_cooking.json new file mode 100644 index 00000000..f454b049 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/campfire/cooked_herring_from_campfire_cooking.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:campfire_cooking", + "ingredient": { + "item": "emeraldcraft:herring" + }, + "result": "emeraldcraft:cooked_herring", + "experience": 0.35, + "cookingtime": 600 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/campfire/cooked_purple_spotted_bigeye_from_campfire_cooking.json b/src/main/resources/data/emeraldcraft/recipes/campfire/cooked_purple_spotted_bigeye_from_campfire_cooking.json new file mode 100644 index 00000000..e16114a4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/campfire/cooked_purple_spotted_bigeye_from_campfire_cooking.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:campfire_cooking", + "ingredient": { + "item": "emeraldcraft:purple_spotted_bigeye" + }, + "result": "emeraldcraft:cooked_purple_spotted_bigeye", + "experience": 0.35, + "cookingtime": 600 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/campfire/cooked_purpuraceus_fungus_from_campfire_cooking.json b/src/main/resources/data/emeraldcraft/recipes/campfire/cooked_purpuraceus_fungus_from_campfire_cooking.json new file mode 100644 index 00000000..a3662dee --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/campfire/cooked_purpuraceus_fungus_from_campfire_cooking.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:campfire_cooking", + "ingredient": { + "item": "emeraldcraft:purpuraceus_fungus" + }, + "result": "emeraldcraft:cooked_purpuraceus_fungus", + "experience": 0.35, + "cookingtime": 600 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/campfire/cooked_sausage_from_campfire_cooking.json b/src/main/resources/data/emeraldcraft/recipes/campfire/cooked_sausage_from_campfire_cooking.json new file mode 100644 index 00000000..474aa988 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/campfire/cooked_sausage_from_campfire_cooking.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:campfire_cooking", + "ingredient": { + "item": "emeraldcraft:sausage" + }, + "result": "emeraldcraft:cooked_sausage", + "experience": 0.35, + "cookingtime": 600 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/campfire/cooked_tropical_fish_from_campfire_cooking.json b/src/main/resources/data/emeraldcraft/recipes/campfire/cooked_tropical_fish_from_campfire_cooking.json new file mode 100644 index 00000000..4d3dff54 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/campfire/cooked_tropical_fish_from_campfire_cooking.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:campfire_cooking", + "ingredient": { + "item": "minecraft:tropical_fish" + }, + "result": "emeraldcraft:cooked_tropical_fish", + "experience": 0.35, + "cookingtime": 600 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_boat_from_carpentry.json new file mode 100644 index 00000000..9ce90e76 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "minecraft:acacia_logs" + } + ], + "result": "minecraft:acacia_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_button_from_carpentry.json new file mode 100644 index 00000000..eabe4f32 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:acacia_planks" + } + ], + "result": "minecraft:acacia_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_door_from_carpentry.json new file mode 100644 index 00000000..75c9692d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:acacia_logs" + } + ], + "result": "minecraft:acacia_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_fence_from_carpentry.json new file mode 100644 index 00000000..0c5769ce --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:acacia_planks" + } + ], + "result": "minecraft:acacia_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_fence_gate_from_carpentry.json new file mode 100644 index 00000000..7d848113 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:acacia_planks" + } + ], + "result": "minecraft:acacia_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_planks_from_carpentry.json new file mode 100644 index 00000000..f336242c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:acacia_logs" + } + ], + "result": "minecraft:acacia_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..b3842551 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:acacia_planks" + } + ], + "result": "minecraft:acacia_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_sign_from_carpentry.json new file mode 100644 index 00000000..51af9bdc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:acacia_planks" + } + ], + "result": "minecraft:acacia_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_slab_from_carpentry.json new file mode 100644 index 00000000..473d7611 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:acacia_planks" + } + ], + "result": "minecraft:acacia_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_stairs_from_carpentry.json new file mode 100644 index 00000000..2069aeea --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:acacia_planks" + } + ], + "result": "minecraft:acacia_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_trapdoor_from_carpentry.json new file mode 100644 index 00000000..37d0371b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:acacia_logs" + } + ], + "result": "minecraft:acacia_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_wood_from_carpentry.json new file mode 100644 index 00000000..9add56c8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/acacia_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:acacia_log" + } + ], + "result": "minecraft:acacia_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/barrel_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/barrel_from_carpentry.json new file mode 100644 index 00000000..101b435f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/barrel_from_carpentry.json @@ -0,0 +1,10 @@ +{ + "type": "emeraldcraft:carpentry", + "ingredients": [ + { + "tag": "minecraft:logs" + } + ], + "result": "minecraft:barrel", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_boat_from_carpentry.json new file mode 100644 index 00000000..462ed5c2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "minecraft:birch_logs" + } + ], + "result": "minecraft:birch_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_button_from_carpentry.json new file mode 100644 index 00000000..5820a3cc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:birch_planks" + } + ], + "result": "minecraft:birch_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_door_from_carpentry.json new file mode 100644 index 00000000..d8bc0dd7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:birch_logs" + } + ], + "result": "minecraft:birch_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_fence_from_carpentry.json new file mode 100644 index 00000000..03690cf8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:birch_planks" + } + ], + "result": "minecraft:birch_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_fence_gate_from_carpentry.json new file mode 100644 index 00000000..871b7c45 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:birch_planks" + } + ], + "result": "minecraft:birch_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_planks_from_carpentry.json new file mode 100644 index 00000000..f1345ee3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:birch_logs" + } + ], + "result": "minecraft:birch_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..7a3e57d9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:birch_planks" + } + ], + "result": "minecraft:birch_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_sign_from_carpentry.json new file mode 100644 index 00000000..1c741727 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:birch_planks" + } + ], + "result": "minecraft:birch_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_slab_from_carpentry.json new file mode 100644 index 00000000..af9d0172 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:birch_planks" + } + ], + "result": "minecraft:birch_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_stairs_from_carpentry.json new file mode 100644 index 00000000..e77de61f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:birch_planks" + } + ], + "result": "minecraft:birch_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_trapdoor_from_carpentry.json new file mode 100644 index 00000000..81f661dc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:birch_logs" + } + ], + "result": "minecraft:birch_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_wood_from_carpentry.json new file mode 100644 index 00000000..daadd38c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/birch_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:birch_log" + } + ], + "result": "minecraft:birch_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/bowl_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/bowl_from_carpentry.json new file mode 100644 index 00000000..a4947915 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/bowl_from_carpentry.json @@ -0,0 +1,10 @@ +{ + "type": "emeraldcraft:carpentry", + "ingredients": [ + { + "tag": "minecraft:planks" + } + ], + "result": "minecraft:bowl", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/chest_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/chest_from_carpentry.json new file mode 100644 index 00000000..125cd365 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/chest_from_carpentry.json @@ -0,0 +1,10 @@ +{ + "type": "emeraldcraft:carpentry", + "ingredients": [ + { + "tag": "minecraft:logs" + } + ], + "result": "minecraft:chest", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crafting_table_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crafting_table_from_carpentry.json new file mode 100644 index 00000000..f1fc45af --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crafting_table_from_carpentry.json @@ -0,0 +1,10 @@ +{ + "type": "emeraldcraft:carpentry", + "ingredients": [ + { + "tag": "minecraft:logs" + } + ], + "result": "minecraft:crafting_table", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_button_from_carpentry.json new file mode 100644 index 00000000..7221c873 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:crimson_planks" + } + ], + "result": "minecraft:crimson_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_door_from_carpentry.json new file mode 100644 index 00000000..7ba56510 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:crimson_stems" + } + ], + "result": "minecraft:crimson_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_fence_from_carpentry.json new file mode 100644 index 00000000..98b8a2ac --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:crimson_planks" + } + ], + "result": "minecraft:crimson_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_fence_gate_from_carpentry.json new file mode 100644 index 00000000..1f721e5f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:crimson_planks" + } + ], + "result": "minecraft:crimson_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_hyphae_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_hyphae_from_carpentry.json new file mode 100644 index 00000000..87fed88b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_hyphae_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:crimson_stem" + } + ], + "result": "minecraft:crimson_hyphae", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_planks_from_carpentry.json new file mode 100644 index 00000000..24efd9b1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:crimson_stems" + } + ], + "result": "minecraft:crimson_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..306bc8ba --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:crimson_planks" + } + ], + "result": "minecraft:crimson_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_sign_from_carpentry.json new file mode 100644 index 00000000..0d72a301 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:crimson_planks" + } + ], + "result": "minecraft:crimson_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_slab_from_carpentry.json new file mode 100644 index 00000000..e2dffa50 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:crimson_planks" + } + ], + "result": "minecraft:crimson_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_stairs_from_carpentry.json new file mode 100644 index 00000000..50c9781d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:crimson_planks" + } + ], + "result": "minecraft:crimson_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_trapdoor_from_carpentry.json new file mode 100644 index 00000000..06166435 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/crimson_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:crimson_stems" + } + ], + "result": "minecraft:crimson_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_boat_from_carpentry.json new file mode 100644 index 00000000..9e571354 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "minecraft:dark_oak_logs" + } + ], + "result": "minecraft:dark_oak_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_button_from_carpentry.json new file mode 100644 index 00000000..de69b46a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:dark_oak_planks" + } + ], + "result": "minecraft:dark_oak_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_door_from_carpentry.json new file mode 100644 index 00000000..e429f1b1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:dark_oak_logs" + } + ], + "result": "minecraft:dark_oak_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_fence_from_carpentry.json new file mode 100644 index 00000000..a0e00cc3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:dark_oak_planks" + } + ], + "result": "minecraft:dark_oak_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_fence_gate_from_carpentry.json new file mode 100644 index 00000000..a24697b1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:dark_oak_planks" + } + ], + "result": "minecraft:dark_oak_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_planks_from_carpentry.json new file mode 100644 index 00000000..cfc211e4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:dark_oak_logs" + } + ], + "result": "minecraft:dark_oak_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..90cc0910 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:dark_oak_planks" + } + ], + "result": "minecraft:dark_oak_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_sign_from_carpentry.json new file mode 100644 index 00000000..eeb596be --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:dark_oak_planks" + } + ], + "result": "minecraft:dark_oak_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_slab_from_carpentry.json new file mode 100644 index 00000000..b91e301a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:dark_oak_planks" + } + ], + "result": "minecraft:dark_oak_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_stairs_from_carpentry.json new file mode 100644 index 00000000..1a6f5823 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:dark_oak_planks" + } + ], + "result": "minecraft:dark_oak_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_trapdoor_from_carpentry.json new file mode 100644 index 00000000..8973b4e4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:dark_oak_logs" + } + ], + "result": "minecraft:dark_oak_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_wood_from_carpentry.json new file mode 100644 index 00000000..4b0b1d35 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/dark_oak_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:dark_oak_log" + } + ], + "result": "minecraft:dark_oak_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_boat_from_carpentry.json new file mode 100644 index 00000000..a6fffc55 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "emeraldcraft:ginkgo_logs" + } + ], + "result": "emeraldcraft:ginkgo_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_button_from_carpentry.json new file mode 100644 index 00000000..5283737b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_planks" + } + ], + "result": "emeraldcraft:ginkgo_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_door_from_carpentry.json new file mode 100644 index 00000000..77cca168 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "emeraldcraft:ginkgo_logs" + } + ], + "result": "emeraldcraft:ginkgo_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_fence_from_carpentry.json new file mode 100644 index 00000000..4583ef74 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_planks" + } + ], + "result": "emeraldcraft:ginkgo_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_fence_gate_from_carpentry.json new file mode 100644 index 00000000..bc59e86f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_planks" + } + ], + "result": "emeraldcraft:ginkgo_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_planks_from_carpentry.json new file mode 100644 index 00000000..000e8e5d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "emeraldcraft:ginkgo_logs" + } + ], + "result": "emeraldcraft:ginkgo_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..428ac78b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_planks" + } + ], + "result": "emeraldcraft:ginkgo_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_sign_from_carpentry.json new file mode 100644 index 00000000..4dea5e51 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_planks" + } + ], + "result": "emeraldcraft:ginkgo_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_slab_from_carpentry.json new file mode 100644 index 00000000..64e354f9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_planks" + } + ], + "result": "emeraldcraft:ginkgo_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_stairs_from_carpentry.json new file mode 100644 index 00000000..561e3edd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_planks" + } + ], + "result": "emeraldcraft:ginkgo_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_trapdoor_from_carpentry.json new file mode 100644 index 00000000..7714dc2f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "emeraldcraft:ginkgo_logs" + } + ], + "result": "emeraldcraft:ginkgo_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_wood_from_carpentry.json new file mode 100644 index 00000000..2b134904 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/ginkgo_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_log" + } + ], + "result": "emeraldcraft:ginkgo_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_boat_from_carpentry.json new file mode 100644 index 00000000..ba342c0a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "minecraft:jungle_logs" + } + ], + "result": "minecraft:jungle_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_button_from_carpentry.json new file mode 100644 index 00000000..a2de0c2a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:jungle_planks" + } + ], + "result": "minecraft:jungle_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_door_from_carpentry.json new file mode 100644 index 00000000..bd2932c4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:jungle_logs" + } + ], + "result": "minecraft:jungle_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_fence_from_carpentry.json new file mode 100644 index 00000000..c418ecee --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:jungle_planks" + } + ], + "result": "minecraft:jungle_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_fence_gate_from_carpentry.json new file mode 100644 index 00000000..ea1f9a0d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:jungle_planks" + } + ], + "result": "minecraft:jungle_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_planks_from_carpentry.json new file mode 100644 index 00000000..0bb3f38e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:jungle_logs" + } + ], + "result": "minecraft:jungle_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..86ecdaa3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:jungle_planks" + } + ], + "result": "minecraft:jungle_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_sign_from_carpentry.json new file mode 100644 index 00000000..00a6d873 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:jungle_planks" + } + ], + "result": "minecraft:jungle_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_slab_from_carpentry.json new file mode 100644 index 00000000..4ec6c8b7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:jungle_planks" + } + ], + "result": "minecraft:jungle_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_stairs_from_carpentry.json new file mode 100644 index 00000000..eac2e7fe --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:jungle_planks" + } + ], + "result": "minecraft:jungle_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_trapdoor_from_carpentry.json new file mode 100644 index 00000000..d5239149 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:jungle_logs" + } + ], + "result": "minecraft:jungle_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_wood_from_carpentry.json new file mode 100644 index 00000000..2c25a282 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/jungle_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:jungle_log" + } + ], + "result": "minecraft:jungle_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_boat_from_carpentry.json new file mode 100644 index 00000000..afbd972e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "minecraft:mangrove_logs" + } + ], + "result": "minecraft:mangrove_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_button_from_carpentry.json new file mode 100644 index 00000000..cd80461b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:mangrove_planks" + } + ], + "result": "minecraft:mangrove_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_door_from_carpentry.json new file mode 100644 index 00000000..1098553b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:mangrove_logs" + } + ], + "result": "minecraft:mangrove_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_fence_from_carpentry.json new file mode 100644 index 00000000..921465a4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:mangrove_planks" + } + ], + "result": "minecraft:mangrove_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_fence_gate_from_carpentry.json new file mode 100644 index 00000000..f42502b8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:mangrove_planks" + } + ], + "result": "minecraft:mangrove_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_planks_from_carpentry.json new file mode 100644 index 00000000..e2e8396e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:mangrove_logs" + } + ], + "result": "minecraft:mangrove_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..831a1841 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:mangrove_planks" + } + ], + "result": "minecraft:mangrove_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_sign_from_carpentry.json new file mode 100644 index 00000000..60709d99 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:mangrove_planks" + } + ], + "result": "minecraft:mangrove_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_slab_from_carpentry.json new file mode 100644 index 00000000..53c9d02b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:mangrove_planks" + } + ], + "result": "minecraft:mangrove_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_stairs_from_carpentry.json new file mode 100644 index 00000000..678f61b1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:mangrove_planks" + } + ], + "result": "minecraft:mangrove_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_trapdoor_from_carpentry.json new file mode 100644 index 00000000..0be65905 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:mangrove_logs" + } + ], + "result": "minecraft:mangrove_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_wood_from_carpentry.json new file mode 100644 index 00000000..501bab2a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/mangrove_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:mangrove_log" + } + ], + "result": "minecraft:mangrove_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_boat_from_carpentry.json new file mode 100644 index 00000000..b9ff2570 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "minecraft:oak_logs" + } + ], + "result": "minecraft:oak_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_button_from_carpentry.json new file mode 100644 index 00000000..160dee03 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:oak_planks" + } + ], + "result": "minecraft:oak_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_door_from_carpentry.json new file mode 100644 index 00000000..19d762f3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:oak_logs" + } + ], + "result": "minecraft:oak_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_fence_from_carpentry.json new file mode 100644 index 00000000..00c5eef6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:oak_planks" + } + ], + "result": "minecraft:oak_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_fence_gate_from_carpentry.json new file mode 100644 index 00000000..18ce1cf5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:oak_planks" + } + ], + "result": "minecraft:oak_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_planks_from_carpentry.json new file mode 100644 index 00000000..f7ea05d4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:oak_logs" + } + ], + "result": "minecraft:oak_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..6a0253f7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:oak_planks" + } + ], + "result": "minecraft:oak_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_sign_from_carpentry.json new file mode 100644 index 00000000..dcd74089 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:oak_planks" + } + ], + "result": "minecraft:oak_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_slab_from_carpentry.json new file mode 100644 index 00000000..d33fe7ee --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:oak_planks" + } + ], + "result": "minecraft:oak_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_stairs_from_carpentry.json new file mode 100644 index 00000000..751133f8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:oak_planks" + } + ], + "result": "minecraft:oak_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_trapdoor_from_carpentry.json new file mode 100644 index 00000000..a33c03e8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:oak_logs" + } + ], + "result": "minecraft:oak_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_wood_from_carpentry.json new file mode 100644 index 00000000..9639b119 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/oak_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:oak_log" + } + ], + "result": "minecraft:oak_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_boat_from_carpentry.json new file mode 100644 index 00000000..b7e5de89 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "emeraldcraft:palm_logs" + } + ], + "result": "emeraldcraft:palm_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_button_from_carpentry.json new file mode 100644 index 00000000..68f9c6cd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "emeraldcraft:palm_planks" + } + ], + "result": "emeraldcraft:palm_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_door_from_carpentry.json new file mode 100644 index 00000000..1b50b1fd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "emeraldcraft:palm_logs" + } + ], + "result": "emeraldcraft:palm_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_fence_from_carpentry.json new file mode 100644 index 00000000..c4b2b4b3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "emeraldcraft:palm_planks" + } + ], + "result": "emeraldcraft:palm_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_fence_gate_from_carpentry.json new file mode 100644 index 00000000..b55f23d3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "emeraldcraft:palm_planks" + } + ], + "result": "emeraldcraft:palm_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_planks_from_carpentry.json new file mode 100644 index 00000000..fcb4afd0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "emeraldcraft:palm_logs" + } + ], + "result": "emeraldcraft:palm_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..33e29518 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "emeraldcraft:palm_planks" + } + ], + "result": "emeraldcraft:palm_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_sign_from_carpentry.json new file mode 100644 index 00000000..8bf8e147 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "emeraldcraft:palm_planks" + } + ], + "result": "emeraldcraft:palm_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_slab_from_carpentry.json new file mode 100644 index 00000000..81edc35b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "emeraldcraft:palm_planks" + } + ], + "result": "emeraldcraft:palm_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_stairs_from_carpentry.json new file mode 100644 index 00000000..3a06f066 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "emeraldcraft:palm_planks" + } + ], + "result": "emeraldcraft:palm_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_trapdoor_from_carpentry.json new file mode 100644 index 00000000..b6af0127 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "emeraldcraft:palm_logs" + } + ], + "result": "emeraldcraft:palm_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_wood_from_carpentry.json new file mode 100644 index 00000000..82ef18f7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/palm_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "emeraldcraft:palm_log" + } + ], + "result": "emeraldcraft:palm_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_boat_from_carpentry.json new file mode 100644 index 00000000..3dd8e6da --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "emeraldcraft:peach_logs" + } + ], + "result": "emeraldcraft:peach_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_button_from_carpentry.json new file mode 100644 index 00000000..7ca8ae0c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "emeraldcraft:peach_planks" + } + ], + "result": "emeraldcraft:peach_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_door_from_carpentry.json new file mode 100644 index 00000000..760af2b4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "emeraldcraft:peach_logs" + } + ], + "result": "emeraldcraft:peach_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_fence_from_carpentry.json new file mode 100644 index 00000000..45d0a707 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "emeraldcraft:peach_planks" + } + ], + "result": "emeraldcraft:peach_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_fence_gate_from_carpentry.json new file mode 100644 index 00000000..1f235b71 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "emeraldcraft:peach_planks" + } + ], + "result": "emeraldcraft:peach_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_planks_from_carpentry.json new file mode 100644 index 00000000..00175402 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "emeraldcraft:peach_logs" + } + ], + "result": "emeraldcraft:peach_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..ec0b7e52 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "emeraldcraft:peach_planks" + } + ], + "result": "emeraldcraft:peach_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_sign_from_carpentry.json new file mode 100644 index 00000000..438d4ba9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "emeraldcraft:peach_planks" + } + ], + "result": "emeraldcraft:peach_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_slab_from_carpentry.json new file mode 100644 index 00000000..38e89763 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "emeraldcraft:peach_planks" + } + ], + "result": "emeraldcraft:peach_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_stairs_from_carpentry.json new file mode 100644 index 00000000..7b53bc4a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "emeraldcraft:peach_planks" + } + ], + "result": "emeraldcraft:peach_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_trapdoor_from_carpentry.json new file mode 100644 index 00000000..9856f9c9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "emeraldcraft:peach_logs" + } + ], + "result": "emeraldcraft:peach_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_wood_from_carpentry.json new file mode 100644 index 00000000..2ff65f5e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/peach_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "emeraldcraft:peach_log" + } + ], + "result": "emeraldcraft:peach_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_button_from_carpentry.json new file mode 100644 index 00000000..1f588fe5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "emeraldcraft:purpuraceus_planks" + } + ], + "result": "emeraldcraft:purpuraceus_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_door_from_carpentry.json new file mode 100644 index 00000000..b125b115 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "emeraldcraft:purpuraceus_stems" + } + ], + "result": "emeraldcraft:purpuraceus_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_fence_from_carpentry.json new file mode 100644 index 00000000..5f47be33 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "emeraldcraft:purpuraceus_planks" + } + ], + "result": "emeraldcraft:purpuraceus_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_fence_gate_from_carpentry.json new file mode 100644 index 00000000..37a7f6d2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "emeraldcraft:purpuraceus_planks" + } + ], + "result": "emeraldcraft:purpuraceus_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_hyphae_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_hyphae_from_carpentry.json new file mode 100644 index 00000000..5870d9a8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_hyphae_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "emeraldcraft:purpuraceus_stem" + } + ], + "result": "emeraldcraft:purpuraceus_hyphae", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_planks_from_carpentry.json new file mode 100644 index 00000000..b5d4fb37 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "emeraldcraft:purpuraceus_stems" + } + ], + "result": "emeraldcraft:purpuraceus_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..fd37c0fd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "emeraldcraft:purpuraceus_planks" + } + ], + "result": "emeraldcraft:purpuraceus_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_sign_from_carpentry.json new file mode 100644 index 00000000..372460b7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "emeraldcraft:purpuraceus_planks" + } + ], + "result": "emeraldcraft:purpuraceus_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_slab_from_carpentry.json new file mode 100644 index 00000000..eeea0cf0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "emeraldcraft:purpuraceus_planks" + } + ], + "result": "emeraldcraft:purpuraceus_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_stairs_from_carpentry.json new file mode 100644 index 00000000..072b8045 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "emeraldcraft:purpuraceus_planks" + } + ], + "result": "emeraldcraft:purpuraceus_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_trapdoor_from_carpentry.json new file mode 100644 index 00000000..9ac28c35 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/purpuraceus_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "emeraldcraft:purpuraceus_stems" + } + ], + "result": "emeraldcraft:purpuraceus_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_boat_from_carpentry.json new file mode 100644 index 00000000..6b5de2cb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_boat_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "minecraft:spruce_logs" + } + ], + "result": "minecraft:spruce_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_button_from_carpentry.json new file mode 100644 index 00000000..214ca646 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:spruce_planks" + } + ], + "result": "minecraft:spruce_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_door_from_carpentry.json new file mode 100644 index 00000000..2f261d7b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:spruce_logs" + } + ], + "result": "minecraft:spruce_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_fence_from_carpentry.json new file mode 100644 index 00000000..9412ac67 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:spruce_planks" + } + ], + "result": "minecraft:spruce_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_fence_gate_from_carpentry.json new file mode 100644 index 00000000..a6534c74 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:spruce_planks" + } + ], + "result": "minecraft:spruce_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_planks_from_carpentry.json new file mode 100644 index 00000000..897cdb21 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:spruce_logs" + } + ], + "result": "minecraft:spruce_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..3f505f9b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:spruce_planks" + } + ], + "result": "minecraft:spruce_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_sign_from_carpentry.json new file mode 100644 index 00000000..51babb92 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:spruce_planks" + } + ], + "result": "minecraft:spruce_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_slab_from_carpentry.json new file mode 100644 index 00000000..01db6989 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:spruce_planks" + } + ], + "result": "minecraft:spruce_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_stairs_from_carpentry.json new file mode 100644 index 00000000..1f576d3c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:spruce_planks" + } + ], + "result": "minecraft:spruce_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_trapdoor_from_carpentry.json new file mode 100644 index 00000000..2b2f705d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:spruce_logs" + } + ], + "result": "minecraft:spruce_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_wood_from_carpentry.json new file mode 100644 index 00000000..a83514e6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/spruce_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:spruce_log" + } + ], + "result": "minecraft:spruce_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stick_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stick_from_carpentry.json new file mode 100644 index 00000000..91fba463 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stick_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "sticks", + "ingredients": [ + { + "tag": "minecraft:planks" + } + ], + "result": "minecraft:stick", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_acacia_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_acacia_log_from_carpentry.json new file mode 100644 index 00000000..ba90f673 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_acacia_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:acacia_log" + } + ], + "result": "minecraft:stripped_acacia_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_acacia_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_acacia_wood_from_carpentry.json new file mode 100644 index 00000000..6b1b3dcb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_acacia_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:stripped_acacia_log" + } + ], + "result": "minecraft:stripped_acacia_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_birch_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_birch_log_from_carpentry.json new file mode 100644 index 00000000..e0b62d75 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_birch_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:birch_log" + } + ], + "result": "minecraft:stripped_birch_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_birch_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_birch_wood_from_carpentry.json new file mode 100644 index 00000000..1720afd5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_birch_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:stripped_birch_log" + } + ], + "result": "minecraft:stripped_birch_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_crimson_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_crimson_log_from_carpentry.json new file mode 100644 index 00000000..3af817b0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_crimson_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:crimson_stem" + } + ], + "result": "minecraft:stripped_crimson_stem", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_crimson_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_crimson_wood_from_carpentry.json new file mode 100644 index 00000000..c457bc6c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_crimson_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:stripped_crimson_stem" + } + ], + "result": "minecraft:stripped_crimson_hyphae", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_dark_oak_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_dark_oak_log_from_carpentry.json new file mode 100644 index 00000000..18cababf --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_dark_oak_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:dark_oak_log" + } + ], + "result": "minecraft:stripped_dark_oak_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_dark_oak_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_dark_oak_wood_from_carpentry.json new file mode 100644 index 00000000..eb798c8e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_dark_oak_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:stripped_dark_oak_log" + } + ], + "result": "minecraft:stripped_dark_oak_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_ginkgo_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_ginkgo_log_from_carpentry.json new file mode 100644 index 00000000..434b3f3b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_ginkgo_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_log" + } + ], + "result": "emeraldcraft:stripped_ginkgo_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_ginkgo_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_ginkgo_wood_from_carpentry.json new file mode 100644 index 00000000..7d8f5fee --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_ginkgo_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "emeraldcraft:stripped_ginkgo_log" + } + ], + "result": "emeraldcraft:stripped_ginkgo_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_jungle_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_jungle_log_from_carpentry.json new file mode 100644 index 00000000..9eded676 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_jungle_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:jungle_log" + } + ], + "result": "minecraft:stripped_jungle_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_jungle_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_jungle_wood_from_carpentry.json new file mode 100644 index 00000000..ae66d6e3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_jungle_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:stripped_jungle_log" + } + ], + "result": "minecraft:stripped_jungle_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_oak_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_oak_log_from_carpentry.json new file mode 100644 index 00000000..2ad49eb1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_oak_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:oak_log" + } + ], + "result": "minecraft:stripped_oak_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_oak_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_oak_wood_from_carpentry.json new file mode 100644 index 00000000..7b1b587a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_oak_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:stripped_oak_log" + } + ], + "result": "minecraft:stripped_oak_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_palm_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_palm_log_from_carpentry.json new file mode 100644 index 00000000..b65f6f35 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_palm_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "emeraldcraft:palm_log" + } + ], + "result": "emeraldcraft:stripped_palm_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_palm_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_palm_wood_from_carpentry.json new file mode 100644 index 00000000..d3cdbfc0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_palm_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "emeraldcraft:stripped_palm_log" + } + ], + "result": "emeraldcraft:stripped_palm_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_peach_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_peach_log_from_carpentry.json new file mode 100644 index 00000000..43aa7320 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_peach_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "emeraldcraft:peach_log" + } + ], + "result": "emeraldcraft:stripped_peach_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_peach_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_peach_wood_from_carpentry.json new file mode 100644 index 00000000..aadfa5dd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_peach_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "emeraldcraft:stripped_peach_log" + } + ], + "result": "emeraldcraft:stripped_peach_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_purpuraceus_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_purpuraceus_log_from_carpentry.json new file mode 100644 index 00000000..3144bb3f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_purpuraceus_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "emeraldcraft:purpuraceus_stem" + } + ], + "result": "emeraldcraft:stripped_purpuraceus_stem", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_purpuraceus_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_purpuraceus_wood_from_carpentry.json new file mode 100644 index 00000000..ba4ec668 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_purpuraceus_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "emeraldcraft:stripped_purpuraceus_stem" + } + ], + "result": "emeraldcraft:stripped_purpuraceus_hyphae", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_spruce_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_spruce_log_from_carpentry.json new file mode 100644 index 00000000..f182b63a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_spruce_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:spruce_log" + } + ], + "result": "minecraft:stripped_spruce_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_spruce_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_spruce_wood_from_carpentry.json new file mode 100644 index 00000000..1b639fd4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_spruce_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:stripped_spruce_log" + } + ], + "result": "minecraft:stripped_spruce_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_warped_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_warped_log_from_carpentry.json new file mode 100644 index 00000000..1c54981e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_warped_log_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:warped_stem" + } + ], + "result": "minecraft:stripped_warped_stem", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_warped_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_warped_wood_from_carpentry.json new file mode 100644 index 00000000..99362ba4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/stripped_warped_wood_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:stripped_warped_stem" + } + ], + "result": "minecraft:stripped_warped_hyphae", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_button_from_carpentry.json new file mode 100644 index 00000000..035bc333 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_button_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "minecraft:warped_planks" + } + ], + "result": "minecraft:warped_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_door_from_carpentry.json new file mode 100644 index 00000000..89860216 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_door_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "minecraft:warped_stems" + } + ], + "result": "minecraft:warped_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_fence_from_carpentry.json new file mode 100644 index 00000000..ff171274 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_fence_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "minecraft:warped_planks" + } + ], + "result": "minecraft:warped_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_fence_gate_from_carpentry.json new file mode 100644 index 00000000..4652e566 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_fence_gate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "minecraft:warped_planks" + } + ], + "result": "minecraft:warped_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_hyphae_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_hyphae_from_carpentry.json new file mode 100644 index 00000000..5c25a315 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_hyphae_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "minecraft:warped_stem" + } + ], + "result": "minecraft:warped_hyphae", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_planks_from_carpentry.json new file mode 100644 index 00000000..7141a3cc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_planks_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "minecraft:warped_stems" + } + ], + "result": "minecraft:warped_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..dde29343 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_pressure_plate_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "minecraft:warped_planks" + } + ], + "result": "minecraft:warped_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_sign_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_sign_from_carpentry.json new file mode 100644 index 00000000..957e0281 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_sign_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_sign", + "ingredients": [ + { + "item": "minecraft:warped_planks" + } + ], + "result": "minecraft:warped_sign", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_slab_from_carpentry.json new file mode 100644 index 00000000..f52d0f9c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_slab_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "minecraft:warped_planks" + } + ], + "result": "minecraft:warped_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_stairs_from_carpentry.json new file mode 100644 index 00000000..a24cce3e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_stairs_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "minecraft:warped_planks" + } + ], + "result": "minecraft:warped_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_trapdoor_from_carpentry.json new file mode 100644 index 00000000..5600d13d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/carpentry/warped_trapdoor_from_carpentry.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "minecraft:warped_stems" + } + ], + "result": "minecraft:warped_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_boat_from_carpentry.json new file mode 100644 index 00000000..97e0ad04 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:aspen_logs" + } + ], + "result": "byg:aspen_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_button_from_carpentry.json new file mode 100644 index 00000000..cb645ef9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:aspen_planks" + } + ], + "result": "byg:aspen_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_door_from_carpentry.json new file mode 100644 index 00000000..e1c0fa9b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:aspen_logs" + } + ], + "result": "byg:aspen_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_fence_from_carpentry.json new file mode 100644 index 00000000..c091cd45 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:aspen_planks" + } + ], + "result": "byg:aspen_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_fence_gate_from_carpentry.json new file mode 100644 index 00000000..bb50a74a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:aspen_planks" + } + ], + "result": "byg:aspen_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_planks_from_carpentry.json new file mode 100644 index 00000000..1664f08b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:aspen_logs" + } + ], + "result": "byg:aspen_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..81b39266 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:aspen_planks" + } + ], + "result": "byg:aspen_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_slab_from_carpentry.json new file mode 100644 index 00000000..65f23f99 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:aspen_planks" + } + ], + "result": "byg:aspen_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_stairs_from_carpentry.json new file mode 100644 index 00000000..0b7962d3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:aspen_planks" + } + ], + "result": "byg:aspen_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_trapdoor_from_carpentry.json new file mode 100644 index 00000000..2290b54e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:aspen_logs" + } + ], + "result": "byg:aspen_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_wood_from_carpentry.json new file mode 100644 index 00000000..e70d183a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/aspen_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:aspen_log" + } + ], + "result": "byg:aspen_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_boat_from_carpentry.json new file mode 100644 index 00000000..7c261429 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:baobab_logs" + } + ], + "result": "byg:baobab_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_button_from_carpentry.json new file mode 100644 index 00000000..60107da8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:baobab_planks" + } + ], + "result": "byg:baobab_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_door_from_carpentry.json new file mode 100644 index 00000000..82f8f3c8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:baobab_logs" + } + ], + "result": "byg:baobab_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_fence_from_carpentry.json new file mode 100644 index 00000000..06721d1c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:baobab_planks" + } + ], + "result": "byg:baobab_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_fence_gate_from_carpentry.json new file mode 100644 index 00000000..2cb5bbd9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:baobab_planks" + } + ], + "result": "byg:baobab_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_planks_from_carpentry.json new file mode 100644 index 00000000..e0c5184c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:baobab_logs" + } + ], + "result": "byg:baobab_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..56ab3fe1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:baobab_planks" + } + ], + "result": "byg:baobab_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_slab_from_carpentry.json new file mode 100644 index 00000000..37ce02a9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:baobab_planks" + } + ], + "result": "byg:baobab_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_stairs_from_carpentry.json new file mode 100644 index 00000000..3dbfc72d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:baobab_planks" + } + ], + "result": "byg:baobab_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_trapdoor_from_carpentry.json new file mode 100644 index 00000000..f22f3f3b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:baobab_logs" + } + ], + "result": "byg:baobab_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_wood_from_carpentry.json new file mode 100644 index 00000000..e9b18ad2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/baobab_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:baobab_log" + } + ], + "result": "byg:baobab_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_boat_from_carpentry.json new file mode 100644 index 00000000..8adc0c40 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:blue_enchanted_logs" + } + ], + "result": "byg:blue_enchanted_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_button_from_carpentry.json new file mode 100644 index 00000000..f0eb9a49 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:blue_enchanted_planks" + } + ], + "result": "byg:blue_enchanted_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_door_from_carpentry.json new file mode 100644 index 00000000..7e6e947a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:blue_enchanted_logs" + } + ], + "result": "byg:blue_enchanted_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_fence_from_carpentry.json new file mode 100644 index 00000000..705a711b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:blue_enchanted_planks" + } + ], + "result": "byg:blue_enchanted_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_fence_gate_from_carpentry.json new file mode 100644 index 00000000..6c99d9ed --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:blue_enchanted_planks" + } + ], + "result": "byg:blue_enchanted_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_planks_from_carpentry.json new file mode 100644 index 00000000..30d952f4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:blue_enchanted_logs" + } + ], + "result": "byg:blue_enchanted_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..c904c74f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:blue_enchanted_planks" + } + ], + "result": "byg:blue_enchanted_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_slab_from_carpentry.json new file mode 100644 index 00000000..2bbf5df8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:blue_enchanted_planks" + } + ], + "result": "byg:blue_enchanted_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_stairs_from_carpentry.json new file mode 100644 index 00000000..43d1fd8b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:blue_enchanted_planks" + } + ], + "result": "byg:blue_enchanted_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_trapdoor_from_carpentry.json new file mode 100644 index 00000000..08f9ec1f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:blue_enchanted_logs" + } + ], + "result": "byg:blue_enchanted_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_wood_from_carpentry.json new file mode 100644 index 00000000..e8d1d21b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_enchanted_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:blue_enchanted_log" + } + ], + "result": "byg:blue_enchanted_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_nether_brick_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_nether_brick_from_glasskiln.json new file mode 100644 index 00000000..b11d7c0c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/blue_nether_brick_from_glasskiln.json @@ -0,0 +1,15 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "byg:blue_netherrack" + }, + "result": "byg:blue_nether_brick", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_button_from_carpentry.json new file mode 100644 index 00000000..028e5c05 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:bulbis_planks" + } + ], + "result": "byg:bulbis_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_door_from_carpentry.json new file mode 100644 index 00000000..09c83112 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:bulbis_stems" + } + ], + "result": "byg:bulbis_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_fence_from_carpentry.json new file mode 100644 index 00000000..1caa49f6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:bulbis_planks" + } + ], + "result": "byg:bulbis_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_fence_gate_from_carpentry.json new file mode 100644 index 00000000..390452f0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:bulbis_planks" + } + ], + "result": "byg:bulbis_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_planks_from_carpentry.json new file mode 100644 index 00000000..7aa3b68a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:bulbis_stems" + } + ], + "result": "byg:bulbis_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..3d2decae --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:bulbis_planks" + } + ], + "result": "byg:bulbis_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_slab_from_carpentry.json new file mode 100644 index 00000000..9b9e6b14 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:bulbis_planks" + } + ], + "result": "byg:bulbis_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_stairs_from_carpentry.json new file mode 100644 index 00000000..b0c97e81 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:bulbis_planks" + } + ], + "result": "byg:bulbis_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_trapdoor_from_carpentry.json new file mode 100644 index 00000000..d0725bc6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:bulbis_stems" + } + ], + "result": "byg:bulbis_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_wood_from_carpentry.json new file mode 100644 index 00000000..29286ccf --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/bulbis_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:bulbis_stem" + } + ], + "result": "byg:bulbis_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_boat_from_carpentry.json new file mode 100644 index 00000000..40fba9bb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:cherry_logs" + } + ], + "result": "byg:cherry_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_button_from_carpentry.json new file mode 100644 index 00000000..988557ce --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:cherry_planks" + } + ], + "result": "byg:cherry_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_door_from_carpentry.json new file mode 100644 index 00000000..7f843a7f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:cherry_logs" + } + ], + "result": "byg:cherry_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_fence_from_carpentry.json new file mode 100644 index 00000000..9069f55e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:cherry_planks" + } + ], + "result": "byg:cherry_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_fence_gate_from_carpentry.json new file mode 100644 index 00000000..719dfed1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:cherry_planks" + } + ], + "result": "byg:cherry_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_planks_from_carpentry.json new file mode 100644 index 00000000..cded2ae2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:cherry_logs" + } + ], + "result": "byg:cherry_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..3dc8efc5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:cherry_planks" + } + ], + "result": "byg:cherry_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_slab_from_carpentry.json new file mode 100644 index 00000000..cf4f2281 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:cherry_planks" + } + ], + "result": "byg:cherry_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_stairs_from_carpentry.json new file mode 100644 index 00000000..79220e37 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:cherry_planks" + } + ], + "result": "byg:cherry_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_trapdoor_from_carpentry.json new file mode 100644 index 00000000..8cc7cf6b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:cherry_logs" + } + ], + "result": "byg:cherry_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_wood_from_carpentry.json new file mode 100644 index 00000000..5a766dda --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cherry_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:cherry_log" + } + ], + "result": "byg:cherry_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_boat_from_carpentry.json new file mode 100644 index 00000000..f604d52b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:cika_logs" + } + ], + "result": "byg:cika_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_button_from_carpentry.json new file mode 100644 index 00000000..47f69074 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:cika_planks" + } + ], + "result": "byg:cika_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_door_from_carpentry.json new file mode 100644 index 00000000..2567f0fb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:cika_logs" + } + ], + "result": "byg:cika_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_fence_from_carpentry.json new file mode 100644 index 00000000..324f013a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:cika_planks" + } + ], + "result": "byg:cika_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_fence_gate_from_carpentry.json new file mode 100644 index 00000000..750752db --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:cika_planks" + } + ], + "result": "byg:cika_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_planks_from_carpentry.json new file mode 100644 index 00000000..3584a377 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:cika_logs" + } + ], + "result": "byg:cika_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..0139d6fb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:cika_planks" + } + ], + "result": "byg:cika_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_slab_from_carpentry.json new file mode 100644 index 00000000..3d04962d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:cika_planks" + } + ], + "result": "byg:cika_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_stairs_from_carpentry.json new file mode 100644 index 00000000..44338e73 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:cika_planks" + } + ], + "result": "byg:cika_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_trapdoor_from_carpentry.json new file mode 100644 index 00000000..798f1fa0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:cika_logs" + } + ], + "result": "byg:cika_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_wood_from_carpentry.json new file mode 100644 index 00000000..43450b5d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cika_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:cika_log" + } + ], + "result": "byg:cika_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_boat_from_carpentry.json new file mode 100644 index 00000000..75717bae --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:cypress_logs" + } + ], + "result": "byg:cypress_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_button_from_carpentry.json new file mode 100644 index 00000000..2f8e77c4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:cypress_planks" + } + ], + "result": "byg:cypress_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_door_from_carpentry.json new file mode 100644 index 00000000..cd79f401 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:cypress_logs" + } + ], + "result": "byg:cypress_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_fence_from_carpentry.json new file mode 100644 index 00000000..a45552a6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:cypress_planks" + } + ], + "result": "byg:cypress_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_fence_gate_from_carpentry.json new file mode 100644 index 00000000..fdc5ae7a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:cypress_planks" + } + ], + "result": "byg:cypress_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_planks_from_carpentry.json new file mode 100644 index 00000000..aa4bb00c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:cypress_logs" + } + ], + "result": "byg:cypress_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..ece3b0b1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:cypress_planks" + } + ], + "result": "byg:cypress_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_slab_from_carpentry.json new file mode 100644 index 00000000..9c4d2d8b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:cypress_planks" + } + ], + "result": "byg:cypress_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_stairs_from_carpentry.json new file mode 100644 index 00000000..98878013 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:cypress_planks" + } + ], + "result": "byg:cypress_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_trapdoor_from_carpentry.json new file mode 100644 index 00000000..99c715bc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:cypress_logs" + } + ], + "result": "byg:cypress_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_wood_from_carpentry.json new file mode 100644 index 00000000..7114122b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/cypress_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:cypress_log" + } + ], + "result": "byg:cypress_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_boat_from_carpentry.json new file mode 100644 index 00000000..f9070195 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:ebony_logs" + } + ], + "result": "byg:ebony_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_button_from_carpentry.json new file mode 100644 index 00000000..9786f5c9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:ebony_planks" + } + ], + "result": "byg:ebony_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_door_from_carpentry.json new file mode 100644 index 00000000..25140b82 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:ebony_logs" + } + ], + "result": "byg:ebony_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_fence_from_carpentry.json new file mode 100644 index 00000000..d4ae3dae --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:ebony_planks" + } + ], + "result": "byg:ebony_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_fence_gate_from_carpentry.json new file mode 100644 index 00000000..fc0e9c62 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:ebony_planks" + } + ], + "result": "byg:ebony_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_planks_from_carpentry.json new file mode 100644 index 00000000..5f6bdaaa --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:ebony_logs" + } + ], + "result": "byg:ebony_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..123e6c79 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:ebony_planks" + } + ], + "result": "byg:ebony_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_slab_from_carpentry.json new file mode 100644 index 00000000..9ec8208b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:ebony_planks" + } + ], + "result": "byg:ebony_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_stairs_from_carpentry.json new file mode 100644 index 00000000..44761638 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:ebony_planks" + } + ], + "result": "byg:ebony_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_trapdoor_from_carpentry.json new file mode 100644 index 00000000..5a06dabb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:ebony_logs" + } + ], + "result": "byg:ebony_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_wood_from_carpentry.json new file mode 100644 index 00000000..b5f7f0fc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ebony_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:ebony_log" + } + ], + "result": "byg:ebony_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_button_from_carpentry.json new file mode 100644 index 00000000..97d6fa59 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:embur_planks" + } + ], + "result": "byg:embur_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_door_from_carpentry.json new file mode 100644 index 00000000..25f099fa --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:embur_pedus" + } + ], + "result": "byg:embur_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_fence_from_carpentry.json new file mode 100644 index 00000000..b1c653f6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:embur_planks" + } + ], + "result": "byg:embur_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_fence_gate_from_carpentry.json new file mode 100644 index 00000000..df65d2ad --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:embur_planks" + } + ], + "result": "byg:embur_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_hyphae_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_hyphae_from_carpentry.json new file mode 100644 index 00000000..44575641 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_hyphae_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:embur_pedu" + } + ], + "result": "byg:embur_hyphae", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_planks_from_carpentry.json new file mode 100644 index 00000000..20b659c2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:embur_pedus" + } + ], + "result": "byg:embur_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..fbd4a858 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:embur_planks" + } + ], + "result": "byg:embur_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_slab_from_carpentry.json new file mode 100644 index 00000000..00fb72bb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:embur_planks" + } + ], + "result": "byg:embur_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_stairs_from_carpentry.json new file mode 100644 index 00000000..00aa3778 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:embur_planks" + } + ], + "result": "byg:embur_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_trapdoor_from_carpentry.json new file mode 100644 index 00000000..44ba8414 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/embur_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:embur_pedus" + } + ], + "result": "byg:embur_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_boat_from_carpentry.json new file mode 100644 index 00000000..c45c99e5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:ether_logs" + } + ], + "result": "byg:ether_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_button_from_carpentry.json new file mode 100644 index 00000000..d599c52d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:ether_planks" + } + ], + "result": "byg:ether_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_door_from_carpentry.json new file mode 100644 index 00000000..9104ee8b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:ether_logs" + } + ], + "result": "byg:ether_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_fence_from_carpentry.json new file mode 100644 index 00000000..fd264c5f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:ether_planks" + } + ], + "result": "byg:ether_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_fence_gate_from_carpentry.json new file mode 100644 index 00000000..2f72647f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:ether_planks" + } + ], + "result": "byg:ether_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_planks_from_carpentry.json new file mode 100644 index 00000000..b087a69d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:ether_logs" + } + ], + "result": "byg:ether_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..715bad6d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:ether_planks" + } + ], + "result": "byg:ether_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_slab_from_carpentry.json new file mode 100644 index 00000000..a795dd7a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:ether_planks" + } + ], + "result": "byg:ether_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_stairs_from_carpentry.json new file mode 100644 index 00000000..9843ae81 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:ether_planks" + } + ], + "result": "byg:ether_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_trapdoor_from_carpentry.json new file mode 100644 index 00000000..ac60cffd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:ether_logs" + } + ], + "result": "byg:ether_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_wood_from_carpentry.json new file mode 100644 index 00000000..45103afa --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/ether_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:ether_log" + } + ], + "result": "byg:ether_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_boat_from_carpentry.json new file mode 100644 index 00000000..6fa33295 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:fir_logs" + } + ], + "result": "byg:fir_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_button_from_carpentry.json new file mode 100644 index 00000000..facbbd07 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:fir_planks" + } + ], + "result": "byg:fir_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_door_from_carpentry.json new file mode 100644 index 00000000..0bc3e7de --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:fir_logs" + } + ], + "result": "byg:fir_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_fence_from_carpentry.json new file mode 100644 index 00000000..44988711 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:fir_planks" + } + ], + "result": "byg:fir_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_fence_gate_from_carpentry.json new file mode 100644 index 00000000..d65e484c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:fir_planks" + } + ], + "result": "byg:fir_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_planks_from_carpentry.json new file mode 100644 index 00000000..c4d43066 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:fir_logs" + } + ], + "result": "byg:fir_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..b1b6ec8e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:fir_planks" + } + ], + "result": "byg:fir_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_slab_from_carpentry.json new file mode 100644 index 00000000..794b342d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:fir_planks" + } + ], + "result": "byg:fir_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_stairs_from_carpentry.json new file mode 100644 index 00000000..f2bdb9e5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:fir_planks" + } + ], + "result": "byg:fir_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_trapdoor_from_carpentry.json new file mode 100644 index 00000000..3888be1c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:fir_logs" + } + ], + "result": "byg:fir_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_wood_from_carpentry.json new file mode 100644 index 00000000..db52807c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/fir_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:fir_log" + } + ], + "result": "byg:fir_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_boat_from_carpentry.json new file mode 100644 index 00000000..d407594d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:green_enchanted_logs" + } + ], + "result": "byg:green_enchanted_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_button_from_carpentry.json new file mode 100644 index 00000000..b86328c3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:green_enchanted_planks" + } + ], + "result": "byg:green_enchanted_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_door_from_carpentry.json new file mode 100644 index 00000000..8b9e9081 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:green_enchanted_logs" + } + ], + "result": "byg:green_enchanted_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_fence_from_carpentry.json new file mode 100644 index 00000000..1f2ac68d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:green_enchanted_planks" + } + ], + "result": "byg:green_enchanted_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_fence_gate_from_carpentry.json new file mode 100644 index 00000000..349a15e5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:green_enchanted_planks" + } + ], + "result": "byg:green_enchanted_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_planks_from_carpentry.json new file mode 100644 index 00000000..9292f3ee --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:green_enchanted_logs" + } + ], + "result": "byg:green_enchanted_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..05115999 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:green_enchanted_planks" + } + ], + "result": "byg:green_enchanted_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_slab_from_carpentry.json new file mode 100644 index 00000000..04461176 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:green_enchanted_planks" + } + ], + "result": "byg:green_enchanted_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_stairs_from_carpentry.json new file mode 100644 index 00000000..35024b66 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:green_enchanted_planks" + } + ], + "result": "byg:green_enchanted_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_trapdoor_from_carpentry.json new file mode 100644 index 00000000..a10cd4ad --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:green_enchanted_logs" + } + ], + "result": "byg:green_enchanted_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_wood_from_carpentry.json new file mode 100644 index 00000000..6200ad29 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/green_enchanted_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:green_enchanted_log" + } + ], + "result": "byg:green_enchanted_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_boat_from_carpentry.json new file mode 100644 index 00000000..b95c2486 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:holly_logs" + } + ], + "result": "byg:holly_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_button_from_carpentry.json new file mode 100644 index 00000000..4988847d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:holly_planks" + } + ], + "result": "byg:holly_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_door_from_carpentry.json new file mode 100644 index 00000000..ac246d09 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:holly_logs" + } + ], + "result": "byg:holly_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_fence_from_carpentry.json new file mode 100644 index 00000000..cedae0f7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:holly_planks" + } + ], + "result": "byg:holly_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_fence_gate_from_carpentry.json new file mode 100644 index 00000000..ac303e2f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:holly_planks" + } + ], + "result": "byg:holly_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_planks_from_carpentry.json new file mode 100644 index 00000000..72278c37 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:holly_logs" + } + ], + "result": "byg:holly_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..c07a75eb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:holly_planks" + } + ], + "result": "byg:holly_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_slab_from_carpentry.json new file mode 100644 index 00000000..d2bf67de --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:holly_planks" + } + ], + "result": "byg:holly_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_stairs_from_carpentry.json new file mode 100644 index 00000000..b8237f8f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:holly_planks" + } + ], + "result": "byg:holly_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_trapdoor_from_carpentry.json new file mode 100644 index 00000000..587993d8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:holly_logs" + } + ], + "result": "byg:holly_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_wood_from_carpentry.json new file mode 100644 index 00000000..8b0f8ef0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/holly_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:holly_log" + } + ], + "result": "byg:holly_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_button_from_carpentry.json new file mode 100644 index 00000000..b2758a9d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:imparius_planks" + } + ], + "result": "byg:imparius_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_door_from_carpentry.json new file mode 100644 index 00000000..fd0e5303 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:imparius_stems" + } + ], + "result": "byg:imparius_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_fence_from_carpentry.json new file mode 100644 index 00000000..e8fd7c6d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:imparius_planks" + } + ], + "result": "byg:imparius_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_fence_gate_from_carpentry.json new file mode 100644 index 00000000..dee59adb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:imparius_planks" + } + ], + "result": "byg:imparius_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_hyphae_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_hyphae_from_carpentry.json new file mode 100644 index 00000000..39e88993 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_hyphae_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:imparius_stem" + } + ], + "result": "byg:imparius_hyphae", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_planks_from_carpentry.json new file mode 100644 index 00000000..cd428071 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:imparius_stems" + } + ], + "result": "byg:imparius_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..6f5b938c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:imparius_planks" + } + ], + "result": "byg:imparius_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_slab_from_carpentry.json new file mode 100644 index 00000000..1442546b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:imparius_planks" + } + ], + "result": "byg:imparius_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_stairs_from_carpentry.json new file mode 100644 index 00000000..86c7d475 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:imparius_planks" + } + ], + "result": "byg:imparius_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_trapdoor_from_carpentry.json new file mode 100644 index 00000000..ea8575f5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/imparius_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:imparius_stems" + } + ], + "result": "byg:imparius_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_boat_from_carpentry.json new file mode 100644 index 00000000..9d6dbfea --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:jacaranda_logs" + } + ], + "result": "byg:jacaranda_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_button_from_carpentry.json new file mode 100644 index 00000000..2bb24699 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:jacaranda_planks" + } + ], + "result": "byg:jacaranda_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_door_from_carpentry.json new file mode 100644 index 00000000..fa26b719 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:jacaranda_logs" + } + ], + "result": "byg:jacaranda_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_fence_from_carpentry.json new file mode 100644 index 00000000..a33dfb60 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:jacaranda_planks" + } + ], + "result": "byg:jacaranda_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_fence_gate_from_carpentry.json new file mode 100644 index 00000000..7622914a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:jacaranda_planks" + } + ], + "result": "byg:jacaranda_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_planks_from_carpentry.json new file mode 100644 index 00000000..faec4549 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:jacaranda_logs" + } + ], + "result": "byg:jacaranda_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..8c9af50e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:jacaranda_planks" + } + ], + "result": "byg:jacaranda_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_slab_from_carpentry.json new file mode 100644 index 00000000..dda6ce1f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:jacaranda_planks" + } + ], + "result": "byg:jacaranda_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_stairs_from_carpentry.json new file mode 100644 index 00000000..59d14994 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:jacaranda_planks" + } + ], + "result": "byg:jacaranda_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_trapdoor_from_carpentry.json new file mode 100644 index 00000000..da113025 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:jacaranda_logs" + } + ], + "result": "byg:jacaranda_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_wood_from_carpentry.json new file mode 100644 index 00000000..15071d34 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/jacaranda_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:jacaranda_log" + } + ], + "result": "byg:jacaranda_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_boat_from_carpentry.json new file mode 100644 index 00000000..92fcba3d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:lament_logs" + } + ], + "result": "byg:lament_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_button_from_carpentry.json new file mode 100644 index 00000000..ec1fdfe6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:lament_planks" + } + ], + "result": "byg:lament_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_door_from_carpentry.json new file mode 100644 index 00000000..34649762 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:lament_logs" + } + ], + "result": "byg:lament_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_fence_from_carpentry.json new file mode 100644 index 00000000..f7c457f5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:lament_planks" + } + ], + "result": "byg:lament_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_fence_gate_from_carpentry.json new file mode 100644 index 00000000..80b8f2d4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:lament_planks" + } + ], + "result": "byg:lament_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_planks_from_carpentry.json new file mode 100644 index 00000000..fbd4f08f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:lament_logs" + } + ], + "result": "byg:lament_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..9b004f0e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:lament_planks" + } + ], + "result": "byg:lament_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_slab_from_carpentry.json new file mode 100644 index 00000000..68899cdb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:lament_planks" + } + ], + "result": "byg:lament_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_stairs_from_carpentry.json new file mode 100644 index 00000000..3b4e7393 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:lament_planks" + } + ], + "result": "byg:lament_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_trapdoor_from_carpentry.json new file mode 100644 index 00000000..b989f67d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:lament_logs" + } + ], + "result": "byg:lament_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_wood_from_carpentry.json new file mode 100644 index 00000000..a75352db --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/lament_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:lament_log" + } + ], + "result": "byg:lament_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_boat_from_carpentry.json new file mode 100644 index 00000000..1429707c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:mahogany_logs" + } + ], + "result": "byg:mahogany_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_button_from_carpentry.json new file mode 100644 index 00000000..e764d22c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:mahogany_planks" + } + ], + "result": "byg:mahogany_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_door_from_carpentry.json new file mode 100644 index 00000000..c9882f13 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:mahogany_logs" + } + ], + "result": "byg:mahogany_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_fence_from_carpentry.json new file mode 100644 index 00000000..726b2d6e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:mahogany_planks" + } + ], + "result": "byg:mahogany_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_fence_gate_from_carpentry.json new file mode 100644 index 00000000..b1dde601 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:mahogany_planks" + } + ], + "result": "byg:mahogany_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_planks_from_carpentry.json new file mode 100644 index 00000000..d3ed644e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:mahogany_logs" + } + ], + "result": "byg:mahogany_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..810bfc2d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:mahogany_planks" + } + ], + "result": "byg:mahogany_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_slab_from_carpentry.json new file mode 100644 index 00000000..1239a671 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:mahogany_planks" + } + ], + "result": "byg:mahogany_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_stairs_from_carpentry.json new file mode 100644 index 00000000..96f9b009 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:mahogany_planks" + } + ], + "result": "byg:mahogany_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_trapdoor_from_carpentry.json new file mode 100644 index 00000000..4cb8db84 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:mahogany_logs" + } + ], + "result": "byg:mahogany_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_wood_from_carpentry.json new file mode 100644 index 00000000..bc4c5207 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mahogany_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:mahogany_log" + } + ], + "result": "byg:mahogany_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_boat_from_carpentry.json new file mode 100644 index 00000000..881538e0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:mangrove_logs" + } + ], + "result": "byg:mangrove_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_button_from_carpentry.json new file mode 100644 index 00000000..9652c6f1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:mangrove_planks" + } + ], + "result": "byg:mangrove_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_door_from_carpentry.json new file mode 100644 index 00000000..e2a8c5d4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:mangrove_logs" + } + ], + "result": "byg:mangrove_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_fence_from_carpentry.json new file mode 100644 index 00000000..32378add --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:mangrove_planks" + } + ], + "result": "byg:mangrove_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_fence_gate_from_carpentry.json new file mode 100644 index 00000000..1b346ca7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:mangrove_planks" + } + ], + "result": "byg:mangrove_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_planks_from_carpentry.json new file mode 100644 index 00000000..01ba27fc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:mangrove_logs" + } + ], + "result": "byg:mangrove_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..36ce2489 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:mangrove_planks" + } + ], + "result": "byg:mangrove_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_slab_from_carpentry.json new file mode 100644 index 00000000..d0dcc2f8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:mangrove_planks" + } + ], + "result": "byg:mangrove_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_stairs_from_carpentry.json new file mode 100644 index 00000000..e32532b0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:mangrove_planks" + } + ], + "result": "byg:mangrove_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_trapdoor_from_carpentry.json new file mode 100644 index 00000000..e13dc2ed --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:mangrove_logs" + } + ], + "result": "byg:mangrove_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_wood_from_carpentry.json new file mode 100644 index 00000000..64715b55 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/mangrove_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:mangrove_log" + } + ], + "result": "byg:mangrove_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_boat_from_carpentry.json new file mode 100644 index 00000000..f9127175 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:maple_logs" + } + ], + "result": "byg:maple_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_button_from_carpentry.json new file mode 100644 index 00000000..dcd1caf1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:maple_planks" + } + ], + "result": "byg:maple_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_door_from_carpentry.json new file mode 100644 index 00000000..0a66c897 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:maple_logs" + } + ], + "result": "byg:maple_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_fence_from_carpentry.json new file mode 100644 index 00000000..644cb32f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:maple_planks" + } + ], + "result": "byg:maple_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_fence_gate_from_carpentry.json new file mode 100644 index 00000000..5c85e390 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:maple_planks" + } + ], + "result": "byg:maple_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_planks_from_carpentry.json new file mode 100644 index 00000000..1eb9007e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:maple_logs" + } + ], + "result": "byg:maple_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..5e89efc2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:maple_planks" + } + ], + "result": "byg:maple_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_slab_from_carpentry.json new file mode 100644 index 00000000..85a33492 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:maple_planks" + } + ], + "result": "byg:maple_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_stairs_from_carpentry.json new file mode 100644 index 00000000..14bed8ee --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:maple_planks" + } + ], + "result": "byg:maple_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_trapdoor_from_carpentry.json new file mode 100644 index 00000000..5607ea3e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:maple_logs" + } + ], + "result": "byg:maple_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_wood_from_carpentry.json new file mode 100644 index 00000000..3187744e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/maple_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:maple_log" + } + ], + "result": "byg:maple_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_boat_from_carpentry.json new file mode 100644 index 00000000..e2e01096 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:nightshade_logs" + } + ], + "result": "byg:nightshade_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_button_from_carpentry.json new file mode 100644 index 00000000..c3ddce88 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:nightshade_planks" + } + ], + "result": "byg:nightshade_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_door_from_carpentry.json new file mode 100644 index 00000000..ff8661b0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:nightshade_logs" + } + ], + "result": "byg:nightshade_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_fence_from_carpentry.json new file mode 100644 index 00000000..a05b668d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:nightshade_planks" + } + ], + "result": "byg:nightshade_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_fence_gate_from_carpentry.json new file mode 100644 index 00000000..a667ff4a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:nightshade_planks" + } + ], + "result": "byg:nightshade_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_planks_from_carpentry.json new file mode 100644 index 00000000..d31284f3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:nightshade_logs" + } + ], + "result": "byg:nightshade_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..2d41d161 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:nightshade_planks" + } + ], + "result": "byg:nightshade_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_slab_from_carpentry.json new file mode 100644 index 00000000..d84a8074 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:nightshade_planks" + } + ], + "result": "byg:nightshade_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_stairs_from_carpentry.json new file mode 100644 index 00000000..ae785576 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:nightshade_planks" + } + ], + "result": "byg:nightshade_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_trapdoor_from_carpentry.json new file mode 100644 index 00000000..5e8e7480 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:nightshade_logs" + } + ], + "result": "byg:nightshade_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_wood_from_carpentry.json new file mode 100644 index 00000000..b08598f4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/nightshade_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:nightshade_log" + } + ], + "result": "byg:nightshade_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_boat_from_carpentry.json new file mode 100644 index 00000000..4b8314b0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:palm_logs" + } + ], + "result": "byg:palm_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_button_from_carpentry.json new file mode 100644 index 00000000..bd4cf055 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:palm_planks" + } + ], + "result": "byg:palm_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_door_from_carpentry.json new file mode 100644 index 00000000..1e86a798 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:palm_logs" + } + ], + "result": "byg:palm_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_fence_from_carpentry.json new file mode 100644 index 00000000..69df97af --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:palm_planks" + } + ], + "result": "byg:palm_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_fence_gate_from_carpentry.json new file mode 100644 index 00000000..a010ba36 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:palm_planks" + } + ], + "result": "byg:palm_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_planks_from_carpentry.json new file mode 100644 index 00000000..1116be3e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:palm_logs" + } + ], + "result": "byg:palm_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..1a8dd87f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:palm_planks" + } + ], + "result": "byg:palm_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_slab_from_carpentry.json new file mode 100644 index 00000000..04048176 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:palm_planks" + } + ], + "result": "byg:palm_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_stairs_from_carpentry.json new file mode 100644 index 00000000..384cff52 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:palm_planks" + } + ], + "result": "byg:palm_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_trapdoor_from_carpentry.json new file mode 100644 index 00000000..bff2802e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:palm_logs" + } + ], + "result": "byg:palm_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_wood_from_carpentry.json new file mode 100644 index 00000000..6af64c00 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palm_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:palm_log" + } + ], + "result": "byg:palm_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_boat_from_carpentry.json new file mode 100644 index 00000000..9bf5f439 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:palo_verde_logs" + } + ], + "result": "minecraft:birch_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_door_from_carpentry.json new file mode 100644 index 00000000..3d13aa9c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:palo_verde_logs" + } + ], + "result": "minecraft:birch_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_planks_from_carpentry.json new file mode 100644 index 00000000..f4fe79ee --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:palo_verde_logs" + } + ], + "result": "minecraft:birch_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_trapdoor_from_carpentry.json new file mode 100644 index 00000000..e1a1355e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:palo_verde_logs" + } + ], + "result": "minecraft:birch_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_wood_from_carpentry.json new file mode 100644 index 00000000..35980ace --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/palo_verde_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:palo_verde_log" + } + ], + "result": "byg:palo_verde_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_boat_from_carpentry.json new file mode 100644 index 00000000..8d6dde09 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:pine_logs" + } + ], + "result": "byg:pine_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_button_from_carpentry.json new file mode 100644 index 00000000..152dc896 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:pine_planks" + } + ], + "result": "byg:pine_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_door_from_carpentry.json new file mode 100644 index 00000000..b1197f3e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:pine_logs" + } + ], + "result": "byg:pine_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_fence_from_carpentry.json new file mode 100644 index 00000000..fb4b8abc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:pine_planks" + } + ], + "result": "byg:pine_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_fence_gate_from_carpentry.json new file mode 100644 index 00000000..045b2bf5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:pine_planks" + } + ], + "result": "byg:pine_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_planks_from_carpentry.json new file mode 100644 index 00000000..ababbcd7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:pine_logs" + } + ], + "result": "byg:pine_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..0c0db621 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:pine_planks" + } + ], + "result": "byg:pine_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_slab_from_carpentry.json new file mode 100644 index 00000000..6a32b906 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:pine_planks" + } + ], + "result": "byg:pine_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_stairs_from_carpentry.json new file mode 100644 index 00000000..2d66f439 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:pine_planks" + } + ], + "result": "byg:pine_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_trapdoor_from_carpentry.json new file mode 100644 index 00000000..59f3e8cb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:pine_logs" + } + ], + "result": "byg:pine_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_wood_from_carpentry.json new file mode 100644 index 00000000..4ed2bbba --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/pine_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:pine_log" + } + ], + "result": "byg:pine_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_boat_from_carpentry.json new file mode 100644 index 00000000..20b06413 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:rainbow_eucalyptus_logs" + } + ], + "result": "byg:rainbow_eucalyptus_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_button_from_carpentry.json new file mode 100644 index 00000000..c1b1c9a2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:rainbow_eucalyptus_planks" + } + ], + "result": "byg:rainbow_eucalyptus_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_door_from_carpentry.json new file mode 100644 index 00000000..1811ae94 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:rainbow_eucalyptus_logs" + } + ], + "result": "byg:rainbow_eucalyptus_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_fence_from_carpentry.json new file mode 100644 index 00000000..589f909d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:rainbow_eucalyptus_planks" + } + ], + "result": "byg:rainbow_eucalyptus_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_fence_gate_from_carpentry.json new file mode 100644 index 00000000..3227cb28 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:rainbow_eucalyptus_planks" + } + ], + "result": "byg:rainbow_eucalyptus_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_planks_from_carpentry.json new file mode 100644 index 00000000..207a690e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:rainbow_eucalyptus_logs" + } + ], + "result": "byg:rainbow_eucalyptus_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..c2f3b6dc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:rainbow_eucalyptus_planks" + } + ], + "result": "byg:rainbow_eucalyptus_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_slab_from_carpentry.json new file mode 100644 index 00000000..7bc3d625 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:rainbow_eucalyptus_planks" + } + ], + "result": "byg:rainbow_eucalyptus_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_stairs_from_carpentry.json new file mode 100644 index 00000000..f1b0e923 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:rainbow_eucalyptus_planks" + } + ], + "result": "byg:rainbow_eucalyptus_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_trapdoor_from_carpentry.json new file mode 100644 index 00000000..7222d4ef --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:rainbow_eucalyptus_logs" + } + ], + "result": "byg:rainbow_eucalyptus_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_wood_from_carpentry.json new file mode 100644 index 00000000..57560837 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/rainbow_eucalyptus_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:rainbow_eucalyptus_log" + } + ], + "result": "byg:rainbow_eucalyptus_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_boat_from_carpentry.json new file mode 100644 index 00000000..54e6169d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:redwood_logs" + } + ], + "result": "byg:redwood_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_button_from_carpentry.json new file mode 100644 index 00000000..512143f4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:redwood_planks" + } + ], + "result": "byg:redwood_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_door_from_carpentry.json new file mode 100644 index 00000000..b0df3ac1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:redwood_logs" + } + ], + "result": "byg:redwood_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_fence_from_carpentry.json new file mode 100644 index 00000000..c6c2844b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:redwood_planks" + } + ], + "result": "byg:redwood_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_fence_gate_from_carpentry.json new file mode 100644 index 00000000..a95cc462 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:redwood_planks" + } + ], + "result": "byg:redwood_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_planks_from_carpentry.json new file mode 100644 index 00000000..03c1fe58 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:redwood_logs" + } + ], + "result": "byg:redwood_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..dc22f907 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:redwood_planks" + } + ], + "result": "byg:redwood_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_slab_from_carpentry.json new file mode 100644 index 00000000..2a2bcce9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:redwood_planks" + } + ], + "result": "byg:redwood_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_stairs_from_carpentry.json new file mode 100644 index 00000000..4938efcd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:redwood_planks" + } + ], + "result": "byg:redwood_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_trapdoor_from_carpentry.json new file mode 100644 index 00000000..540a45dd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:redwood_logs" + } + ], + "result": "byg:redwood_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_wood_from_carpentry.json new file mode 100644 index 00000000..b2f0b7bc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/redwood_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:redwood_log" + } + ], + "result": "byg:redwood_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_boat_from_carpentry.json new file mode 100644 index 00000000..dd77bdd0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:skyris_logs" + } + ], + "result": "byg:skyris_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_button_from_carpentry.json new file mode 100644 index 00000000..3affb4f9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:skyris_planks" + } + ], + "result": "byg:skyris_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_door_from_carpentry.json new file mode 100644 index 00000000..5d62ca6d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:skyris_logs" + } + ], + "result": "byg:skyris_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_fence_from_carpentry.json new file mode 100644 index 00000000..510f96af --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:skyris_planks" + } + ], + "result": "byg:skyris_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_fence_gate_from_carpentry.json new file mode 100644 index 00000000..6d6dd69f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:skyris_planks" + } + ], + "result": "byg:skyris_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_planks_from_carpentry.json new file mode 100644 index 00000000..acf2334c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:skyris_logs" + } + ], + "result": "byg:skyris_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..3c312244 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:skyris_planks" + } + ], + "result": "byg:skyris_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_slab_from_carpentry.json new file mode 100644 index 00000000..faa2cb05 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:skyris_planks" + } + ], + "result": "byg:skyris_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_stairs_from_carpentry.json new file mode 100644 index 00000000..993a6f81 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:skyris_planks" + } + ], + "result": "byg:skyris_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_trapdoor_from_carpentry.json new file mode 100644 index 00000000..f341c570 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:skyris_logs" + } + ], + "result": "byg:skyris_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_wood_from_carpentry.json new file mode 100644 index 00000000..83bbcfc3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/skyris_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:skyris_log" + } + ], + "result": "byg:skyris_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_aspen_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_aspen_log_from_carpentry.json new file mode 100644 index 00000000..c3890023 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_aspen_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:aspen_log" + } + ], + "result": "byg:stripped_aspen_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_aspen_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_aspen_wood_from_carpentry.json new file mode 100644 index 00000000..1a3fd824 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_aspen_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_aspen_log" + } + ], + "result": "byg:stripped_aspen_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_baobab_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_baobab_log_from_carpentry.json new file mode 100644 index 00000000..d4d542cb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_baobab_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:baobab_log" + } + ], + "result": "byg:stripped_baobab_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_baobab_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_baobab_wood_from_carpentry.json new file mode 100644 index 00000000..0ed89081 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_baobab_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_baobab_log" + } + ], + "result": "byg:stripped_baobab_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_blue_enchanted_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_blue_enchanted_log_from_carpentry.json new file mode 100644 index 00000000..6b83085d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_blue_enchanted_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:blue_enchanted_log" + } + ], + "result": "byg:stripped_blue_enchanted_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_blue_enchanted_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_blue_enchanted_wood_from_carpentry.json new file mode 100644 index 00000000..e08287cb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_blue_enchanted_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_blue_enchanted_log" + } + ], + "result": "byg:stripped_blue_enchanted_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_bulbis_stem_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_bulbis_stem_from_carpentry.json new file mode 100644 index 00000000..425d3d38 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_bulbis_stem_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:bulbis_stem" + } + ], + "result": "byg:stripped_bulbis_stem", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_bulbis_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_bulbis_wood_from_carpentry.json new file mode 100644 index 00000000..76433f07 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_bulbis_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_bulbis_stem" + } + ], + "result": "byg:stripped_bulbis_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cherry_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cherry_log_from_carpentry.json new file mode 100644 index 00000000..17fb9a38 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cherry_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:cherry_log" + } + ], + "result": "byg:stripped_cherry_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cherry_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cherry_wood_from_carpentry.json new file mode 100644 index 00000000..7de7b68b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cherry_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_cherry_log" + } + ], + "result": "byg:stripped_cherry_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cika_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cika_log_from_carpentry.json new file mode 100644 index 00000000..5b9c4fef --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cika_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:cika_log" + } + ], + "result": "byg:stripped_cika_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cika_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cika_wood_from_carpentry.json new file mode 100644 index 00000000..60d68ad5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cika_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_cika_log" + } + ], + "result": "byg:stripped_cika_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cypress_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cypress_log_from_carpentry.json new file mode 100644 index 00000000..7d309fdc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cypress_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:cypress_log" + } + ], + "result": "byg:stripped_cypress_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cypress_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cypress_wood_from_carpentry.json new file mode 100644 index 00000000..dffc6c41 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_cypress_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_cypress_log" + } + ], + "result": "byg:stripped_cypress_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_ebony_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_ebony_log_from_carpentry.json new file mode 100644 index 00000000..f94cc437 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_ebony_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:ebony_log" + } + ], + "result": "byg:stripped_ebony_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_ebony_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_ebony_wood_from_carpentry.json new file mode 100644 index 00000000..0365a710 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_ebony_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_ebony_log" + } + ], + "result": "byg:stripped_ebony_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_embur_hyphae_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_embur_hyphae_from_carpentry.json new file mode 100644 index 00000000..c5437674 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_embur_hyphae_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_embur_pedu" + } + ], + "result": "byg:stripped_embur_hyphae", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_embur_pedu_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_embur_pedu_from_carpentry.json new file mode 100644 index 00000000..f370ac8f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_embur_pedu_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:embur_pedu" + } + ], + "result": "byg:stripped_embur_pedu", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_ether_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_ether_log_from_carpentry.json new file mode 100644 index 00000000..c86ab317 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_ether_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:ether_log" + } + ], + "result": "byg:stripped_ether_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_ether_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_ether_wood_from_carpentry.json new file mode 100644 index 00000000..56b195fe --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_ether_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_ether_log" + } + ], + "result": "byg:stripped_ether_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_fir_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_fir_log_from_carpentry.json new file mode 100644 index 00000000..3e518d67 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_fir_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:fir_log" + } + ], + "result": "byg:stripped_fir_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_fir_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_fir_wood_from_carpentry.json new file mode 100644 index 00000000..fe55fd53 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_fir_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_fir_log" + } + ], + "result": "byg:stripped_fir_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_green_enchanted_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_green_enchanted_log_from_carpentry.json new file mode 100644 index 00000000..c739f88a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_green_enchanted_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:green_enchanted_log" + } + ], + "result": "byg:stripped_green_enchanted_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_green_enchanted_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_green_enchanted_wood_from_carpentry.json new file mode 100644 index 00000000..ddbe6578 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_green_enchanted_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_green_enchanted_log" + } + ], + "result": "byg:stripped_green_enchanted_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_holly_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_holly_log_from_carpentry.json new file mode 100644 index 00000000..4a8fe172 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_holly_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:holly_log" + } + ], + "result": "byg:stripped_holly_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_holly_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_holly_wood_from_carpentry.json new file mode 100644 index 00000000..472d63cd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_holly_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_holly_log" + } + ], + "result": "byg:stripped_holly_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_jacaranda_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_jacaranda_log_from_carpentry.json new file mode 100644 index 00000000..f1c5a3cb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_jacaranda_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:jacaranda_log" + } + ], + "result": "byg:stripped_jacaranda_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_jacaranda_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_jacaranda_wood_from_carpentry.json new file mode 100644 index 00000000..f18fd255 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_jacaranda_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_jacaranda_log" + } + ], + "result": "byg:stripped_jacaranda_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_lament_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_lament_log_from_carpentry.json new file mode 100644 index 00000000..59d68496 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_lament_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:lament_log" + } + ], + "result": "byg:stripped_lament_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_lament_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_lament_wood_from_carpentry.json new file mode 100644 index 00000000..2f76583f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_lament_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_lament_log" + } + ], + "result": "byg:stripped_lament_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_mahogany_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_mahogany_log_from_carpentry.json new file mode 100644 index 00000000..7c8849b5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_mahogany_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:mahogany_log" + } + ], + "result": "byg:stripped_mahogany_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_mahogany_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_mahogany_wood_from_carpentry.json new file mode 100644 index 00000000..312995c2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_mahogany_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_mahogany_log" + } + ], + "result": "byg:stripped_mahogany_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_mangrove_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_mangrove_log_from_carpentry.json new file mode 100644 index 00000000..f8b1bc93 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_mangrove_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:mangrove_log" + } + ], + "result": "byg:stripped_mangrove_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_mangrove_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_mangrove_wood_from_carpentry.json new file mode 100644 index 00000000..821642f8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_mangrove_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_mangrove_log" + } + ], + "result": "byg:stripped_mangrove_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_maple_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_maple_log_from_carpentry.json new file mode 100644 index 00000000..b30b218a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_maple_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:maple_log" + } + ], + "result": "byg:stripped_maple_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_maple_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_maple_wood_from_carpentry.json new file mode 100644 index 00000000..a5c477ef --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_maple_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_maple_log" + } + ], + "result": "byg:stripped_maple_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_nightshade_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_nightshade_log_from_carpentry.json new file mode 100644 index 00000000..b8d16495 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_nightshade_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:nightshade_log" + } + ], + "result": "byg:stripped_nightshade_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_nightshade_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_nightshade_wood_from_carpentry.json new file mode 100644 index 00000000..d5d58a9b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_nightshade_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_nightshade_log" + } + ], + "result": "byg:stripped_nightshade_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_palm_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_palm_log_from_carpentry.json new file mode 100644 index 00000000..8fbf9525 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_palm_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:palm_log" + } + ], + "result": "byg:stripped_palm_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_palm_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_palm_wood_from_carpentry.json new file mode 100644 index 00000000..74be7a74 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_palm_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_palm_log" + } + ], + "result": "byg:stripped_palm_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_palo_verde_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_palo_verde_log_from_carpentry.json new file mode 100644 index 00000000..48a4f6d5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_palo_verde_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:palo_verde_log" + } + ], + "result": "byg:stripped_palo_verde_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_palo_verde_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_palo_verde_wood_from_carpentry.json new file mode 100644 index 00000000..6ed026a2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_palo_verde_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_palo_verde_log" + } + ], + "result": "byg:stripped_palo_verde_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_pine_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_pine_log_from_carpentry.json new file mode 100644 index 00000000..7413df2c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_pine_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:pine_log" + } + ], + "result": "byg:stripped_pine_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_pine_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_pine_wood_from_carpentry.json new file mode 100644 index 00000000..c54c009c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_pine_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_pine_log" + } + ], + "result": "byg:stripped_pine_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_rainbow_eucalyptus_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_rainbow_eucalyptus_log_from_carpentry.json new file mode 100644 index 00000000..09d538f7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_rainbow_eucalyptus_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:rainbow_eucalyptus_log" + } + ], + "result": "byg:stripped_rainbow_eucalyptus_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_rainbow_eucalyptus_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_rainbow_eucalyptus_wood_from_carpentry.json new file mode 100644 index 00000000..213285e9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_rainbow_eucalyptus_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_rainbow_eucalyptus_log" + } + ], + "result": "byg:stripped_rainbow_eucalyptus_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_redwood_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_redwood_log_from_carpentry.json new file mode 100644 index 00000000..483d263e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_redwood_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:redwood_log" + } + ], + "result": "byg:stripped_redwood_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_redwood_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_redwood_wood_from_carpentry.json new file mode 100644 index 00000000..eaabcc6e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_redwood_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_redwood_log" + } + ], + "result": "byg:stripped_redwood_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_skyris_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_skyris_log_from_carpentry.json new file mode 100644 index 00000000..2fdbb9f5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_skyris_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:skyris_log" + } + ], + "result": "byg:stripped_skyris_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_skyris_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_skyris_wood_from_carpentry.json new file mode 100644 index 00000000..49052761 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_skyris_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_skyris_log" + } + ], + "result": "byg:stripped_skyris_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_sythian_hyphae_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_sythian_hyphae_from_carpentry.json new file mode 100644 index 00000000..e320ea4d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_sythian_hyphae_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_sythian_stem" + } + ], + "result": "byg:stripped_sythian_hyphae", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_sythian_stem_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_sythian_stem_from_carpentry.json new file mode 100644 index 00000000..7587ded9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_sythian_stem_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:sythian_stem" + } + ], + "result": "byg:stripped_sythian_stem", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_willow_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_willow_log_from_carpentry.json new file mode 100644 index 00000000..9839c768 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_willow_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:willow_log" + } + ], + "result": "byg:stripped_willow_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_willow_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_willow_wood_from_carpentry.json new file mode 100644 index 00000000..bb605883 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_willow_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_willow_log" + } + ], + "result": "byg:stripped_willow_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_witch_hazel_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_witch_hazel_log_from_carpentry.json new file mode 100644 index 00000000..0fcc729d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_witch_hazel_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:witch_hazel_log" + } + ], + "result": "byg:stripped_witch_hazel_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_witch_hazel_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_witch_hazel_wood_from_carpentry.json new file mode 100644 index 00000000..0b17351a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_witch_hazel_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_witch_hazel_log" + } + ], + "result": "byg:stripped_witch_hazel_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_zelkova_log_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_zelkova_log_from_carpentry.json new file mode 100644 index 00000000..4bc04acc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_zelkova_log_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:zelkova_log" + } + ], + "result": "byg:stripped_zelkova_log", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_zelkova_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_zelkova_wood_from_carpentry.json new file mode 100644 index 00000000..0cb3afd0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/stripped_zelkova_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:stripped_zelkova_log" + } + ], + "result": "byg:stripped_zelkova_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_button_from_carpentry.json new file mode 100644 index 00000000..b60029a3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:sythian_planks" + } + ], + "result": "byg:sythian_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_door_from_carpentry.json new file mode 100644 index 00000000..9cbc5eb9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:sythian_stems" + } + ], + "result": "byg:sythian_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_fence_from_carpentry.json new file mode 100644 index 00000000..29490899 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:sythian_planks" + } + ], + "result": "byg:sythian_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_fence_gate_from_carpentry.json new file mode 100644 index 00000000..931e7321 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:sythian_planks" + } + ], + "result": "byg:sythian_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_hyphae_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_hyphae_from_carpentry.json new file mode 100644 index 00000000..46dbd815 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_hyphae_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:sythian_stem" + } + ], + "result": "byg:sythian_hyphae", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_planks_from_carpentry.json new file mode 100644 index 00000000..d00d81ee --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:sythian_stems" + } + ], + "result": "byg:sythian_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..daa4e63a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:sythian_planks" + } + ], + "result": "byg:sythian_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_slab_from_carpentry.json new file mode 100644 index 00000000..ac6639a3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:sythian_planks" + } + ], + "result": "byg:sythian_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_stairs_from_carpentry.json new file mode 100644 index 00000000..d0d583d4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:sythian_planks" + } + ], + "result": "byg:sythian_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_trapdoor_from_carpentry.json new file mode 100644 index 00000000..6a98cc8a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/sythian_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:sythian_stems" + } + ], + "result": "byg:sythian_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_boat_from_carpentry.json new file mode 100644 index 00000000..bc5ecc1d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:willow_logs" + } + ], + "result": "byg:willow_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_button_from_carpentry.json new file mode 100644 index 00000000..92ab0f06 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:willow_planks" + } + ], + "result": "byg:willow_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_door_from_carpentry.json new file mode 100644 index 00000000..a60f3f9a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:willow_logs" + } + ], + "result": "byg:willow_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_fence_from_carpentry.json new file mode 100644 index 00000000..f7f8d9f1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:willow_planks" + } + ], + "result": "byg:willow_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_fence_gate_from_carpentry.json new file mode 100644 index 00000000..e3ef56f3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:willow_planks" + } + ], + "result": "byg:willow_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_planks_from_carpentry.json new file mode 100644 index 00000000..b0f845f6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:willow_logs" + } + ], + "result": "byg:willow_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..0825b7a3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:willow_planks" + } + ], + "result": "byg:willow_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_slab_from_carpentry.json new file mode 100644 index 00000000..5283add7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:willow_planks" + } + ], + "result": "byg:willow_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_stairs_from_carpentry.json new file mode 100644 index 00000000..de26730b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:willow_planks" + } + ], + "result": "byg:willow_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_trapdoor_from_carpentry.json new file mode 100644 index 00000000..69759cc8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:willow_logs" + } + ], + "result": "byg:willow_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_wood_from_carpentry.json new file mode 100644 index 00000000..c671625a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/willow_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:willow_log" + } + ], + "result": "byg:willow_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_boat_from_carpentry.json new file mode 100644 index 00000000..ebecbdb1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:witch_hazel_logs" + } + ], + "result": "byg:witch_hazel_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_button_from_carpentry.json new file mode 100644 index 00000000..a3f067bb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:witch_hazel_planks" + } + ], + "result": "byg:witch_hazel_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_door_from_carpentry.json new file mode 100644 index 00000000..707dc315 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:witch_hazel_logs" + } + ], + "result": "byg:witch_hazel_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_fence_from_carpentry.json new file mode 100644 index 00000000..93d74ae2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:witch_hazel_planks" + } + ], + "result": "byg:witch_hazel_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_fence_gate_from_carpentry.json new file mode 100644 index 00000000..40a2028b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:witch_hazel_planks" + } + ], + "result": "byg:witch_hazel_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_planks_from_carpentry.json new file mode 100644 index 00000000..5092d377 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:witch_hazel_logs" + } + ], + "result": "byg:witch_hazel_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..6590c03b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:witch_hazel_planks" + } + ], + "result": "byg:witch_hazel_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_slab_from_carpentry.json new file mode 100644 index 00000000..4e7ea12c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:witch_hazel_planks" + } + ], + "result": "byg:witch_hazel_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_stairs_from_carpentry.json new file mode 100644 index 00000000..fd3bf2f9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:witch_hazel_planks" + } + ], + "result": "byg:witch_hazel_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_trapdoor_from_carpentry.json new file mode 100644 index 00000000..32ec700c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:witch_hazel_logs" + } + ], + "result": "byg:witch_hazel_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_wood_from_carpentry.json new file mode 100644 index 00000000..66c1643b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/witch_hazel_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:witch_hazel_log" + } + ], + "result": "byg:witch_hazel_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_boat_from_carpentry.json new file mode 100644 index 00000000..d1f8eb6d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:withering_oak_logs" + } + ], + "result": "minecraft:oak_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_door_from_carpentry.json new file mode 100644 index 00000000..784c1c6d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:withering_oak_logs" + } + ], + "result": "minecraft:oak_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_planks_from_carpentry.json new file mode 100644 index 00000000..a58c6c17 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:withering_oak_logs" + } + ], + "result": "minecraft:oak_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_trapdoor_from_carpentry.json new file mode 100644 index 00000000..fe7fdd10 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:withering_oak_logs" + } + ], + "result": "minecraft:oak_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_wood_from_carpentry.json new file mode 100644 index 00000000..ff689276 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/withering_oak_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:withering_oak_log" + } + ], + "result": "byg:withering_oak_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/yellow_nether_brick.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/yellow_nether_brick.json new file mode 100644 index 00000000..071c80a1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/yellow_nether_brick.json @@ -0,0 +1,15 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "byg:brimstone" + }, + "result": "byg:yellow_nether_brick", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_boat_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_boat_from_carpentry.json new file mode 100644 index 00000000..f3b8a649 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_boat_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "boat", + "ingredients": [ + { + "tag": "byg:zelkova_logs" + } + ], + "result": "byg:zelkova_boat", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_button_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_button_from_carpentry.json new file mode 100644 index 00000000..af3fe2d9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_button_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_button", + "ingredients": [ + { + "item": "byg:zelkova_planks" + } + ], + "result": "byg:zelkova_button", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_door_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_door_from_carpentry.json new file mode 100644 index 00000000..8ac09f7b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_door_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_door", + "ingredients": [ + { + "tag": "byg:zelkova_logs" + } + ], + "result": "byg:zelkova_door", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_fence_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_fence_from_carpentry.json new file mode 100644 index 00000000..3074447c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_fence_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence", + "ingredients": [ + { + "item": "byg:zelkova_planks" + } + ], + "result": "byg:zelkova_fence", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_fence_gate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_fence_gate_from_carpentry.json new file mode 100644 index 00000000..a5efdd54 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_fence_gate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_fence_gate", + "ingredients": [ + { + "item": "byg:zelkova_planks" + } + ], + "result": "byg:zelkova_fence_gate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_planks_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_planks_from_carpentry.json new file mode 100644 index 00000000..6e6fec9f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_planks_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "planks", + "ingredients": [ + { + "tag": "byg:zelkova_logs" + } + ], + "result": "byg:zelkova_planks", + "count": 4 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_pressure_plate_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_pressure_plate_from_carpentry.json new file mode 100644 index 00000000..ed128207 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_pressure_plate_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_pressure_plate", + "ingredients": [ + { + "item": "byg:zelkova_planks" + } + ], + "result": "byg:zelkova_pressure_plate", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_slab_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_slab_from_carpentry.json new file mode 100644 index 00000000..ce48feb2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_slab_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_slab", + "ingredients": [ + { + "item": "byg:zelkova_planks" + } + ], + "result": "byg:zelkova_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_stairs_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_stairs_from_carpentry.json new file mode 100644 index 00000000..df704ab8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_stairs_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_stairs", + "ingredients": [ + { + "item": "byg:zelkova_planks" + } + ], + "result": "byg:zelkova_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_trapdoor_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_trapdoor_from_carpentry.json new file mode 100644 index 00000000..3298db68 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_trapdoor_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "wooden_trapdoor", + "ingredients": [ + { + "tag": "byg:zelkova_logs" + } + ], + "result": "byg:zelkova_trapdoor", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_wood_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_wood_from_carpentry.json new file mode 100644 index 00000000..53902bce --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/byg/zelkova_wood_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "byg" + } + ], + "type": "emeraldcraft:carpentry", + "group": "bark", + "ingredients": [ + { + "item": "byg:zelkova_log" + } + ], + "result": "byg:zelkova_wood", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/copper_nugget_from_dark_sand_splashing.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/copper_nugget_from_dark_sand_splashing.json new file mode 100644 index 00000000..6d25531b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/copper_nugget_from_dark_sand_splashing.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "create:splashing", + "ingredients": [ + { + "item": "emeraldcraft:dark_sand" + } + ], + "results": [ + { + "item": "create:copper_nugget", + "count": 3, + "chance": 0.125 + }, + { + "item": "minecraft:dead_bush", + "chance": 0.05 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/crying_obsidian_from_haunting.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/crying_obsidian_from_haunting.json new file mode 100644 index 00000000..cad91838 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/crying_obsidian_from_haunting.json @@ -0,0 +1,19 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "create:haunting", + "ingredients": [ + { + "item": "minecraft:obsidian" + } + ], + "results": [ + { + "item": "minecraft:crying_obsidian" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/cyan_dye_from_cyan_petunia_milling.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/cyan_dye_from_cyan_petunia_milling.json new file mode 100644 index 00000000..bca91d15 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/cyan_dye_from_cyan_petunia_milling.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "emeraldcraft:cyan_petunia" + } + ], + "results": [ + { + "item": "minecraft:cyan_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.05 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/emerald_nugget_from_jadeite_sand_splashing.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/emerald_nugget_from_jadeite_sand_splashing.json new file mode 100644 index 00000000..5affcf18 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/emerald_nugget_from_jadeite_sand_splashing.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "create:splashing", + "ingredients": [ + { + "item": "emeraldcraft:jadeite_sand" + } + ], + "results": [ + { + "item": "emeraldcraft:emerald_nugget", + "count": 3, + "chance": 0.125 + }, + { + "item": "minecraft:dead_bush", + "chance": 0.05 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/glass_from_vitrified_sand_splashing.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/glass_from_vitrified_sand_splashing.json new file mode 100644 index 00000000..6c9cee58 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/glass_from_vitrified_sand_splashing.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "create:splashing", + "ingredients": [ + { + "item": "emeraldcraft:vitrified_sand" + } + ], + "results": [ + { + "item": "minecraft:glass", + "count": 3, + "chance": 0.125 + }, + { + "item": "minecraft:blaze_powder", + "chance": 0.05 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/lapis_nugget_from_azure_sand_splashing.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/lapis_nugget_from_azure_sand_splashing.json new file mode 100644 index 00000000..3413aca3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/lapis_nugget_from_azure_sand_splashing.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "create:splashing", + "ingredients": [ + { + "item": "emeraldcraft:azure_sand" + } + ], + "results": [ + { + "item": "emeraldcraft:lapis_nugget", + "count": 3, + "chance": 0.125 + }, + { + "item": "minecraft:dead_bush", + "chance": 0.05 + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/magenta_dye_from_magenta_petunia_milling.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/magenta_dye_from_magenta_petunia_milling.json new file mode 100644 index 00000000..7cb23086 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/magenta_dye_from_magenta_petunia_milling.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "emeraldcraft:magenta_petunia" + } + ], + "results": [ + { + "item": "minecraft:magenta_dye", + "count": 2 + }, + { + "item": "minecraft:green_dye", + "chance": 0.05 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/melted_zinc_from_zinc_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/melted_zinc_from_zinc_block_melter.json new file mode 100644 index 00000000..16b7cde7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/melted_zinc_from_zinc_block_melter.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "emeraldcraft:melter", + "ingredient": { + "item": "create:zinc_block" + }, + "result": { + "fluid": "melted_zinc", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/melted_zinc_from_zinc_concentrate_melter.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/melted_zinc_from_zinc_concentrate_melter.json new file mode 100644 index 00000000..549235c4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/melted_zinc_from_zinc_concentrate_melter.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "emeraldcraft:melter", + "ingredient": { + "item": "emeraldcraft:zinc_concentrate" + }, + "result": { + "fluid": "melted_zinc", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/purple_dye_from_higan_bana_milling.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/purple_dye_from_higan_bana_milling.json new file mode 100644 index 00000000..7b7ad8df --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/purple_dye_from_higan_bana_milling.json @@ -0,0 +1,35 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "create:milling", + "ingredients": [ + { + "item": "emeraldcraft:higan_bana" + } + ], + "results": [ + { + "item": "minecraft:purple_dye", + "count": 1 + }, + { + "item": "minecraft:purple_dye", + "count": 1, + "chance": 0.5 + }, + { + "item": "minecraft:red_dye", + "count": 1, + "chance": 0.5 + }, + { + "item": "minecraft:green_dye", + "chance": 0.05 + } + ], + "processingTime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_block_from_zinc_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_block_from_zinc_fluid_ice_maker.json new file mode 100644 index 00000000..2d0caf91 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_block_from_zinc_fluid_ice_maker.json @@ -0,0 +1,15 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "melted_zinc", + "amount": 100 + }, + "result": "create:zinc_block", + "freezingtime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_concentrate.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_concentrate.json new file mode 100644 index 00000000..c9ac596c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_concentrate.json @@ -0,0 +1,22 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "create:raw_zinc" + } + }, + "result": { + "item": "emeraldcraft:zinc_concentrate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_slab.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_slab.json new file mode 100644 index 00000000..1a00980c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_slab.json @@ -0,0 +1,23 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "create:zinc_block" + } + ] + }, + "result": { + "item": "emeraldcraft:zinc_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_slab_from_zinc_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_slab_from_zinc_block_stonecutting.json new file mode 100644 index 00000000..703879a5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_slab_from_zinc_block_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "create:zinc_block" + }, + "result": "emeraldcraft:zinc_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_stairs.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_stairs.json new file mode 100644 index 00000000..944a8dc5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_stairs.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "create:zinc_block" + } + ] + }, + "result": { + "item": "emeraldcraft:zinc_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_stairs_from_zinc_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_stairs_from_zinc_stonecutting.json new file mode 100644 index 00000000..874f655a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_stairs_from_zinc_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "create:zinc_block" + }, + "result": "emeraldcraft:zinc_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_wall.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_wall.json new file mode 100644 index 00000000..a72cecb6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_wall.json @@ -0,0 +1,22 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "create:zinc_block" + } + }, + "result": { + "item": "emeraldcraft:zinc_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_wall_from_zinc_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_wall_from_zinc_block_stonecutting.json new file mode 100644 index 00000000..9588fec4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/create/zinc_wall_from_zinc_block_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "create" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "create:zinc_block" + }, + "result": "emeraldcraft:zinc_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_block_from_aluminum_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_block_from_aluminum_fluid_ice_maker.json new file mode 100644 index 00000000..4a86e505 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_block_from_aluminum_fluid_ice_maker.json @@ -0,0 +1,15 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "melted_aluminum", + "amount": 100 + }, + "result": "immersiveengineering:storage_aluminum", + "freezingtime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_concentrate.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_concentrate.json new file mode 100644 index 00000000..ba2f1c13 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_concentrate.json @@ -0,0 +1,22 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "immersiveengineering:raw_aluminum" + } + }, + "result": { + "item": "emeraldcraft:aluminum_concentrate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_stairs.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_stairs.json new file mode 100644 index 00000000..25534fb4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_stairs.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "immersiveengineering:storage_aluminum" + } + ] + }, + "result": { + "item": "emeraldcraft:aluminum_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_stairs_from_aluminum_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_stairs_from_aluminum_stonecutting.json new file mode 100644 index 00000000..df2b8254 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_stairs_from_aluminum_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "immersiveengineering:storage_aluminum" + }, + "result": "emeraldcraft:aluminum_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_wall.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_wall.json new file mode 100644 index 00000000..71f59d39 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_wall.json @@ -0,0 +1,22 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "immersiveengineering:storage_aluminum" + } + }, + "result": { + "item": "emeraldcraft:aluminum_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_wall_from_aluminum_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_wall_from_aluminum_block_stonecutting.json new file mode 100644 index 00000000..2a58207e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/aluminum_wall_from_aluminum_block_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "immersiveengineering:storage_aluminum" + }, + "result": "emeraldcraft:aluminum_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/constantan_stairs.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/constantan_stairs.json new file mode 100644 index 00000000..4bb85c32 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/constantan_stairs.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "immersiveengineering:storage_constantan" + } + ] + }, + "result": { + "item": "emeraldcraft:constantan_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/constantan_stairs_from_constantan_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/constantan_stairs_from_constantan_stonecutting.json new file mode 100644 index 00000000..8b18c886 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/constantan_stairs_from_constantan_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "immersiveengineering:storage_constantan" + }, + "result": "emeraldcraft:constantan_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/constantan_wall.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/constantan_wall.json new file mode 100644 index 00000000..14d90262 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/constantan_wall.json @@ -0,0 +1,22 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "immersiveengineering:storage_constantan" + } + }, + "result": { + "item": "emeraldcraft:constantan_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/constantan_wall_from_constantan_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/constantan_wall_from_constantan_block_stonecutting.json new file mode 100644 index 00000000..51776c55 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/constantan_wall_from_constantan_block_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "immersiveengineering:storage_constantan" + }, + "result": "emeraldcraft:constantan_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/electrum_stairs.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/electrum_stairs.json new file mode 100644 index 00000000..3a0cd8d4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/electrum_stairs.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "immersiveengineering:storage_electrum" + } + ] + }, + "result": { + "item": "emeraldcraft:electrum_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/electrum_stairs_from_electrum_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/electrum_stairs_from_electrum_stonecutting.json new file mode 100644 index 00000000..aae29fb7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/electrum_stairs_from_electrum_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "immersiveengineering:storage_electrum" + }, + "result": "emeraldcraft:electrum_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/electrum_wall.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/electrum_wall.json new file mode 100644 index 00000000..9133c024 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/electrum_wall.json @@ -0,0 +1,22 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "immersiveengineering:storage_electrum" + } + }, + "result": { + "item": "emeraldcraft:electrum_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/electrum_wall_from_electrum_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/electrum_wall_from_electrum_block_stonecutting.json new file mode 100644 index 00000000..eb19d18f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/electrum_wall_from_electrum_block_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "immersiveengineering:storage_electrum" + }, + "result": "emeraldcraft:electrum_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_block_from_lead_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_block_from_lead_fluid_ice_maker.json new file mode 100644 index 00000000..deb5d718 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_block_from_lead_fluid_ice_maker.json @@ -0,0 +1,15 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "melted_lead", + "amount": 100 + }, + "result": "immersiveengineering:storage_lead", + "freezingtime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_concentrate.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_concentrate.json new file mode 100644 index 00000000..2d92623c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_concentrate.json @@ -0,0 +1,22 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "immersiveengineering:raw_lead" + } + }, + "result": { + "item": "emeraldcraft:lead_concentrate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_stairs.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_stairs.json new file mode 100644 index 00000000..9ade3992 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_stairs.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "immersiveengineering:storage_lead" + } + ] + }, + "result": { + "item": "emeraldcraft:lead_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_stairs_from_lead_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_stairs_from_lead_stonecutting.json new file mode 100644 index 00000000..fbef1605 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_stairs_from_lead_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "immersiveengineering:storage_lead" + }, + "result": "emeraldcraft:lead_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_wall.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_wall.json new file mode 100644 index 00000000..4e1ba068 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_wall.json @@ -0,0 +1,22 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "immersiveengineering:storage_lead" + } + }, + "result": { + "item": "emeraldcraft:lead_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_wall_from_lead_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_wall_from_lead_block_stonecutting.json new file mode 100644 index 00000000..efda114c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/lead_wall_from_lead_block_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "immersiveengineering:storage_lead" + }, + "result": "emeraldcraft:lead_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_aluminum_from_aluminum_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_aluminum_from_aluminum_block_melter.json new file mode 100644 index 00000000..2b91f724 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_aluminum_from_aluminum_block_melter.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "emeraldcraft:melter", + "ingredient": { + "item": "immersiveengineering:storage_aluminum" + }, + "result": { + "fluid": "melted_aluminum", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_aluminum_from_aluminum_concentrate_melter.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_aluminum_from_aluminum_concentrate_melter.json new file mode 100644 index 00000000..9f2bfab3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_aluminum_from_aluminum_concentrate_melter.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "emeraldcraft:melter", + "ingredient": { + "item": "emeraldcraft:aluminum_concentrate" + }, + "result": { + "fluid": "melted_aluminum", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_lead_from_lead_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_lead_from_lead_block_melter.json new file mode 100644 index 00000000..9ee3a03f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_lead_from_lead_block_melter.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "emeraldcraft:melter", + "ingredient": { + "item": "immersiveengineering:storage_lead" + }, + "result": { + "fluid": "melted_lead", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_lead_from_lead_concentrate_melter.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_lead_from_lead_concentrate_melter.json new file mode 100644 index 00000000..d431924f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_lead_from_lead_concentrate_melter.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "emeraldcraft:melter", + "ingredient": { + "item": "emeraldcraft:lead_concentrate" + }, + "result": { + "fluid": "melted_lead", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_nickel_from_nickel_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_nickel_from_nickel_block_melter.json new file mode 100644 index 00000000..de2c0783 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_nickel_from_nickel_block_melter.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "emeraldcraft:melter", + "ingredient": { + "item": "immersiveengineering:storage_nickel" + }, + "result": { + "fluid": "melted_nickel", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_nickel_from_nickel_concentrate_melter.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_nickel_from_nickel_concentrate_melter.json new file mode 100644 index 00000000..4a60e4dd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_nickel_from_nickel_concentrate_melter.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "emeraldcraft:melter", + "ingredient": { + "item": "emeraldcraft:nickel_concentrate" + }, + "result": { + "fluid": "melted_nickel", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_silver_from_silver_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_silver_from_silver_block_melter.json new file mode 100644 index 00000000..c1a40bfd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_silver_from_silver_block_melter.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "emeraldcraft:melter", + "ingredient": { + "item": "immersiveengineering:storage_silver" + }, + "result": { + "fluid": "melted_silver", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_silver_from_silver_concentrate_melter.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_silver_from_silver_concentrate_melter.json new file mode 100644 index 00000000..8f266981 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_silver_from_silver_concentrate_melter.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "emeraldcraft:melter", + "ingredient": { + "item": "emeraldcraft:silver_concentrate" + }, + "result": { + "fluid": "melted_silver", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_uranium_from_uranium_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_uranium_from_uranium_block_melter.json new file mode 100644 index 00000000..a87e03b1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_uranium_from_uranium_block_melter.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "emeraldcraft:melter", + "ingredient": { + "item": "immersiveengineering:storage_uranium" + }, + "result": { + "fluid": "melted_uranium", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_uranium_from_uranium_concentrate_melter.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_uranium_from_uranium_concentrate_melter.json new file mode 100644 index 00000000..48a03a15 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/melted_uranium_from_uranium_concentrate_melter.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "emeraldcraft:melter", + "ingredient": { + "item": "emeraldcraft:uranium_concentrate" + }, + "result": { + "fluid": "melted_uranium", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_block_from_nickel_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_block_from_nickel_fluid_ice_maker.json new file mode 100644 index 00000000..c886a739 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_block_from_nickel_fluid_ice_maker.json @@ -0,0 +1,15 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "melted_nickel", + "amount": 100 + }, + "result": "immersiveengineering:storage_nickel", + "freezingtime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_concentrate.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_concentrate.json new file mode 100644 index 00000000..2be0d985 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_concentrate.json @@ -0,0 +1,22 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "immersiveengineering:raw_nickel" + } + }, + "result": { + "item": "emeraldcraft:nickel_concentrate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_stairs.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_stairs.json new file mode 100644 index 00000000..2f382209 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_stairs.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "immersiveengineering:storage_nickel" + } + ] + }, + "result": { + "item": "emeraldcraft:nickel_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_stairs_from_nickel_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_stairs_from_nickel_stonecutting.json new file mode 100644 index 00000000..dede3e91 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_stairs_from_nickel_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "immersiveengineering:storage_nickel" + }, + "result": "emeraldcraft:nickel_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_wall.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_wall.json new file mode 100644 index 00000000..5acf6c1a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_wall.json @@ -0,0 +1,22 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "immersiveengineering:storage_nickel" + } + }, + "result": { + "item": "emeraldcraft:nickel_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_wall_from_nickel_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_wall_from_nickel_block_stonecutting.json new file mode 100644 index 00000000..02a8947c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/nickel_wall_from_nickel_block_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "immersiveengineering:storage_nickel" + }, + "result": "emeraldcraft:nickel_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_block_from_silver_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_block_from_silver_fluid_ice_maker.json new file mode 100644 index 00000000..ef9e1672 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_block_from_silver_fluid_ice_maker.json @@ -0,0 +1,15 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "melted_silver", + "amount": 100 + }, + "result": "immersiveengineering:storage_silver", + "freezingtime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_concentrate.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_concentrate.json new file mode 100644 index 00000000..fc0ab1a2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_concentrate.json @@ -0,0 +1,22 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "immersiveengineering:raw_silver" + } + }, + "result": { + "item": "emeraldcraft:silver_concentrate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_stairs.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_stairs.json new file mode 100644 index 00000000..f0c21e1e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_stairs.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "immersiveengineering:storage_silver" + } + ] + }, + "result": { + "item": "emeraldcraft:silver_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_stairs_from_silver_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_stairs_from_silver_stonecutting.json new file mode 100644 index 00000000..923036e2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_stairs_from_silver_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "immersiveengineering:storage_silver" + }, + "result": "emeraldcraft:silver_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_wall.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_wall.json new file mode 100644 index 00000000..1cd79fba --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_wall.json @@ -0,0 +1,22 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "immersiveengineering:storage_silver" + } + }, + "result": { + "item": "emeraldcraft:silver_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_wall_from_silver_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_wall_from_silver_block_stonecutting.json new file mode 100644 index 00000000..02e386ff --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/silver_wall_from_silver_block_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "immersiveengineering:storage_silver" + }, + "result": "emeraldcraft:silver_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/steel_stairs.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/steel_stairs.json new file mode 100644 index 00000000..d50c22f7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/steel_stairs.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "immersiveengineering:storage_steel" + } + ] + }, + "result": { + "item": "emeraldcraft:steel_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/steel_stairs_from_steel_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/steel_stairs_from_steel_stonecutting.json new file mode 100644 index 00000000..65d83fea --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/steel_stairs_from_steel_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "immersiveengineering:storage_steel" + }, + "result": "emeraldcraft:steel_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/steel_wall.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/steel_wall.json new file mode 100644 index 00000000..2dd415c5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/steel_wall.json @@ -0,0 +1,22 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "immersiveengineering:storage_steel" + } + }, + "result": { + "item": "emeraldcraft:steel_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/steel_wall_from_steel_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/steel_wall_from_steel_block_stonecutting.json new file mode 100644 index 00000000..4a36ee2d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/steel_wall_from_steel_block_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "immersiveengineering:storage_steel" + }, + "result": "emeraldcraft:steel_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_block_from_uranium_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_block_from_uranium_fluid_ice_maker.json new file mode 100644 index 00000000..5a254faf --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_block_from_uranium_fluid_ice_maker.json @@ -0,0 +1,15 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "melted_uranium", + "amount": 100 + }, + "result": "immersiveengineering:storage_uranium", + "freezingtime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_concentrate.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_concentrate.json new file mode 100644 index 00000000..e35cec5b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_concentrate.json @@ -0,0 +1,22 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "immersiveengineering:raw_uranium" + } + }, + "result": { + "item": "emeraldcraft:uranium_concentrate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_stairs.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_stairs.json new file mode 100644 index 00000000..3e045630 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_stairs.json @@ -0,0 +1,25 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "immersiveengineering:storage_uranium" + } + ] + }, + "result": { + "item": "emeraldcraft:uranium_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_stairs_from_uranium_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_stairs_from_uranium_stonecutting.json new file mode 100644 index 00000000..b0de3c4d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_stairs_from_uranium_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "immersiveengineering:storage_uranium" + }, + "result": "emeraldcraft:uranium_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_wall.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_wall.json new file mode 100644 index 00000000..180fe524 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_wall.json @@ -0,0 +1,22 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "immersiveengineering:storage_uranium" + } + }, + "result": { + "item": "emeraldcraft:uranium_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_wall_from_uranium_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_wall_from_uranium_block_stonecutting.json new file mode 100644 index 00000000..bbb1974e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/immersiveengineering/uranium_wall_from_uranium_block_stonecutting.json @@ -0,0 +1,14 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "immersiveengineering" + } + ], + "type": "minecraft:stonecutting", + "ingredient": { + "item": "immersiveengineering:storage_uranium" + }, + "result": "emeraldcraft:uranium_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/quark/acacia_chest_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/quark/acacia_chest_from_carpentry.json new file mode 100644 index 00000000..b7ac7705 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/quark/acacia_chest_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "quark" + } + ], + "type": "emeraldcraft:carpentry", + "group": "chest", + "ingredients": [ + { + "tag": "minecraft:acacia_logs" + } + ], + "result": "quark:acacia_chest", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/quark/birch_chest_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/quark/birch_chest_from_carpentry.json new file mode 100644 index 00000000..1fdb5890 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/quark/birch_chest_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "quark" + } + ], + "type": "emeraldcraft:carpentry", + "group": "chest", + "ingredients": [ + { + "tag": "minecraft:birch_logs" + } + ], + "result": "quark:birch_chest", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/quark/crimson_chest_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/quark/crimson_chest_from_carpentry.json new file mode 100644 index 00000000..ee393cee --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/quark/crimson_chest_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "quark" + } + ], + "type": "emeraldcraft:carpentry", + "group": "chest", + "ingredients": [ + { + "tag": "minecraft:crimson_stems" + } + ], + "result": "quark:crimson_chest", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/quark/dark_oak_chest_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/quark/dark_oak_chest_from_carpentry.json new file mode 100644 index 00000000..86bbdd66 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/quark/dark_oak_chest_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "quark" + } + ], + "type": "emeraldcraft:carpentry", + "group": "chest", + "ingredients": [ + { + "tag": "minecraft:dark_oak_logs" + } + ], + "result": "quark:dark_oak_chest", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/quark/jungle_chest_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/quark/jungle_chest_from_carpentry.json new file mode 100644 index 00000000..413d715d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/quark/jungle_chest_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "quark" + } + ], + "type": "emeraldcraft:carpentry", + "group": "chest", + "ingredients": [ + { + "tag": "minecraft:jungle_logs" + } + ], + "result": "quark:jungle_chest", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/quark/oak_chest_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/quark/oak_chest_from_carpentry.json new file mode 100644 index 00000000..424506e2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/quark/oak_chest_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "quark" + } + ], + "type": "emeraldcraft:carpentry", + "group": "chest", + "ingredients": [ + { + "tag": "minecraft:oak_logs" + } + ], + "result": "quark:oak_chest", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/quark/spruce_chest_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/quark/spruce_chest_from_carpentry.json new file mode 100644 index 00000000..360cc719 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/quark/spruce_chest_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "quark" + } + ], + "type": "emeraldcraft:carpentry", + "group": "chest", + "ingredients": [ + { + "tag": "minecraft:spruce_logs" + } + ], + "result": "quark:spruce_chest", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/compat/quark/warped_chest_from_carpentry.json b/src/main/resources/data/emeraldcraft/recipes/compat/quark/warped_chest_from_carpentry.json new file mode 100644 index 00000000..e43e862e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/compat/quark/warped_chest_from_carpentry.json @@ -0,0 +1,17 @@ +{ + "conditions": [ + { + "type": "forge:mod_loaded", + "modid": "quark" + } + ], + "type": "emeraldcraft:carpentry", + "group": "chest", + "ingredients": [ + { + "tag": "minecraft:warped_stems" + } + ], + "result": "quark:warped_chest", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/agate_apple.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/agate_apple.json new file mode 100644 index 00000000..91914bcb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/agate_apple.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#X#", + "###" + ], + "key": { + "#": { + "item": "minecraft:lapis_lazuli" + }, + "X": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "emeraldcraft:agate_apple" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sand.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sand.json new file mode 100644 index 00000000..e1546b79 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#O#", + "###" + ], + "key": { + "#": { + "item": "minecraft:sand" + }, + "O": { + "item": "minecraft:lapis_lazuli" + } + }, + "result": { + "item": "emeraldcraft:azure_sand", + "count": 8 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone.json new file mode 100644 index 00000000..7b3e3819 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:azure_sand" + } + }, + "result": { + "item": "emeraldcraft:azure_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_slab.json new file mode 100644 index 00000000..aed1980b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:azure_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:azure_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_stairs.json new file mode 100644 index 00000000..fd0a4cf6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_stairs.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:azure_sandstone" + }, + { + "item": "emeraldcraft:cut_azure_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:azure_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_wall.json new file mode 100644 index 00000000..77e95852 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/azure_sandstone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:azure_sandstone" + } + }, + "result": { + "item": "emeraldcraft:azure_sandstone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_slab.json new file mode 100644 index 00000000..4c0e31a2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:blue_nether_bricks" + } + }, + "result": { + "item": "emeraldcraft:blue_nether_brick_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_stairs.json new file mode 100644 index 00000000..f89c2e58 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:blue_nether_bricks" + } + }, + "result": { + "item": "emeraldcraft:blue_nether_brick_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_wall.json new file mode 100644 index 00000000..eba07382 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_brick_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:blue_nether_bricks" + } + }, + "result": { + "item": "emeraldcraft:blue_nether_brick_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_bricks.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_bricks.json new file mode 100644 index 00000000..a80f8237 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/blue_nether_bricks.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "NW", + "WN" + ], + "key": { + "W": { + "item": "emeraldcraft:warped_wart" + }, + "N": { + "item": "minecraft:nether_brick" + } + }, + "result": { + "item": "emeraldcraft:blue_nether_bricks" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/carpentry_table.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/carpentry_table.json new file mode 100644 index 00000000..55657057 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/carpentry_table.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " I ", + "PCP" + ], + "key": { + "P": { + "tag": "minecraft:planks" + }, + "C": { + "item": "minecraft:crafting_table" + }, + "I": { + "item": "minecraft:iron_ingot" + } + }, + "result": { + "item": "emeraldcraft:carpentry_table" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/continuous_miner.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/continuous_miner.json new file mode 100644 index 00000000..55fc77dd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/continuous_miner.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "RRR", + "IEI", + "P#P" + ], + "key": { + "R": { + "item": "emeraldcraft:rock_breaker" + }, + "I": { + "item": "minecraft:iron_ingot" + }, + "E": { + "item": "minecraft:emerald_block" + }, + "#": { + "item": "minecraft:redstone" + }, + "P": { + "item": "minecraft:piston" + } + }, + "result": { + "item": "emeraldcraft:continuous_miner" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/copper_concentrate.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/copper_concentrate.json new file mode 100644 index 00000000..d2a0afc5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/copper_concentrate.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "minecraft:raw_copper" + } + }, + "result": { + "item": "emeraldcraft:copper_concentrate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_slab.json new file mode 100644 index 00000000..d1ce3ab1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:crimson_cobblestone" + } + ] + }, + "result": { + "item": "emeraldcraft:crimson_cobblestone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_stairs.json new file mode 100644 index 00000000..53bec736 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:crimson_cobblestone" + } + ] + }, + "result": { + "item": "emeraldcraft:crimson_cobblestone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_wall.json new file mode 100644 index 00000000..2dd4c3e3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_cobblestone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:crimson_cobblestone" + } + }, + "result": { + "item": "emeraldcraft:crimson_cobblestone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_slab.json new file mode 100644 index 00000000..f561eca3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:crimson_stone" + } + ] + }, + "result": { + "item": "emeraldcraft:crimson_stone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_stairs.json new file mode 100644 index 00000000..9c91f8d4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:crimson_stone" + } + ] + }, + "result": { + "item": "emeraldcraft:crimson_stone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_wall.json new file mode 100644 index 00000000..4239680c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crimson_stone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:crimson_stone" + } + }, + "result": { + "item": "emeraldcraft:crimson_stone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crystalball_table.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crystalball_table.json new file mode 100644 index 00000000..2d029940 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/crystalball_table.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "AAA", + "AGA", + "###" + ], + "key": { + "#": { + "tag": "minecraft:planks" + }, + "G": { + "item": "minecraft:glass" + }, + "A": { + "item": "minecraft:amethyst_shard" + } + }, + "result": { + "item": "emeraldcraft:crystalball_table" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_azure_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_azure_sandstone.json new file mode 100644 index 00000000..954d87fb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_azure_sandstone.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:azure_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_azure_sandstone", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_azure_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_azure_sandstone_slab.json new file mode 100644 index 00000000..ca14d47b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_azure_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:cut_azure_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_azure_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_dark_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_dark_sandstone.json new file mode 100644 index 00000000..f2941e63 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_dark_sandstone.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:dark_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_dark_sandstone", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_dark_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_dark_sandstone_slab.json new file mode 100644 index 00000000..12fc8f7f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_dark_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:cut_dark_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_dark_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_emery_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_emery_sandstone.json new file mode 100644 index 00000000..4bb838a5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_emery_sandstone.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:emery_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_emery_sandstone", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_emery_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_emery_sandstone_slab.json new file mode 100644 index 00000000..e3e52809 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_emery_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:cut_emery_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_emery_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_jadeite_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_jadeite_sandstone.json new file mode 100644 index 00000000..2a7fbb57 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_jadeite_sandstone.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:jadeite_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_jadeite_sandstone", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_jadeite_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_jadeite_sandstone_slab.json new file mode 100644 index 00000000..a7707d36 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_jadeite_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:cut_jadeite_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_jadeite_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_quartz_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_quartz_sandstone.json new file mode 100644 index 00000000..96691a82 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_quartz_sandstone.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:quartz_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_quartz_sandstone", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_quartz_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_quartz_sandstone_slab.json new file mode 100644 index 00000000..5d24b591 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/cut_quartz_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:cut_quartz_sandstone" + } + }, + "result": { + "item": "emeraldcraft:cut_quartz_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sand.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sand.json new file mode 100644 index 00000000..3d39c69a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#O#", + "###" + ], + "key": { + "#": { + "item": "minecraft:sand" + }, + "O": { + "item": "minecraft:copper_ingot" + } + }, + "result": { + "item": "emeraldcraft:dark_sand", + "count": 8 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone.json new file mode 100644 index 00000000..8725f42e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:dark_sand" + } + }, + "result": { + "item": "emeraldcraft:dark_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_slab.json new file mode 100644 index 00000000..b71284f4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:dark_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:dark_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_stairs.json new file mode 100644 index 00000000..b4a351bc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_stairs.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:dark_sandstone" + }, + { + "item": "emeraldcraft:cut_dark_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:dark_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_wall.json new file mode 100644 index 00000000..e0a4113c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/dark_sandstone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:dark_sandstone" + } + }, + "result": { + "item": "emeraldcraft:dark_sandstone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_from_nuggets.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_from_nuggets.json new file mode 100644 index 00000000..27868da9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_from_nuggets.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:diamond_nugget" + } + }, + "result": { + "item": "minecraft:diamond" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_slab.json new file mode 100644 index 00000000..8dd990c0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:diamond_block" + } + ] + }, + "result": { + "item": "emeraldcraft:diamond_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_stairs.json new file mode 100644 index 00000000..a451b4f4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:diamond_block" + } + ] + }, + "result": { + "item": "emeraldcraft:diamond_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_wall.json new file mode 100644 index 00000000..4b403f21 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/diamond_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:diamond_block" + } + }, + "result": { + "item": "emeraldcraft:diamond_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_chest.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_chest.json new file mode 100644 index 00000000..b0992128 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_chest.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "key": { + "X": { + "item": "minecraft:emerald" + } + }, + "result": { + "item": "emeraldcraft:emerald_chest" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_feet.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_feet.json new file mode 100644 index 00000000..753eaaa4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_feet.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "X X", + "X X" + ], + "key": { + "X": { + "item": "minecraft:emerald" + } + }, + "result": { + "item": "emeraldcraft:emerald_feet" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_from_nuggets.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_from_nuggets.json new file mode 100644 index 00000000..e494d0e0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_from_nuggets.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:emerald_nugget" + } + }, + "result": { + "item": "minecraft:emerald" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_head.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_head.json new file mode 100644 index 00000000..6dddcf23 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_head.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XXX", + "X X" + ], + "key": { + "X": { + "item": "minecraft:emerald" + } + }, + "result": { + "item": "emeraldcraft:emerald_head" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_legs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_legs.json new file mode 100644 index 00000000..b17a48e0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_legs.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XXX", + "X X", + "X X" + ], + "key": { + "X": { + "item": "minecraft:emerald" + } + }, + "result": { + "item": "emeraldcraft:emerald_legs" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_slab.json new file mode 100644 index 00000000..f6bbd14c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:emerald_block" + } + ] + }, + "result": { + "item": "emeraldcraft:emerald_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_stairs.json new file mode 100644 index 00000000..85a598fa --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:emerald_block" + } + ] + }, + "result": { + "item": "emeraldcraft:emerald_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_wall.json new file mode 100644 index 00000000..0e6f7502 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emerald_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:emerald_block" + } + }, + "result": { + "item": "emeraldcraft:emerald_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sand.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sand.json new file mode 100644 index 00000000..a06ef339 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#O#", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:quartz_sand" + }, + "O": { + "item": "minecraft:charcoal" + } + }, + "result": { + "item": "emeraldcraft:emery_sand", + "count": 8 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone.json new file mode 100644 index 00000000..ad1c969a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:emery_sand" + } + }, + "result": { + "item": "emeraldcraft:emery_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_slab.json new file mode 100644 index 00000000..93dcdba2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:emery_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:emery_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_stairs.json new file mode 100644 index 00000000..7c7940a1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_stairs.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:emery_sandstone" + }, + { + "item": "emeraldcraft:cut_emery_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:emery_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_wall.json new file mode 100644 index 00000000..8395f807 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/emery_sandstone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:emery_sandstone" + } + }, + "result": { + "item": "emeraldcraft:emery_sandstone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_boat.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_boat.json new file mode 100644 index 00000000..b93611a0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_boat.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:ginkgo_planks" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_door.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_door.json new file mode 100644 index 00000000..67205b4b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_door.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_door", + "pattern": [ + "##", + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:ginkgo_planks" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_door", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_fence.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_fence.json new file mode 100644 index 00000000..0c9b7ac1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_fence.json @@ -0,0 +1,20 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence", + "pattern": [ + "W#W", + "W#W" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "emeraldcraft:ginkgo_planks" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_fence", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_fence_gate.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_fence_gate.json new file mode 100644 index 00000000..4c51bb84 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence_gate", + "pattern": [ + "#W#", + "#W#" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "emeraldcraft:ginkgo_planks" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_fence_gate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_pressure_plate.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_pressure_plate.json new file mode 100644 index 00000000..855f9892 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "group": "wooden_pressure_plate", + "pattern": [ + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:ginkgo_planks" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_pressure_plate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_sign.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_sign.json new file mode 100644 index 00000000..265c4199 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_sign.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_sign", + "pattern": [ + "###", + "###", + " X " + ], + "key": { + "#": { + "item": "emeraldcraft:ginkgo_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_sign", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_slab.json new file mode 100644 index 00000000..802c2b5a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_slab.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "wooden_slab", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:ginkgo_planks" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_stairs.json new file mode 100644 index 00000000..438ec6e6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_stairs", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:ginkgo_planks" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_trapdoor.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_trapdoor.json new file mode 100644 index 00000000..c19f4091 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "wooden_trapdoor", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:ginkgo_planks" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_trapdoor", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_wood.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_wood.json new file mode 100644 index 00000000..749890ba --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ginkgo_wood.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:ginkgo_log" + } + }, + "result": { + "item": "emeraldcraft:ginkgo_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/glass_kiln.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/glass_kiln.json new file mode 100644 index 00000000..4f1082b1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/glass_kiln.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "BBB", + "BXB", + "###" + ], + "key": { + "#": { + "item": "minecraft:glass" + }, + "X": { + "item": "minecraft:furnace" + }, + "B": { + "item": "minecraft:brick" + } + }, + "result": { + "item": "emeraldcraft:glass_kiln" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_concentrate.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_concentrate.json new file mode 100644 index 00000000..b09ccd6d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_concentrate.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "minecraft:raw_gold" + } + }, + "result": { + "item": "emeraldcraft:gold_concentrate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_slab.json new file mode 100644 index 00000000..0288d71d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:gold_block" + } + ] + }, + "result": { + "item": "emeraldcraft:gold_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_stairs.json new file mode 100644 index 00000000..087f48c9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:gold_block" + } + ] + }, + "result": { + "item": "emeraldcraft:gold_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_wall.json new file mode 100644 index 00000000..7ddb2b3e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/gold_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:gold_block" + } + }, + "result": { + "item": "emeraldcraft:gold_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/golden_peach.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/golden_peach.json new file mode 100644 index 00000000..0d9576f7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/golden_peach.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#G#", + "GXG", + "#G#" + ], + "key": { + "#": { + "item": "minecraft:gold_nugget" + }, + "G": { + "item": "minecraft:gold_ingot" + }, + "X": { + "item": "emeraldcraft:peach" + } + }, + "result": { + "item": "emeraldcraft:golden_peach" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ice_maker.json new file mode 100644 index 00000000..a567099d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/ice_maker.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#B#", + "IEI", + "###" + ], + "key": { + "#": { + "tag": "forge:cobblestone" + }, + "B": { + "item": "minecraft:brick" + }, + "I": { + "item": "minecraft:ice" + }, + "E": { + "item": "minecraft:emerald_block" + } + }, + "result": { + "item": "emeraldcraft:ice_maker", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_concentrate.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_concentrate.json new file mode 100644 index 00000000..d74a4d8a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_concentrate.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "minecraft:raw_iron" + } + }, + "result": { + "item": "emeraldcraft:iron_concentrate", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_slab.json new file mode 100644 index 00000000..8ae8a43d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:iron_block" + } + ] + }, + "result": { + "item": "emeraldcraft:iron_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_stairs.json new file mode 100644 index 00000000..2efdc2a7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:iron_block" + } + ] + }, + "result": { + "item": "emeraldcraft:iron_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_wall.json new file mode 100644 index 00000000..f1e15335 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/iron_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:iron_block" + } + }, + "result": { + "item": "emeraldcraft:iron_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jade_apple.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jade_apple.json new file mode 100644 index 00000000..dcf67e10 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jade_apple.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#X#", + "###" + ], + "key": { + "#": { + "item": "minecraft:emerald" + }, + "X": { + "item": "minecraft:apple" + } + }, + "result": { + "item": "emeraldcraft:jade_apple" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sand.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sand.json new file mode 100644 index 00000000..5d01af9f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#O#", + "###" + ], + "key": { + "#": { + "item": "minecraft:sand" + }, + "O": { + "item": "minecraft:emerald" + } + }, + "result": { + "item": "emeraldcraft:jadeite_sand", + "count": 8 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone.json new file mode 100644 index 00000000..53d3623a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:jadeite_sand" + } + }, + "result": { + "item": "emeraldcraft:jadeite_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_slab.json new file mode 100644 index 00000000..9247128d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:jadeite_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:jadeite_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_stairs.json new file mode 100644 index 00000000..0d38d302 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_stairs.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:jadeite_sandstone" + }, + { + "item": "emeraldcraft:cut_jadeite_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:jadeite_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_wall.json new file mode 100644 index 00000000..edf2bb0a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/jadeite_sandstone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:jadeite_sandstone" + } + }, + "result": { + "item": "emeraldcraft:jadeite_sandstone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_chest.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_chest.json new file mode 100644 index 00000000..08771176 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_chest.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "key": { + "X": { + "item": "minecraft:lapis_lazuli" + } + }, + "result": { + "item": "emeraldcraft:lapis_chest" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_feet.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_feet.json new file mode 100644 index 00000000..d5ebbeba --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_feet.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "X X", + "X X" + ], + "key": { + "X": { + "item": "minecraft:lapis_lazuli" + } + }, + "result": { + "item": "emeraldcraft:lapis_feet" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_head.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_head.json new file mode 100644 index 00000000..eb581b09 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_head.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XXX", + "X X" + ], + "key": { + "X": { + "item": "minecraft:lapis_lazuli" + } + }, + "result": { + "item": "emeraldcraft:lapis_head" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_lazuli_from_nuggets.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_lazuli_from_nuggets.json new file mode 100644 index 00000000..56a274b9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_lazuli_from_nuggets.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:lapis_nugget" + } + }, + "result": { + "item": "minecraft:lapis_lazuli" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_legs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_legs.json new file mode 100644 index 00000000..b09836ea --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_legs.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XXX", + "X X", + "X X" + ], + "key": { + "X": { + "item": "minecraft:lapis_lazuli" + } + }, + "result": { + "item": "emeraldcraft:lapis_legs" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_slab.json new file mode 100644 index 00000000..a6e0004f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:lapis_block" + } + ] + }, + "result": { + "item": "emeraldcraft:lapis_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_stairs.json new file mode 100644 index 00000000..1a882ced --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:lapis_block" + } + ] + }, + "result": { + "item": "emeraldcraft:lapis_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_wall.json new file mode 100644 index 00000000..33202bdc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/lapis_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:lapis_block" + } + }, + "result": { + "item": "emeraldcraft:lapis_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/melter.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/melter.json new file mode 100644 index 00000000..286b5d20 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/melter.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# #", + "#E#", + "#M#" + ], + "key": { + "#": { + "tag": "forge:cobblestone" + }, + "M": { + "item": "minecraft:magma_block" + }, + "E": { + "item": "minecraft:emerald_block" + } + }, + "result": { + "item": "emeraldcraft:melter", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/mineral_table.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/mineral_table.json new file mode 100644 index 00000000..fd9a164c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/mineral_table.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "DXD", + "DDD" + ], + "key": { + "#": { + "item": "minecraft:iron_ingot" + }, + "X": { + "item": "minecraft:furnace" + }, + "D": { + "item": "minecraft:polished_deepslate" + } + }, + "result": { + "item": "emeraldcraft:mineral_table" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_slab.json new file mode 100644 index 00000000..cd5dff85 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:netherite_block" + } + ] + }, + "result": { + "item": "emeraldcraft:netherite_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_stairs.json new file mode 100644 index 00000000..020a986b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "minecraft:netherite_block" + } + ] + }, + "result": { + "item": "emeraldcraft:netherite_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_wall.json new file mode 100644 index 00000000..ecb91ef9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/netherite_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "minecraft:netherite_block" + } + }, + "result": { + "item": "emeraldcraft:netherite_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_boat.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_boat.json new file mode 100644 index 00000000..c1137c76 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_boat.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:palm_planks" + } + }, + "result": { + "item": "emeraldcraft:palm_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_door.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_door.json new file mode 100644 index 00000000..a8421f60 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_door.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_door", + "pattern": [ + "##", + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:palm_planks" + } + }, + "result": { + "item": "emeraldcraft:palm_door", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_fence.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_fence.json new file mode 100644 index 00000000..a9f7f73d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_fence.json @@ -0,0 +1,20 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence", + "pattern": [ + "W#W", + "W#W" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "emeraldcraft:palm_planks" + } + }, + "result": { + "item": "emeraldcraft:palm_fence", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_fence_gate.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_fence_gate.json new file mode 100644 index 00000000..2807f1e0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence_gate", + "pattern": [ + "#W#", + "#W#" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "emeraldcraft:palm_planks" + } + }, + "result": { + "item": "emeraldcraft:palm_fence_gate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_pressure_plate.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_pressure_plate.json new file mode 100644 index 00000000..20b9f93a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "group": "wooden_pressure_plate", + "pattern": [ + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:palm_planks" + } + }, + "result": { + "item": "emeraldcraft:palm_pressure_plate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_sign.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_sign.json new file mode 100644 index 00000000..68f3e0ab --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_sign.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_sign", + "pattern": [ + "###", + "###", + " X " + ], + "key": { + "#": { + "item": "emeraldcraft:palm_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "emeraldcraft:palm_sign", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_slab.json new file mode 100644 index 00000000..e1b89511 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_slab.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "wooden_slab", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:palm_planks" + } + }, + "result": { + "item": "emeraldcraft:palm_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_stairs.json new file mode 100644 index 00000000..100e6a4f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_stairs", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:palm_planks" + } + }, + "result": { + "item": "emeraldcraft:palm_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_trapdoor.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_trapdoor.json new file mode 100644 index 00000000..6cc23f70 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "wooden_trapdoor", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:palm_planks" + } + }, + "result": { + "item": "emeraldcraft:palm_trapdoor", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_wood.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_wood.json new file mode 100644 index 00000000..9d60fe52 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/palm_wood.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:palm_log" + } + }, + "result": { + "item": "emeraldcraft:palm_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_boat.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_boat.json new file mode 100644 index 00000000..282ba5bf --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_boat.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "boat", + "pattern": [ + "# #", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:peach_planks" + } + }, + "result": { + "item": "emeraldcraft:peach_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_door.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_door.json new file mode 100644 index 00000000..67058283 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_door.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_door", + "pattern": [ + "##", + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:peach_planks" + } + }, + "result": { + "item": "emeraldcraft:peach_door", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_fence.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_fence.json new file mode 100644 index 00000000..a8699198 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_fence.json @@ -0,0 +1,20 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence", + "pattern": [ + "W#W", + "W#W" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "emeraldcraft:peach_planks" + } + }, + "result": { + "item": "emeraldcraft:peach_fence", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_fence_gate.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_fence_gate.json new file mode 100644 index 00000000..420588fa --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "crafting_shaped", + "group": "wooden_fence_gate", + "pattern": [ + "#W#", + "#W#" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "emeraldcraft:peach_planks" + } + }, + "result": { + "item": "emeraldcraft:peach_fence_gate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_pressure_plate.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_pressure_plate.json new file mode 100644 index 00000000..1f27d5e0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "crafting_shaped", + "group": "wooden_pressure_plate", + "pattern": [ + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:peach_planks" + } + }, + "result": { + "item": "emeraldcraft:peach_pressure_plate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_sign.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_sign.json new file mode 100644 index 00000000..b552e411 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_sign.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_sign", + "pattern": [ + "###", + "###", + " X " + ], + "key": { + "#": { + "item": "emeraldcraft:peach_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "emeraldcraft:peach_sign", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_slab.json new file mode 100644 index 00000000..e9fe650e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_slab.json @@ -0,0 +1,16 @@ +{ + "type": "crafting_shaped", + "group": "wooden_slab", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:peach_planks" + } + }, + "result": { + "item": "emeraldcraft:peach_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_stairs.json new file mode 100644 index 00000000..d2f34664 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "crafting_shaped", + "group": "wooden_stairs", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:peach_planks" + } + }, + "result": { + "item": "emeraldcraft:peach_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_trapdoor.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_trapdoor.json new file mode 100644 index 00000000..c6cf3465 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "wooden_trapdoor", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:peach_planks" + } + }, + "result": { + "item": "emeraldcraft:peach_trapdoor", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_wood.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_wood.json new file mode 100644 index 00000000..43a17e8a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/peach_wood.json @@ -0,0 +1,17 @@ +{ + "type": "crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:peach_log" + } + }, + "result": { + "item": "emeraldcraft:peach_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/potion_cookie.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/potion_cookie.json new file mode 100644 index 00000000..a2b739b0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/potion_cookie.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#X#" + ], + "key": { + "#": { + "item": "minecraft:wheat" + }, + "X": { + "item": "emeraldcraft:warped_wart" + } + }, + "result": { + "item": "emeraldcraft:potion_cookie", + "count": 8 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_door.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_door.json new file mode 100644 index 00000000..cf5352b5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_door.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_door", + "pattern": [ + "##", + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:purpuraceus_planks" + } + }, + "result": { + "item": "emeraldcraft:purpuraceus_door", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_fence.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_fence.json new file mode 100644 index 00000000..b387c3df --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_fence.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_fence", + "pattern": [ + "W#W", + "W#W" + ], + "key": { + "W": { + "item": "emeraldcraft:purpuraceus_planks" + }, + "#": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "emeraldcraft:purpuraceus_fence", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_fence_gate.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_fence_gate.json new file mode 100644 index 00000000..6fc56a21 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_fence_gate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_fence_gate", + "pattern": [ + "#W#", + "#W#" + ], + "key": { + "#": { + "item": "minecraft:stick" + }, + "W": { + "item": "emeraldcraft:purpuraceus_planks" + } + }, + "result": { + "item": "emeraldcraft:purpuraceus_fence_gate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_hyphae.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_hyphae.json new file mode 100644 index 00000000..b60bd96a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_hyphae.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:purpuraceus_stem" + } + }, + "result": { + "item": "emeraldcraft:purpuraceus_hyphae", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_pressure_plate.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_pressure_plate.json new file mode 100644 index 00000000..75ccf7ad --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_pressure_plate.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_pressure_plate", + "pattern": [ + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:purpuraceus_planks" + } + }, + "result": { + "item": "emeraldcraft:purpuraceus_pressure_plate" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_sign.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_sign.json new file mode 100644 index 00000000..e368c8d3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_sign.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_sign", + "pattern": [ + "###", + "###", + " X " + ], + "key": { + "#": { + "item": "emeraldcraft:purpuraceus_planks" + }, + "X": { + "item": "minecraft:stick" + } + }, + "result": { + "item": "emeraldcraft:purpuraceus_sign", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_slab.json new file mode 100644 index 00000000..e38fff3b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_slab.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_slab", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:purpuraceus_planks" + } + }, + "result": { + "item": "emeraldcraft:purpuraceus_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_stairs.json new file mode 100644 index 00000000..e99047bf --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_stairs.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_stairs", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:purpuraceus_planks" + } + }, + "result": { + "item": "emeraldcraft:purpuraceus_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_trapdoor.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_trapdoor.json new file mode 100644 index 00000000..d6c78fdb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/purpuraceus_trapdoor.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "wooden_trapdoor", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:purpuraceus_planks" + } + }, + "result": { + "item": "emeraldcraft:purpuraceus_trapdoor", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sand.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sand.json new file mode 100644 index 00000000..a9576f43 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sand.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "#O#", + "###" + ], + "key": { + "#": { + "item": "minecraft:sand" + }, + "O": { + "item": "minecraft:quartz" + } + }, + "result": { + "item": "emeraldcraft:quartz_sand", + "count": 8 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone.json new file mode 100644 index 00000000..c0339cb0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:quartz_sand" + } + }, + "result": { + "item": "emeraldcraft:quartz_sandstone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_slab.json new file mode 100644 index 00000000..813688de --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:quartz_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:quartz_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_stairs.json new file mode 100644 index 00000000..a8b44a2a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_stairs.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:quartz_sandstone" + }, + { + "item": "emeraldcraft:cut_quartz_sandstone" + } + ] + }, + "result": { + "item": "emeraldcraft:quartz_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_wall.json new file mode 100644 index 00000000..ad059a11 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/quartz_sandstone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:quartz_sandstone" + } + }, + "result": { + "item": "emeraldcraft:quartz_sandstone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/rock_breaker.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/rock_breaker.json new file mode 100644 index 00000000..6b6cff5a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/rock_breaker.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "DOD", + "OBO", + "COC" + ], + "key": { + "D": { + "item": "minecraft:diamond" + }, + "O": { + "item": "minecraft:obsidian" + }, + "B": { + "item": "minecraft:blaze_rod" + }, + "C": { + "item": "minecraft:copper_ingot" + } + }, + "result": { + "item": "emeraldcraft:rock_breaker", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_azure_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_azure_sandstone_slab.json new file mode 100644 index 00000000..4c934505 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_azure_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_azure_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_azure_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_azure_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_azure_sandstone_stairs.json new file mode 100644 index 00000000..83c1a7c6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_azure_sandstone_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_azure_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_azure_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_dark_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_dark_sandstone_slab.json new file mode 100644 index 00000000..03a0a7f5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_dark_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_dark_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_dark_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_dark_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_dark_sandstone_stairs.json new file mode 100644 index 00000000..fd735256 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_dark_sandstone_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_dark_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_dark_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_emery_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_emery_sandstone_slab.json new file mode 100644 index 00000000..2360234c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_emery_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_emery_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_emery_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_emery_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_emery_sandstone_stairs.json new file mode 100644 index 00000000..ec7152c3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_emery_sandstone_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_emery_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_emery_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_jadeite_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_jadeite_sandstone_slab.json new file mode 100644 index 00000000..2c2c376f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_jadeite_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_jadeite_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_jadeite_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_jadeite_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_jadeite_sandstone_stairs.json new file mode 100644 index 00000000..2f79f7b0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_jadeite_sandstone_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_jadeite_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_jadeite_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_quartz_sandstone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_quartz_sandstone_slab.json new file mode 100644 index 00000000..eeec6fa9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_quartz_sandstone_slab.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_quartz_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_quartz_sandstone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_quartz_sandstone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_quartz_sandstone_stairs.json new file mode 100644 index 00000000..18cad0ef --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/smooth_quartz_sandstone_stairs.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:smooth_quartz_sandstone" + } + }, + "result": { + "item": "emeraldcraft:smooth_quartz_sandstone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/squeezer.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/squeezer.json new file mode 100644 index 00000000..6c0678d1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/squeezer.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + " I ", + "#H#", + "###" + ], + "key": { + "#": { + "tag": "minecraft:planks" + }, + "H": { + "item": "minecraft:honeycomb_block" + }, + "I": { + "item": "minecraft:iron_ingot" + } + }, + "result": { + "item": "emeraldcraft:squeezer" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_ginkgo_wood.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_ginkgo_wood.json new file mode 100644 index 00000000..ff184cab --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_ginkgo_wood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:stripped_ginkgo_log" + } + }, + "result": { + "item": "emeraldcraft:stripped_ginkgo_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_palm_wood.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_palm_wood.json new file mode 100644 index 00000000..f51b9fb8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_palm_wood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:stripped_palm_log" + } + }, + "result": { + "item": "emeraldcraft:stripped_palm_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_peach_wood.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_peach_wood.json new file mode 100644 index 00000000..030b554a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_peach_wood.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:stripped_peach_log" + } + }, + "result": { + "item": "emeraldcraft:stripped_peach_wood", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_purpuraceus_hyphae.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_purpuraceus_hyphae.json new file mode 100644 index 00000000..b5b780a8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/stripped_purpuraceus_hyphae.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "bark", + "pattern": [ + "##", + "##" + ], + "key": { + "#": { + "item": "emeraldcraft:stripped_purpuraceus_stem" + } + }, + "result": { + "item": "emeraldcraft:stripped_purpuraceus_hyphae", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_slab.json new file mode 100644 index 00000000..c4fffe7c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:warped_cobblestone" + } + ] + }, + "result": { + "item": "emeraldcraft:warped_cobblestone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_stairs.json new file mode 100644 index 00000000..8648c72a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:warped_cobblestone" + } + ] + }, + "result": { + "item": "emeraldcraft:warped_cobblestone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_wall.json new file mode 100644 index 00000000..9b793783 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_cobblestone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:warped_cobblestone" + } + }, + "result": { + "item": "emeraldcraft:warped_cobblestone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_slab.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_slab.json new file mode 100644 index 00000000..cd0d1e00 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_slab.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:warped_stone" + } + ] + }, + "result": { + "item": "emeraldcraft:warped_stone_slab", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_stairs.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_stairs.json new file mode 100644 index 00000000..690bf613 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_stairs.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "# ", + "## ", + "###" + ], + "key": { + "#": [ + { + "item": "emeraldcraft:warped_stone" + } + ] + }, + "result": { + "item": "emeraldcraft:warped_stone_stairs", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_wall.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_wall.json new file mode 100644 index 00000000..c74f1cfe --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_stone_wall.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:warped_stone" + } + }, + "result": { + "item": "emeraldcraft:warped_stone_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_wart_block.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_wart_block.json new file mode 100644 index 00000000..01786f94 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shaped/warped_wart_block.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "###", + "###" + ], + "key": { + "#": { + "item": "emeraldcraft:warped_wart" + } + }, + "result": { + "item": "minecraft:warped_wart_block" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/apple_juice.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/apple_juice.json new file mode 100644 index 00000000..5714612b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/apple_juice.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:apple" + }, + { + "item": "minecraft:sugar" + }, + { + "item": "minecraft:glass_bottle" + }, + { + "item": "minecraft:glass_bottle" + } + ], + "result": { + "item": "emeraldcraft:apple_juice", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/azure_sand_shapeless.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/azure_sand_shapeless.json new file mode 100644 index 00000000..c104e010 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/azure_sand_shapeless.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:lapis_lazuli" + } + ], + "result": { + "item": "emeraldcraft:azure_sand" + } + +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/beef_and_potato_stew.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/beef_and_potato_stew.json new file mode 100644 index 00000000..86042f4c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/beef_and_potato_stew.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:potato" + }, + { + "item": "minecraft:beef" + }, + { + "item": "minecraft:bowl" + } + ], + "result": { + "item": "emeraldcraft:beef_and_potato_stew" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/beetroot_juice.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/beetroot_juice.json new file mode 100644 index 00000000..e7c27f6d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/beetroot_juice.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "emeraldcraft:apple_juice" + }, + { + "item": "minecraft:beetroot" + }, + { + "item": "minecraft:glass_bottle" + } + ], + "result": { + "item": "emeraldcraft:beetroot_juice", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/braised_chicken.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/braised_chicken.json new file mode 100644 index 00000000..f0ba6246 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/braised_chicken.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:cooked_chicken" + }, + { + "item": "emeraldcraft:chili" + }, + { + "item": "minecraft:baked_potato" + }, + { + "item": "minecraft:bowl" + } + ], + "result": { + "item": "emeraldcraft:braised_chicken" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/caramelized_potato.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/caramelized_potato.json new file mode 100644 index 00000000..232c64ff --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/caramelized_potato.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:potato" + }, + { + "item": "minecraft:sugar" + } + ], + "result": { + "item": "emeraldcraft:caramelized_potato" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/carrot_juice.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/carrot_juice.json new file mode 100644 index 00000000..9ca706e9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/carrot_juice.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:crops/carrot" + }, + { + "tag": "forge:crops/carrot" + }, + { + "item": "minecraft:sugar" + }, + { + "item": "minecraft:glass_bottle" + }, + { + "item": "minecraft:glass_bottle" + }, + { + "item": "minecraft:glass_bottle" + } + ], + "result": { + "item": "emeraldcraft:carrot_juice", + "count": 3 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/chili_seed.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/chili_seed.json new file mode 100644 index 00000000..13a94e7f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/chili_seed.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "emeraldcraft:chili" + } + ], + "result": { + "item": "emeraldcraft:chili_seed", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/chorus_flower_eggdrop_soup.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/chorus_flower_eggdrop_soup.json new file mode 100644 index 00000000..23c031f9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/chorus_flower_eggdrop_soup.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:chorus_flower" + }, + { + "item": "minecraft:egg" + }, + { + "item": "minecraft:bowl" + } + ], + "result": { + "item": "emeraldcraft:chorus_flower_eggdrop_soup" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/crimson_cobblestone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/crimson_cobblestone.json new file mode 100644 index 00000000..1f231189 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/crimson_cobblestone.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:cobblestone" + }, + { + "item": "minecraft:nether_wart_block" + } + ], + "result": { + "item": "emeraldcraft:crimson_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/crimson_stone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/crimson_stone.json new file mode 100644 index 00000000..742200c1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/crimson_stone.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:nether_wart_block" + } + ], + "result": { + "item": "emeraldcraft:crimson_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/cyan_dye_from_cyan_petunia.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/cyan_dye_from_cyan_petunia.json new file mode 100644 index 00000000..36211089 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/cyan_dye_from_cyan_petunia.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "cyan_dye", + "ingredients": [ + { + "item": "emeraldcraft:cyan_petunia" + } + ], + "result": { + "item": "minecraft:cyan_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/dark_sand_shapeless.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/dark_sand_shapeless.json new file mode 100644 index 00000000..3481d9bd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/dark_sand_shapeless.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:copper_ingot" + } + ], + "result": { + "item": "emeraldcraft:dark_sand" + } + +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/diamond_nugget.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/diamond_nugget.json new file mode 100644 index 00000000..fa961d57 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/diamond_nugget.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:diamond" + } + ], + "result": { + "item": "emeraldcraft:diamond_nugget", + "count": 9 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/emerald_nugget.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/emerald_nugget.json new file mode 100644 index 00000000..62ae4908 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/emerald_nugget.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:emerald" + } + ], + "result": { + "item": "emeraldcraft:emerald_nugget", + "count": 9 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/emery_sand_shapeless.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/emery_sand_shapeless.json new file mode 100644 index 00000000..b44d64b9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/emery_sand_shapeless.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "emeraldcraft:quartz_sand" + }, + { + "item": "minecraft:charcoal" + } + ], + "result": { + "item": "emeraldcraft:emery_sand" + } + +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_button.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_button.json new file mode 100644 index 00000000..6af161b0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_button.json @@ -0,0 +1,12 @@ +{ + "type": "crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "emeraldcraft:ginkgo_planks" + } + ], + "result": { + "item": "emeraldcraft:ginkgo_button" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_chest_boat.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_chest_boat.json new file mode 100644 index 00000000..c771ceec --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_chest_boat.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "chest_boat", + "ingredients": [ + { + "item": "minecraft:chest" + }, + { + "item": "emeraldcraft:ginkgo_boat" + } + ], + "result": { + "item": "emeraldcraft:ginkgo_chest_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_planks.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_planks.json new file mode 100644 index 00000000..33809217 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/ginkgo_planks.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "emeraldcraft:ginkgo_logs" + } + ], + "result": { + "item": "emeraldcraft:ginkgo_planks", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/gluten.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/gluten.json new file mode 100644 index 00000000..1252f5e0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/gluten.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:wheat" + }, + { + "item": "minecraft:wheat" + }, + { + "item": "minecraft:stick" + } + ], + "result": { + "item": "emeraldcraft:gluten" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/jadeite_sand_shapeless.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/jadeite_sand_shapeless.json new file mode 100644 index 00000000..3bbb8693 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/jadeite_sand_shapeless.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:emerald" + } + ], + "result": { + "item": "emeraldcraft:jadeite_sand" + } + +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/lapis_nugget.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/lapis_nugget.json new file mode 100644 index 00000000..bcfdbd99 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/lapis_nugget.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:lapis_lazuli" + } + ], + "result": { + "item": "emeraldcraft:lapis_nugget", + "count": 9 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/magenta_dye_from_magenta_petunia.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/magenta_dye_from_magenta_petunia.json new file mode 100644 index 00000000..03e98a9c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/magenta_dye_from_magenta_petunia.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "magenta_dye", + "ingredients": [ + { + "item": "emeraldcraft:magenta_petunia" + } + ], + "result": { + "item": "minecraft:magenta_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/melon_juice.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/melon_juice.json new file mode 100644 index 00000000..f70df58d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/melon_juice.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:melon_slice" + }, + { + "item": "minecraft:glass_bottle" + } + ], + "result": { + "item": "emeraldcraft:melon_juice", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/palm_button.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/palm_button.json new file mode 100644 index 00000000..3bc03e6f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/palm_button.json @@ -0,0 +1,12 @@ +{ + "type": "crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "emeraldcraft:palm_planks" + } + ], + "result": { + "item": "emeraldcraft:palm_button" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/palm_chest_boat.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/palm_chest_boat.json new file mode 100644 index 00000000..b54c2956 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/palm_chest_boat.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "chest_boat", + "ingredients": [ + { + "item": "minecraft:chest" + }, + { + "item": "emeraldcraft:palm_boat" + } + ], + "result": { + "item": "emeraldcraft:palm_chest_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/palm_planks.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/palm_planks.json new file mode 100644 index 00000000..23442c50 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/palm_planks.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "emeraldcraft:palm_logs" + } + ], + "result": { + "item": "emeraldcraft:palm_planks", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/peach_button.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/peach_button.json new file mode 100644 index 00000000..a7f5669f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/peach_button.json @@ -0,0 +1,12 @@ +{ + "type": "crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "emeraldcraft:peach_planks" + } + ], + "result": { + "item": "emeraldcraft:peach_button" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/peach_chest_boat.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/peach_chest_boat.json new file mode 100644 index 00000000..07939cdb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/peach_chest_boat.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "chest_boat", + "ingredients": [ + { + "item": "minecraft:chest" + }, + { + "item": "emeraldcraft:peach_boat" + } + ], + "result": { + "item": "emeraldcraft:peach_chest_boat" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/peach_juice.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/peach_juice.json new file mode 100644 index 00000000..71fa454c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/peach_juice.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:fruits/peach" + }, + { + "item": "minecraft:glass_bottle" + } + ], + "result": { + "item": "emeraldcraft:peach_juice", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/peach_planks.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/peach_planks.json new file mode 100644 index 00000000..08141143 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/peach_planks.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "emeraldcraft:peach_logs" + } + ], + "result": { + "item": "emeraldcraft:peach_planks", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/pumpkin_juice.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/pumpkin_juice.json new file mode 100644 index 00000000..ce71b34f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/pumpkin_juice.json @@ -0,0 +1,27 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:pumpkin" + }, + { + "item": "minecraft:sugar" + }, + { + "item": "minecraft:glass_bottle" + }, + { + "item": "minecraft:glass_bottle" + }, + { + "item": "minecraft:glass_bottle" + }, + { + "item": "minecraft:glass_bottle" + } + ], + "result": { + "item": "emeraldcraft:pumpkin_juice", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/purple_dye_from_higan_bana.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/purple_dye_from_higan_bana.json new file mode 100644 index 00000000..db6f36c6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/purple_dye_from_higan_bana.json @@ -0,0 +1,13 @@ +{ + "type": "crafting_shapeless", + "group": "purple_dye", + "ingredients": [ + { + "item": "emeraldcraft:higan_bana" + } + ], + "result": { + "item": "minecraft:purple_dye", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/purpuraceus_button.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/purpuraceus_button.json new file mode 100644 index 00000000..fffc1e93 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/purpuraceus_button.json @@ -0,0 +1,12 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "wooden_button", + "ingredients": [ + { + "item": "emeraldcraft:purpuraceus_planks" + } + ], + "result": { + "item": "emeraldcraft:purpuraceus_button" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/purpuraceus_planks.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/purpuraceus_planks.json new file mode 100644 index 00000000..8fc5d9f8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/purpuraceus_planks.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "group": "planks", + "ingredients": [ + { + "tag": "emeraldcraft:purpuraceus_stems" + } + ], + "result": { + "item": "emeraldcraft:purpuraceus_planks", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/quartz_sand_shapeless.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/quartz_sand_shapeless.json new file mode 100644 index 00000000..fde07036 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/quartz_sand_shapeless.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:sand" + }, + { + "item": "minecraft:quartz" + } + ], + "result": { + "item": "emeraldcraft:quartz_sand" + } + +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/rougamo.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/rougamo.json new file mode 100644 index 00000000..d0b0864f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/rougamo.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:cooked_porkchop" + }, + { + "item": "minecraft:bread" + }, + { + "item": "emeraldcraft:chili" + } + ], + "result": { + "item": "emeraldcraft:rougamo" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/sausage.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/sausage.json new file mode 100644 index 00000000..148d1cdf --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/sausage.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:porkchop" + }, + { + "item": "minecraft:stick" + }, + { + "item": "minecraft:string" + } + ], + "result": { + "item": "emeraldcraft:sausage" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/stir_fried_warden_heart.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/stir_fried_warden_heart.json new file mode 100644 index 00000000..a9abcfb9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/stir_fried_warden_heart.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "emeraldcraft:warden_heart" + }, + { + "item": "emeraldcraft:chili" + }, + { + "item": "emeraldcraft:chili" + }, + { + "item": "minecraft:bowl" + } + ], + "result": { + "item": "emeraldcraft:stir_fried_warden_heart" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/warped_cobblestone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/warped_cobblestone.json new file mode 100644 index 00000000..839c0a56 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/warped_cobblestone.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:cobblestone" + }, + { + "item": "minecraft:warped_wart_block" + } + ], + "result": { + "item": "emeraldcraft:warped_cobblestone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/warped_stone.json b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/warped_stone.json new file mode 100644 index 00000000..6ec49525 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/crafting_shapeless/warped_stone.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:stone" + }, + { + "item": "minecraft:warped_wart_block" + } + ], + "result": { + "item": "emeraldcraft:warped_stone" + } +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/black_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/black_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..3b5c2557 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/black_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:black_terracotta" + }, + "result": "minecraft:black_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/blue_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/blue_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..9fdf097f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/blue_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:blue_terracotta" + }, + "result": "minecraft:blue_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/brick_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/brick_from_glasskiln.json new file mode 100644 index 00000000..e8bc9d0a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/brick_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:clay_ball" + }, + "result": "minecraft:brick", + "experience": 0.3, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/brown_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/brown_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..9d7b1a5c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/brown_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:brown_terracotta" + }, + "result": "minecraft:brown_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/cyan_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/cyan_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..6e2a86d8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/cyan_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:cyan_terracotta" + }, + "result": "minecraft:cyan_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/glass_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/glass_from_glasskiln.json new file mode 100644 index 00000000..689923de --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/glass_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "tag": "minecraft:sand" + }, + "result": "minecraft:glass", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/gray_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/gray_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..672a6bd3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/gray_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:gray_terracotta" + }, + "result": "minecraft:gray_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/green_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/green_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..f484b30e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/green_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:green_terracotta" + }, + "result": "minecraft:green_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/light_blue_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/light_blue_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..896ce784 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/light_blue_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:light_blue_terracotta" + }, + "result": "minecraft:light_blue_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/light_gray_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/light_gray_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..856d1a8b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/light_gray_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:light_gray_terracotta" + }, + "result": "minecraft:light_gray_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/lime_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/lime_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..3e83732d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/lime_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:lime_terracotta" + }, + "result": "minecraft:lime_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/magenta_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/magenta_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..f5c1db32 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/magenta_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:magenta_terracotta" + }, + "result": "minecraft:magenta_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/nether_brick_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/nether_brick_from_glasskiln.json new file mode 100644 index 00000000..71a7134a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/nether_brick_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:netherrack" + }, + "result": "minecraft:nether_brick", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/orange_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/orange_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..162b9a27 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/orange_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:orange_terracotta" + }, + "result": "minecraft:orange_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/pink_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/pink_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..6245cb51 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/pink_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:pink_terracotta" + }, + "result": "minecraft:pink_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/purple_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/purple_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..193fe745 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/purple_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:purple_terracotta" + }, + "result": "minecraft:purple_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/red_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/red_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..51714b6b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/red_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:red_terracotta" + }, + "result": "minecraft:red_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/terracotta_from_glasskiln.json new file mode 100644 index 00000000..6f50ef0c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:clay" + }, + "result": "minecraft:terracotta", + "experience": 0.35, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/white_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/white_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..5cb32471 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/white_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:white_terracotta" + }, + "result": "minecraft:white_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/glasskiln/yellow_glazed_terracotta_from_glasskiln.json b/src/main/resources/data/emeraldcraft/recipes/glasskiln/yellow_glazed_terracotta_from_glasskiln.json new file mode 100644 index 00000000..a7cc83f5 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/glasskiln/yellow_glazed_terracotta_from_glasskiln.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:glass_kiln", + "ingredient": { + "item": "minecraft:yellow_terracotta" + }, + "result": "minecraft:yellow_glazed_terracotta", + "experience": 0.1, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/ice_maker/copper_block_from_copper_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/ice_maker/copper_block_from_copper_fluid_ice_maker.json new file mode 100644 index 00000000..e68d211d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/ice_maker/copper_block_from_copper_fluid_ice_maker.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "melted_copper", + "amount": 100 + }, + "result": "minecraft:copper_block", + "freezingtime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/ice_maker/emerald_block_from_emerald_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/ice_maker/emerald_block_from_emerald_fluid_ice_maker.json new file mode 100644 index 00000000..8f51b77f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/ice_maker/emerald_block_from_emerald_fluid_ice_maker.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "melted_emerald", + "amount": 100 + }, + "result": "minecraft:emerald_block", + "freezingtime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/ice_maker/gold_block_from_gold_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/ice_maker/gold_block_from_gold_fluid_ice_maker.json new file mode 100644 index 00000000..d9b11880 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/ice_maker/gold_block_from_gold_fluid_ice_maker.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "melted_gold", + "amount": 100 + }, + "result": "minecraft:gold_block", + "freezingtime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/ice_maker/ice_from_water_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/ice_maker/ice_from_water_fluid_ice_maker.json new file mode 100644 index 00000000..aaeb47bf --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/ice_maker/ice_from_water_fluid_ice_maker.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "water", + "amount": 100 + }, + "result": "minecraft:ice", + "freezingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/ice_maker/iron_block_from_iron_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/ice_maker/iron_block_from_iron_fluid_ice_maker.json new file mode 100644 index 00000000..caf9fa7b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/ice_maker/iron_block_from_iron_fluid_ice_maker.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "melted_iron", + "amount": 100 + }, + "result": "minecraft:iron_block", + "freezingtime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/ice_maker/obsidian_from_lava_fluid_ice_maker.json b/src/main/resources/data/emeraldcraft/recipes/ice_maker/obsidian_from_lava_fluid_ice_maker.json new file mode 100644 index 00000000..f31e3970 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/ice_maker/obsidian_from_lava_fluid_ice_maker.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:ice_maker", + "ingredient": { + "fluid": "lava", + "amount": 100 + }, + "result": "minecraft:obsidian", + "freezingtime": 50 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_blackstone_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_blackstone_melter.json new file mode 100644 index 00000000..17a2a3ad --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_blackstone_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:blackstone" + }, + "result": { + "fluid": "lava", + "amount": 50 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_cobblestone_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_cobblestone_melter.json new file mode 100644 index 00000000..9aa3d653 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_cobblestone_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:cobblestone" + }, + "result": { + "fluid": "lava", + "amount": 50 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_magma_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_magma_block_melter.json new file mode 100644 index 00000000..2cb9dff6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_magma_block_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:magma_block" + }, + "result": { + "fluid": "lava", + "amount": 100 + }, + "meltingtime": 40 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_magma_cream_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_magma_cream_melter.json new file mode 100644 index 00000000..44daac2d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/lava_fluid_from_magma_cream_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:magma_cream" + }, + "result": { + "fluid": "lava", + "amount": 25 + }, + "meltingtime": 20 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_copper_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_copper_block_melter.json new file mode 100644 index 00000000..faf842c7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_copper_block_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:copper_block" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_copper_concentrate_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_copper_concentrate_melter.json new file mode 100644 index 00000000..f53e5eda --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_copper_concentrate_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "emeraldcraft:copper_concentrate" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_cut_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_cut_copper_melter.json new file mode 100644 index 00000000..4eddfe03 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_cut_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:cut_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 25 + }, + "meltingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_exposed_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_exposed_copper_melter.json new file mode 100644 index 00000000..43f83cf9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_exposed_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:exposed_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_exposed_cut_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_exposed_cut_copper_melter.json new file mode 100644 index 00000000..cbb827c6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_exposed_cut_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:exposed_cut_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 25 + }, + "meltingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_oxidized_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_oxidized_copper_melter.json new file mode 100644 index 00000000..b74c3cb6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_oxidized_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:oxidized_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_oxidized_cut_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_oxidized_cut_copper_melter.json new file mode 100644 index 00000000..1de2e389 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_oxidized_cut_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:oxidized_cut_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 25 + }, + "meltingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_copper_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_copper_block_melter.json new file mode 100644 index 00000000..ebe64430 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_copper_block_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:waxed_copper_block" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_cut_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_cut_copper_melter.json new file mode 100644 index 00000000..1b223497 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_cut_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:waxed_cut_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 25 + }, + "meltingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_exposed_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_exposed_copper_melter.json new file mode 100644 index 00000000..981e7106 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_exposed_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:waxed_exposed_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_exposed_cut_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_exposed_cut_copper_melter.json new file mode 100644 index 00000000..2a0690cb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_exposed_cut_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:waxed_exposed_cut_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 25 + }, + "meltingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_oxidized_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_oxidized_copper_melter.json new file mode 100644 index 00000000..2ec3746f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_oxidized_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:waxed_oxidized_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_oxidized_cut_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_oxidized_cut_copper_melter.json new file mode 100644 index 00000000..b478add3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_oxidized_cut_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:waxed_oxidized_cut_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 25 + }, + "meltingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_weathered_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_weathered_copper_melter.json new file mode 100644 index 00000000..d1cff34d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_weathered_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:waxed_weathered_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_weathered_cut_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_weathered_cut_copper_melter.json new file mode 100644 index 00000000..47c9e5a1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_waxed_weathered_cut_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:waxed_weathered_cut_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 25 + }, + "meltingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_weathered_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_weathered_copper_melter.json new file mode 100644 index 00000000..447ae5fa --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_weathered_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:weathered_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_weathered_cut_copper_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_weathered_cut_copper_melter.json new file mode 100644 index 00000000..ce351cbd --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_copper_from_weathered_cut_copper_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:weathered_cut_copper" + }, + "result": { + "fluid": "melted_copper", + "amount": 25 + }, + "meltingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_emerald_from_emerald_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_emerald_from_emerald_block_melter.json new file mode 100644 index 00000000..9baf4d6a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_emerald_from_emerald_block_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:emerald_block" + }, + "result": { + "fluid": "melted_emerald", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_gold_from_gold_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_gold_from_gold_block_melter.json new file mode 100644 index 00000000..064e02b9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_gold_from_gold_block_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:gold_block" + }, + "result": { + "fluid": "melted_gold", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_gold_from_gold_concentrate_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_gold_from_gold_concentrate_melter.json new file mode 100644 index 00000000..4868ffc8 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_gold_from_gold_concentrate_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "emeraldcraft:gold_concentrate" + }, + "result": { + "fluid": "melted_gold", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_iron_from_iron_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_iron_from_iron_block_melter.json new file mode 100644 index 00000000..2e819c68 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_iron_from_iron_block_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:iron_block" + }, + "result": { + "fluid": "melted_iron", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/melted_iron_from_iron_concentrate_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/melted_iron_from_iron_concentrate_melter.json new file mode 100644 index 00000000..9b1c1f78 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/melted_iron_from_iron_concentrate_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "emeraldcraft:iron_concentrate" + }, + "result": { + "fluid": "melted_iron", + "amount": 100 + }, + "meltingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_ice_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_ice_melter.json new file mode 100644 index 00000000..4829bde2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_ice_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:ice" + }, + "result": { + "fluid": "water", + "amount": 100 + }, + "meltingtime": 20 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_snow_block_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_snow_block_melter.json new file mode 100644 index 00000000..4f570ab2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_snow_block_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:snow_block" + }, + "result": { + "fluid": "water", + "amount": 100 + }, + "meltingtime": 20 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_snowball_melter.json b/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_snowball_melter.json new file mode 100644 index 00000000..517bf6de --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/melter/water_fluid_from_snowball_melter.json @@ -0,0 +1,11 @@ +{ + "type": "emeraldcraft:melter", + "ingredient": { + "item": "minecraft:snowball" + }, + "result": { + "fluid": "water", + "amount": 25 + }, + "meltingtime": 10 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/mineraltable/blaze_powder_from_mineraltable.json b/src/main/resources/data/emeraldcraft/recipes/mineraltable/blaze_powder_from_mineraltable.json new file mode 100644 index 00000000..99db36a7 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/mineraltable/blaze_powder_from_mineraltable.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:mineral_table", + "ingredient": { + "item": "emeraldcraft:vitrified_sand" + }, + "result": "minecraft:blaze_powder", + "experience": 0.1, + "cookingtime": 500 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/mineraltable/diamond_nugget_from_mineraltable.json b/src/main/resources/data/emeraldcraft/recipes/mineraltable/diamond_nugget_from_mineraltable.json new file mode 100644 index 00000000..c68a4585 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/mineraltable/diamond_nugget_from_mineraltable.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:mineral_table", + "ingredient": { + "item": "minecraft:coal_block" + }, + "result": "emeraldcraft:diamond_nugget", + "experience": 0.1, + "cookingtime": 500 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/mineraltable/emerald_nugget_from_mineraltable.json b/src/main/resources/data/emeraldcraft/recipes/mineraltable/emerald_nugget_from_mineraltable.json new file mode 100644 index 00000000..94333a4b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/mineraltable/emerald_nugget_from_mineraltable.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:mineral_table", + "ingredient": { + "item": "emeraldcraft:jadeite_sand" + }, + "result": "emeraldcraft:emerald_nugget", + "experience": 0.1, + "cookingtime": 500 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/mineraltable/gold_nugget_from_mineraltable.json b/src/main/resources/data/emeraldcraft/recipes/mineraltable/gold_nugget_from_mineraltable.json new file mode 100644 index 00000000..3d527c32 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/mineraltable/gold_nugget_from_mineraltable.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:mineral_table", + "ingredient": { + "item": "minecraft:red_sand" + }, + "result": "minecraft:gold_nugget", + "experience": 0.1, + "cookingtime": 500 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/mineraltable/iron_nugget_from_mineraltable.json b/src/main/resources/data/emeraldcraft/recipes/mineraltable/iron_nugget_from_mineraltable.json new file mode 100644 index 00000000..0508e144 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/mineraltable/iron_nugget_from_mineraltable.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:mineral_table", + "ingredient": { + "item": "minecraft:gravel" + }, + "result": "minecraft:iron_nugget", + "experience": 0.1, + "cookingtime": 500 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/mineraltable/lapis_nugget_from_mineraltable.json b/src/main/resources/data/emeraldcraft/recipes/mineraltable/lapis_nugget_from_mineraltable.json new file mode 100644 index 00000000..721953e3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/mineraltable/lapis_nugget_from_mineraltable.json @@ -0,0 +1,9 @@ +{ + "type": "emeraldcraft:mineral_table", + "ingredient": { + "item": "emeraldcraft:azure_sand" + }, + "result": "emeraldcraft:lapis_nugget", + "experience": 0.1, + "cookingtime": 500 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smelting/boiled_egg.json b/src/main/resources/data/emeraldcraft/recipes/smelting/boiled_egg.json new file mode 100644 index 00000000..4f556a2e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smelting/boiled_egg.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "minecraft:egg" + }, + "result": "emeraldcraft:boiled_egg", + "experience": 0.35, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smelting/cooked_herring.json b/src/main/resources/data/emeraldcraft/recipes/smelting/cooked_herring.json new file mode 100644 index 00000000..e5aacdb6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smelting/cooked_herring.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "emeraldcraft:herring" + }, + "result": "emeraldcraft:cooked_herring", + "experience": 0.35, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smelting/cooked_purple_spotted_bigeye.json b/src/main/resources/data/emeraldcraft/recipes/smelting/cooked_purple_spotted_bigeye.json new file mode 100644 index 00000000..2b2d63e0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smelting/cooked_purple_spotted_bigeye.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "emeraldcraft:purple_spotted_bigeye" + }, + "result": "emeraldcraft:cooked_purple_spotted_bigeye", + "experience": 0.35, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smelting/cooked_purpuraceus_fungus.json b/src/main/resources/data/emeraldcraft/recipes/smelting/cooked_purpuraceus_fungus.json new file mode 100644 index 00000000..d607669c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smelting/cooked_purpuraceus_fungus.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "emeraldcraft:purpuraceus_fungus" + }, + "result": "emeraldcraft:cooked_purpuraceus_fungus", + "experience": 0.35, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smelting/cooked_sausage.json b/src/main/resources/data/emeraldcraft/recipes/smelting/cooked_sausage.json new file mode 100644 index 00000000..b6ab4def --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smelting/cooked_sausage.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "emeraldcraft:sausage" + }, + "result": "emeraldcraft:cooked_sausage", + "experience": 0.35, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smelting/cooked_tropical_fish.json b/src/main/resources/data/emeraldcraft/recipes/smelting/cooked_tropical_fish.json new file mode 100644 index 00000000..f3368a40 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smelting/cooked_tropical_fish.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "minecraft:tropical_fish" + }, + "result": "emeraldcraft:cooked_tropical_fish", + "experience": 0.35, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_azure_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_azure_sandstone.json new file mode 100644 index 00000000..4c79b945 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_azure_sandstone.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "emeraldcraft:azure_sandstone" + }, + "result": "emeraldcraft:smooth_azure_sandstone", + "experience": 0.1, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_dark_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_dark_sandstone.json new file mode 100644 index 00000000..87ba11c9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_dark_sandstone.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "emeraldcraft:dark_sandstone" + }, + "result": "emeraldcraft:smooth_dark_sandstone", + "experience": 0.1, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_emery_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_emery_sandstone.json new file mode 100644 index 00000000..6434db51 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_emery_sandstone.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "emeraldcraft:emery_sandstone" + }, + "result": "emeraldcraft:smooth_emery_sandstone", + "experience": 0.1, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_jadeite_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_jadeite_sandstone.json new file mode 100644 index 00000000..1367c528 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_jadeite_sandstone.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "emeraldcraft:jadeite_sandstone" + }, + "result": "emeraldcraft:smooth_jadeite_sandstone", + "experience": 0.1, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_quartz_sandstone.json b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_quartz_sandstone.json new file mode 100644 index 00000000..df915cb9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smelting/smooth_quartz_sandstone.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smelting", + "ingredient": { + "item": "emeraldcraft:quartz_sandstone" + }, + "result": "emeraldcraft:smooth_quartz_sandstone", + "experience": 0.1, + "cookingtime": 200 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smoking/boiled_egg_from_smoking.json b/src/main/resources/data/emeraldcraft/recipes/smoking/boiled_egg_from_smoking.json new file mode 100644 index 00000000..04e03d6e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smoking/boiled_egg_from_smoking.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smoking", + "ingredient": { + "item": "minecraft:egg" + }, + "result": "emeraldcraft:boiled_egg", + "experience": 0.35, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smoking/cooked_herring_from_smoking.json b/src/main/resources/data/emeraldcraft/recipes/smoking/cooked_herring_from_smoking.json new file mode 100644 index 00000000..619e5e6e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smoking/cooked_herring_from_smoking.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smoking", + "ingredient": { + "item": "emeraldcraft:herring" + }, + "result": "emeraldcraft:cooked_herring", + "experience": 0.35, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smoking/cooked_purple_spotted_bigeye_from_smoking.json b/src/main/resources/data/emeraldcraft/recipes/smoking/cooked_purple_spotted_bigeye_from_smoking.json new file mode 100644 index 00000000..3d9caa4e --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smoking/cooked_purple_spotted_bigeye_from_smoking.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smoking", + "ingredient": { + "item": "emeraldcraft:purple_spotted_bigeye" + }, + "result": "emeraldcraft:cooked_purple_spotted_bigeye", + "experience": 0.35, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smoking/cooked_purpuraceus_fungus_from_smoking.json b/src/main/resources/data/emeraldcraft/recipes/smoking/cooked_purpuraceus_fungus_from_smoking.json new file mode 100644 index 00000000..23b4636f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smoking/cooked_purpuraceus_fungus_from_smoking.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smoking", + "ingredient": { + "item": "emeraldcraft:purpuraceus_fungus" + }, + "result": "emeraldcraft:cooked_purpuraceus_fungus", + "experience": 0.35, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smoking/cooked_sausage_from_smoking.json b/src/main/resources/data/emeraldcraft/recipes/smoking/cooked_sausage_from_smoking.json new file mode 100644 index 00000000..76072292 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smoking/cooked_sausage_from_smoking.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smoking", + "ingredient": { + "item": "emeraldcraft:sausage" + }, + "result": "emeraldcraft:cooked_sausage", + "experience": 0.35, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/smoking/cooked_tropical_fish_from_smoking.json b/src/main/resources/data/emeraldcraft/recipes/smoking/cooked_tropical_fish_from_smoking.json new file mode 100644 index 00000000..74732f4f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/smoking/cooked_tropical_fish_from_smoking.json @@ -0,0 +1,9 @@ +{ + "type": "minecraft:smoking", + "ingredient": { + "item": "minecraft:tropical_fish" + }, + "result": "emeraldcraft:cooked_tropical_fish", + "experience": 0.35, + "cookingtime": 100 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_slab_from_azure_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_slab_from_azure_sandstone_stonecutting.json new file mode 100644 index 00000000..b639d12a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_slab_from_azure_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:azure_sandstone" + }, + "result": "emeraldcraft:azure_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_stairs_from_azure_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_stairs_from_azure_sandstone_stonecutting.json new file mode 100644 index 00000000..411623aa --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_stairs_from_azure_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:azure_sandstone" + }, + "result": "emeraldcraft:azure_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_wall_from_azure_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_wall_from_azure_sandstone_stonecutting.json new file mode 100644 index 00000000..d46cd191 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/azure_sandstone_wall_from_azure_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:azure_sandstone" + }, + "result": "emeraldcraft:azure_sandstone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_slab_from_red_nether_bricks_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_slab_from_red_nether_bricks_stonecutting.json new file mode 100644 index 00000000..af88cd98 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_slab_from_red_nether_bricks_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:blue_nether_bricks" + }, + "result": "emeraldcraft:blue_nether_brick_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_stairs_from_red_nether_bricks_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_stairs_from_red_nether_bricks_stonecutting.json new file mode 100644 index 00000000..49aa8e46 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_stairs_from_red_nether_bricks_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:blue_nether_bricks" + }, + "result": "emeraldcraft:blue_nether_brick_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_wall_from_red_nether_bricks_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_wall_from_red_nether_bricks_stonecutting.json new file mode 100644 index 00000000..3b36f1e2 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/blue_nether_brick_wall_from_red_nether_bricks_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:blue_nether_bricks" + }, + "result": "emeraldcraft:blue_nether_brick_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_slab_from_crimson_cobblestone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_slab_from_crimson_cobblestone_stonecutting.json new file mode 100644 index 00000000..fed8eda4 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_slab_from_crimson_cobblestone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:crimson_cobblestone" + }, + "result": "emeraldcraft:crimson_cobblestone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_stairs_from_crimson_cobblestone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_stairs_from_crimson_cobblestone_stonecutting.json new file mode 100644 index 00000000..095af911 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_stairs_from_crimson_cobblestone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:crimson_cobblestone" + }, + "result": "emeraldcraft:crimson_cobblestone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_wall_from_crimson_cobblestone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_wall_from_crimson_cobblestone_stonecutting.json new file mode 100644 index 00000000..1d6f5320 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_cobblestone_wall_from_crimson_cobblestone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:crimson_cobblestone" + }, + "result": "emeraldcraft:crimson_cobblestone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_slab_from_crimson_stone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_slab_from_crimson_stone_stonecutting.json new file mode 100644 index 00000000..26114e1f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_slab_from_crimson_stone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:crimson_stone" + }, + "result": "emeraldcraft:crimson_stone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_stairs_from_crimson_stone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_stairs_from_crimson_stone_stonecutting.json new file mode 100644 index 00000000..6431a472 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_stairs_from_crimson_stone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:crimson_stone" + }, + "result": "emeraldcraft:crimson_stone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_wall_from_crimson_stone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_wall_from_crimson_stone_stonecutting.json new file mode 100644 index 00000000..d121e50b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/crimson_stone_wall_from_crimson_stone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:crimson_stone" + }, + "result": "emeraldcraft:crimson_stone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_from_azure_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_from_azure_sandstone_stonecutting.json new file mode 100644 index 00000000..7ebff225 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_from_azure_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:azure_sandstone" + }, + "result": "emeraldcraft:cut_azure_sandstone", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_slab_from_azure_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_slab_from_azure_sandstone_stonecutting.json new file mode 100644 index 00000000..92ff9bd1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_slab_from_azure_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:azure_sandstone" + }, + "result": "emeraldcraft:cut_azure_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_slab_from_cut_azure_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_slab_from_cut_azure_sandstone_stonecutting.json new file mode 100644 index 00000000..cbd02bc6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_azure_sandstone_slab_from_cut_azure_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:cut_azure_sandstone" + }, + "result": "emeraldcraft:cut_azure_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_from_emery_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_from_emery_sandstone_stonecutting.json new file mode 100644 index 00000000..e506f850 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_from_emery_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:emery_sandstone" + }, + "result": "emeraldcraft:cut_emery_sandstone", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_slab_from_cut_emery_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_slab_from_cut_emery_sandstone_stonecutting.json new file mode 100644 index 00000000..5c54c653 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_slab_from_cut_emery_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:cut_emery_sandstone" + }, + "result": "emeraldcraft:cut_emery_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_slab_from_emery_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_slab_from_emery_sandstone_stonecutting.json new file mode 100644 index 00000000..abd9c7a3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_emery_sandstone_slab_from_emery_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:emery_sandstone" + }, + "result": "emeraldcraft:cut_emery_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_from_jadeite_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_from_jadeite_sandstone_stonecutting.json new file mode 100644 index 00000000..74467914 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_from_jadeite_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:jadeite_sandstone" + }, + "result": "emeraldcraft:cut_jadeite_sandstone", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_slab_from_cut_jadeite_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_slab_from_cut_jadeite_sandstone_stonecutting.json new file mode 100644 index 00000000..06e9ec09 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_slab_from_cut_jadeite_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:cut_jadeite_sandstone" + }, + "result": "emeraldcraft:cut_jadeite_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_slab_from_jadeite_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_slab_from_jadeite_sandstone_stonecutting.json new file mode 100644 index 00000000..dafda82c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_jadeite_sandstone_slab_from_jadeite_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:jadeite_sandstone" + }, + "result": "emeraldcraft:cut_jadeite_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_from_quartz_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_from_quartz_sandstone_stonecutting.json new file mode 100644 index 00000000..670de24f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_from_quartz_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:quartz_sandstone" + }, + "result": "emeraldcraft:cut_quartz_sandstone", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_slab_from_cut_quartz_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_slab_from_cut_quartz_sandstone_stonecutting.json new file mode 100644 index 00000000..7c2f6c13 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_slab_from_cut_quartz_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:cut_quartz_sandstone" + }, + "result": "emeraldcraft:cut_quartz_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_slab_from_quartz_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_slab_from_quartz_sandstone_stonecutting.json new file mode 100644 index 00000000..09c9c817 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/cut_quartz_sandstone_slab_from_quartz_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:quartz_sandstone" + }, + "result": "emeraldcraft:cut_quartz_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_slab_from_diamond_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_slab_from_diamond_block_stonecutting.json new file mode 100644 index 00000000..a3819b00 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_slab_from_diamond_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:diamond_block" + }, + "result": "emeraldcraft:diamond_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_stairs_from_diamond_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_stairs_from_diamond_stonecutting.json new file mode 100644 index 00000000..fabdcc01 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_stairs_from_diamond_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:diamond_block" + }, + "result": "emeraldcraft:diamond_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_wall_from_diamond_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_wall_from_diamond_block_stonecutting.json new file mode 100644 index 00000000..f6254956 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/diamond_wall_from_diamond_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:diamond_block" + }, + "result": "emeraldcraft:diamond_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_slab_from_emerald_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_slab_from_emerald_block_stonecutting.json new file mode 100644 index 00000000..5ac7a5eb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_slab_from_emerald_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:emerald_block" + }, + "result": "emeraldcraft:emerald_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_stairs_from_emerald_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_stairs_from_emerald_stonecutting.json new file mode 100644 index 00000000..6e616c21 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_stairs_from_emerald_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:emerald_block" + }, + "result": "emeraldcraft:emerald_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_wall_from_emerald_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_wall_from_emerald_block_stonecutting.json new file mode 100644 index 00000000..8e34baa3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emerald_wall_from_emerald_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:emerald_block" + }, + "result": "emeraldcraft:emerald_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_slab_from_emery_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_slab_from_emery_sandstone_stonecutting.json new file mode 100644 index 00000000..7f5b601b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_slab_from_emery_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:emery_sandstone" + }, + "result": "emeraldcraft:emery_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_stairs_from_emery_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_stairs_from_emery_sandstone_stonecutting.json new file mode 100644 index 00000000..b7493e8d --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_stairs_from_emery_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:emery_sandstone" + }, + "result": "emeraldcraft:emery_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_wall_from_emery_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_wall_from_emery_sandstone_stonecutting.json new file mode 100644 index 00000000..02f74cd9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/emery_sandstone_wall_from_emery_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:emery_sandstone" + }, + "result": "emeraldcraft:emery_sandstone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_slab_from_gold_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_slab_from_gold_block_stonecutting.json new file mode 100644 index 00000000..d542c90a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_slab_from_gold_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:gold_block" + }, + "result": "emeraldcraft:gold_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_stairs_from_gold_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_stairs_from_gold_stonecutting.json new file mode 100644 index 00000000..cf89403a --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_stairs_from_gold_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:gold_block" + }, + "result": "emeraldcraft:gold_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_wall_from_gold_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_wall_from_gold_block_stonecutting.json new file mode 100644 index 00000000..9f46c0cb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/gold_wall_from_gold_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:gold_block" + }, + "result": "emeraldcraft:gold_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_slab_from_iron_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_slab_from_iron_block_stonecutting.json new file mode 100644 index 00000000..45e8bb38 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_slab_from_iron_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:iron_block" + }, + "result": "emeraldcraft:iron_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_stairs_from_iron_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_stairs_from_iron_stonecutting.json new file mode 100644 index 00000000..8779c6b6 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_stairs_from_iron_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:iron_block" + }, + "result": "emeraldcraft:iron_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_wall_from_iron_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_wall_from_iron_block_stonecutting.json new file mode 100644 index 00000000..5a167190 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/iron_wall_from_iron_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:iron_block" + }, + "result": "emeraldcraft:iron_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_slab_from_jadeite_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_slab_from_jadeite_sandstone_stonecutting.json new file mode 100644 index 00000000..e1dc54fc --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_slab_from_jadeite_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:jadeite_sandstone" + }, + "result": "emeraldcraft:jadeite_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_stairs_from_jadeite_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_stairs_from_jadeite_sandstone_stonecutting.json new file mode 100644 index 00000000..573b03eb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_stairs_from_jadeite_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:jadeite_sandstone" + }, + "result": "emeraldcraft:jadeite_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_wall_from_jadeite_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_wall_from_jadeite_sandstone_stonecutting.json new file mode 100644 index 00000000..51bb0eb0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/jadeite_sandstone_wall_from_jadeite_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:jadeite_sandstone" + }, + "result": "emeraldcraft:jadeite_sandstone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_slab_from_lapis_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_slab_from_lapis_block_stonecutting.json new file mode 100644 index 00000000..49dd0e41 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_slab_from_lapis_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:lapis_block" + }, + "result": "emeraldcraft:lapis_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_stairs_from_lapis_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_stairs_from_lapis_stonecutting.json new file mode 100644 index 00000000..f21b0fc9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_stairs_from_lapis_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:lapis_block" + }, + "result": "emeraldcraft:lapis_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_wall_from_lapis_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_wall_from_lapis_block_stonecutting.json new file mode 100644 index 00000000..104996b9 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/lapis_wall_from_lapis_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:lapis_block" + }, + "result": "emeraldcraft:lapis_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_slab_from_netherite_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_slab_from_netherite_block_stonecutting.json new file mode 100644 index 00000000..810f1016 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_slab_from_netherite_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:netherite_block" + }, + "result": "emeraldcraft:netherite_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_stairs_from_netherite_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_stairs_from_netherite_stonecutting.json new file mode 100644 index 00000000..b1a98d00 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_stairs_from_netherite_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:netherite_block" + }, + "result": "emeraldcraft:netherite_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_wall_from_netherite_block_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_wall_from_netherite_block_stonecutting.json new file mode 100644 index 00000000..13ea6980 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/netherite_wall_from_netherite_block_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "minecraft:netherite_block" + }, + "result": "emeraldcraft:netherite_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_slab_from_quartz_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_slab_from_quartz_sandstone_stonecutting.json new file mode 100644 index 00000000..e4e3d6ea --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_slab_from_quartz_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:quartz_sandstone" + }, + "result": "emeraldcraft:quartz_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_stairs_from_quartz_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_stairs_from_quartz_sandstone_stonecutting.json new file mode 100644 index 00000000..c12a0609 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_stairs_from_quartz_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:quartz_sandstone" + }, + "result": "emeraldcraft:quartz_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_wall_from_quartz_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_wall_from_quartz_sandstone_stonecutting.json new file mode 100644 index 00000000..f87311be --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/quartz_sandstone_wall_from_quartz_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:quartz_sandstone" + }, + "result": "emeraldcraft:quartz_sandstone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_azure_sandstone_slab_from_smooth_azure_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_azure_sandstone_slab_from_smooth_azure_sandstone_stonecutting.json new file mode 100644 index 00000000..73987aaa --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_azure_sandstone_slab_from_smooth_azure_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:smooth_azure_sandstone" + }, + "result": "emeraldcraft:smooth_azure_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_azure_sandstone_stairs_from_smooth_azure_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_azure_sandstone_stairs_from_smooth_azure_sandstone_stonecutting.json new file mode 100644 index 00000000..799dea17 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_azure_sandstone_stairs_from_smooth_azure_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:smooth_azure_sandstone" + }, + "result": "emeraldcraft:smooth_azure_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_emery_sandstone_slab_from_smooth_emery_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_emery_sandstone_slab_from_smooth_emery_sandstone_stonecutting.json new file mode 100644 index 00000000..c674f26b --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_emery_sandstone_slab_from_smooth_emery_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:smooth_emery_sandstone" + }, + "result": "emeraldcraft:smooth_emery_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_emery_sandstone_stairs_from_smooth_emery_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_emery_sandstone_stairs_from_smooth_emery_sandstone_stonecutting.json new file mode 100644 index 00000000..1129cdf1 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_emery_sandstone_stairs_from_smooth_emery_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:smooth_emery_sandstone" + }, + "result": "emeraldcraft:smooth_emery_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_jadeite_sandstone_slab_from_smooth_jadeite_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_jadeite_sandstone_slab_from_smooth_jadeite_sandstone_stonecutting.json new file mode 100644 index 00000000..1323c43c --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_jadeite_sandstone_slab_from_smooth_jadeite_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:smooth_jadeite_sandstone" + }, + "result": "emeraldcraft:smooth_jadeite_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_jadeite_sandstone_stairs_from_smooth_jadeite_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_jadeite_sandstone_stairs_from_smooth_jadeite_sandstone_stonecutting.json new file mode 100644 index 00000000..af7928e3 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_jadeite_sandstone_stairs_from_smooth_jadeite_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:smooth_jadeite_sandstone" + }, + "result": "emeraldcraft:smooth_jadeite_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_quartz_sandstone_slab_from_smooth_quartz_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_quartz_sandstone_slab_from_smooth_quartz_sandstone_stonecutting.json new file mode 100644 index 00000000..71548247 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_quartz_sandstone_slab_from_smooth_quartz_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:smooth_quartz_sandstone" + }, + "result": "emeraldcraft:smooth_quartz_sandstone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_quartz_sandstone_stairs_from_smooth_quartz_sandstone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_quartz_sandstone_stairs_from_smooth_quartz_sandstone_stonecutting.json new file mode 100644 index 00000000..b99a05c0 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/smooth_quartz_sandstone_stairs_from_smooth_quartz_sandstone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:smooth_quartz_sandstone" + }, + "result": "emeraldcraft:smooth_quartz_sandstone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_slab_from_warped_cobblestone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_slab_from_warped_cobblestone_stonecutting.json new file mode 100644 index 00000000..4a920f71 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_slab_from_warped_cobblestone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:warped_cobblestone" + }, + "result": "emeraldcraft:warped_cobblestone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_stairs_from_warped_cobblestone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_stairs_from_warped_cobblestone_stonecutting.json new file mode 100644 index 00000000..34f60aaa --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_stairs_from_warped_cobblestone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:warped_cobblestone" + }, + "result": "emeraldcraft:warped_cobblestone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_wall_from_warped_cobblestone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_wall_from_warped_cobblestone_stonecutting.json new file mode 100644 index 00000000..8b4f4845 --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_cobblestone_wall_from_warped_cobblestone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:warped_cobblestone" + }, + "result": "emeraldcraft:warped_cobblestone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_slab_from_warped_stone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_slab_from_warped_stone_stonecutting.json new file mode 100644 index 00000000..e371056f --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_slab_from_warped_stone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:warped_stone" + }, + "result": "emeraldcraft:warped_stone_slab", + "count": 2 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_stairs_from_warped_stone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_stairs_from_warped_stone_stonecutting.json new file mode 100644 index 00000000..d82a47fb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_stairs_from_warped_stone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:warped_stone" + }, + "result": "emeraldcraft:warped_stone_stairs", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_wall_from_warped_stone_stonecutting.json b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_wall_from_warped_stone_stonecutting.json new file mode 100644 index 00000000..33b899bb --- /dev/null +++ b/src/main/resources/data/emeraldcraft/recipes/stonecutting/warped_stone_wall_from_warped_stone_stonecutting.json @@ -0,0 +1,8 @@ +{ + "type": "minecraft:stonecutting", + "ingredient": { + "item": "emeraldcraft:warped_stone" + }, + "result": "emeraldcraft:warped_stone_wall", + "count": 1 +} \ No newline at end of file diff --git a/src/main/resources/data/emeraldcraft/structures/camp/badlands_camp.nbt b/src/main/resources/data/emeraldcraft/structures/camp/badlands_camp.nbt new file mode 100644 index 0000000000000000000000000000000000000000..98ba07434ea495458fcf73ff8fb55b192e305ea5 GIT binary patch literal 1261 zcmYk2dsNbQ6u@1x(qtjpPP9}`^QeuS;w!>jjQ#95hcVYf%_V9CnGa5>Obwwn9@=ym z2NNHq_$o4cX!Fs*4ADeXQVV0ga)h`NWr+zfd<<=;vwuGKd+$Bx-uwB&@@%XOIMqq3 z)!I@yM;*M4)wig|J@t3B&f{LTcL0ma-R@z&v8iOI96bkjPP)3U@m9dI1>Yby>Q!8< zRNbs~3dWY~<_)wwi9FWcTwh-p4Ie9lF@E^&S}by+@7g3k5yEN6Cnnt2rAakqbzU!; zZs|JFSR#(HXS1xrueWJPD)0&cm4pdC;>i&s7l-`vT@WO;k2S%z+fASFd4c;H%6t4s zAgroLu7?gCfJV2<<4de)Uvi%(bdV(1L>83>hn62>fYr0@>SqoWk1qJelmTVYL zi2mr2yq%-y+}Ep{`sE-VB;OqhAd2Gj)|Tgq%|~<+(8PAXutZNFpP1VK@+orbZtRLG zg7!fOs45&z0da2vvqI;9_`~M#V#R@N-H@=}Cs~+>xQ{d9!|y&5$3PWY|FhdI?N7!v|6Gi;U*pzP%x9;_wie9_i)PKbBtzH96}i6mP2KLk_GuH4_jV?x(ur~B zkPvNW;oXVIUMJ*`@bUMQWnFs^Gtcx=DxKa9ZQ0$CJF;eQIo4=gjxwUeB*x-wA z0H-8B@?KJ<%khvT-Y3nIfL=ryUk8QU*|Gd86Ki&_Y&-Z)m{+BwCfaz$R z?dB3e{)F>^>}!`+$0u(NTY52D=6JoovGlwy=}$x&hgIFc6a9WgUUzmJ<}C7F@H#DD z4{a9c8BZZ2sce}f(8+eH5bamsyv_mg(DIQ8ZK7OLc_lMgL^xVlY0~6zeFuFC43>?-l!_oFD}!kTpOML;@520H_vylmPp7Y;LMe zZt7j;`$P1met?~9VAUgjUO{6y<%p&Gy`h)TekgraKR>37GuCK>(@E9ntv zje5~7*~pQTGiER{v{I1&Io8il6XB65ui|s@XR{PnF*9d+ z8qx$EL#FkO8={rM{M-KMAbwC5EBJPsY5jB=$tp6Kz6xzOt+)5SV<2eYcZ&rLNk$Vj zz^Gf6A_TQq`n%Y85)NI!JZ#OtQ+p4Rz)IYVM{sKf6I8y0g3I-v799ZvATT@AEOvky z;K$$+qLm-QjG8OC92zq&B9sHCUtVaJm#x~$OtK%7aFc=twTTdev|j>n48rb%En;8o z)SH2!cMk7`OT9K@t@Qyo##sj&FrMLe4}*L!DcXb7@>_e{7yM(+=C@_w<&HbWoqG+t zelEBWepmG$2H-m#;9UQLn;dm0b^Lt1xhG3HOh|)_7q1HYcO)jdi`dvk1u5pd$6Pr^XDN+D#r!kQkJa&b;B{kqc7vuvKFrjnGOi>C-GR6CnMdd zA3R&0R!)mN`ijCOpa&G+QVYuaM&7W0nQGzrmQCE~MBP6v^ten$ zC`JvwS^4XDoo3DL(R4~p#MO_@jLB`3c8+GETxsX~YdMzm%K43)@TBegjIH`W7cx1H SF_``+UDvh(?nAWG(fJ$3{fUkM literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/camp/desert_camp.nbt b/src/main/resources/data/emeraldcraft/structures/camp/desert_camp.nbt new file mode 100644 index 0000000000000000000000000000000000000000..768001c59e85f4ddfe9153244a6ae4d48e76fe36 GIT binary patch literal 1262 zcmVrWt^tfps?({rY zvv7z-EJBmDuUjr(mDT!vvuI!ZJ6GmdHS(eE&nVYKAA>r7qR(U(BM=w;mZ--P^;n`F`x*7*J;n?ecVSZdP?(gL zFexu#QeMKO_F*Oug6Y>|Cm6Knhs@aC$Oc|+fysK_2fhxVN!cl znABbsCbd_EN$pi(QhQaHl>3Vla2Ez$r^EAWib2=u@LZl^&~=&tce$77yU!<>R6QAy zOONE5Vp4q;Ce>$QQhnA$&4#Gi5H%a3W<%6$h?*@?vn6V_M9r3{$Boo8++)I|+=WT) zLr2t;6a5he%{tVdobbvCFJaKEL+QtrZ_8IIhA zK{Fh=3zKpeCbjOuq}+u;=LK?igqI_{9O31NnscINVbGa^ymG=TC%l9~X9{vx@=P%3 zOfkS+7<8r>;4Tb0Qw(sI?^4j2g5qc*jxcD>qaF%_<~-`5CcF&cWe6`rcp1XW5MGAx zvV@l8Nnuo|;n3TIPefQzLgfNC+EWx1pjJ!1Ar3o)hcxl2*7<3u|CMlxpKe7us{DqWTten zQD5zgLs-{-8-Loiq+bW4?j*#06@7VP7wYz}ur7|F`MU|5u^)>JzaYE46x1%P!!__MB#p+5Z(XQr(GP&6w0*!J4~;oCL%`kGh{DI5-wwL+zZ*h27#+MZn;`{#66iq0@ z1}1;zlJ~mqi+ULA_Ni@kT~-ed?TWaqFPqSQFg_oH%2!p4)xHb#!*qL=P3c#|(D~M{ zTT|r@RULO-m~XCOo_tv@V^y!O@AmfS`HewPQx>tSQ!?1#+ubZ7USD#Q^rz)^O=#Nx z>n+r)YiPJOM_)%}w{3rVA)D&)6mnLr*N?}dOFGt*=TMf_)ADqIjECL@zxm&xjk^8S YNB=I=O;H`%aq^G)58w0@!~P}!05d{|uK)l5 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/camp/jungle_camp.nbt b/src/main/resources/data/emeraldcraft/structures/camp/jungle_camp.nbt new file mode 100644 index 0000000000000000000000000000000000000000..a702f2aa2241e72fbbd29094612f76991400c8ef GIT binary patch literal 1373 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/camp/savanna_camp.nbt b/src/main/resources/data/emeraldcraft/structures/camp/savanna_camp.nbt new file mode 100644 index 0000000000000000000000000000000000000000..1e1e5a763f337bf8a7a7de1c0a10d42801a88af4 GIT binary patch literal 1317 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 D2p)=d literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/camp/swamp_camp.nbt b/src/main/resources/data/emeraldcraft/structures/camp/swamp_camp.nbt new file mode 100644 index 0000000000000000000000000000000000000000..dc3af2ac62f5875d157f27cb5d39c21724bf61f5 GIT binary patch literal 1418 zcmYjPc~sI_6gG~H8b*^eZY^XrnqR zFlyZ4d)n2rgowha*bVX!jZuR#SeOlRJ-g{DZvAjUphacyNyEw^#uR3uaZXZW#>_E` zOLs_!%b)1OAIYN`9rg?>n&o^5s`d<1ao@56R4X3qXZUn>Rb;n6iS1lGJ>`p+{Wvl0Y44$jQM?sxHK{!uoQ%2~IjFLa67Ze~cg zGlhpD&UImna)>Ug$n$Wd<`cd{OMUcL(U8XH*1$9mr(DN^aygZ{(6*j5PIS@>RENY0 zo2=UhMKBY3K$a$mI|)-zw==IGmeEQpQ~p*%DTGGQgVy@*(iWQdH%Cq)GE7YQU_rat!1gOO3qs$>&-3)d?*5j9@9?v>^r5!sqPf(35zj+`Ewb0A5tLwUPO|-? zg1(0`<&$O40IFo#y(YHMl&y#kk4x4T>iUhs7RNY5zGgS?_M(raDccyo7?c(tpn;p5 z0FO;19^`I!x44V>X)Ib}<~G=^bsN<{T%6mv_-HjDZZoVI;W}=hc`MDvAzx6eA|^{- zlG=drj_xuwn>6Dy&^Za`;bpn)Rw)zd0f5Q^X^aI_mj_BnkO7eG-nYG<0U=r}mn{be zIZyom8o+MXB!q@S6BO8E>cOE0M7uFqXUZAH361Gn3ro>tVn1JFC{dF$d zZ_CzgX<)n(@iryK152%3s)2aaGSjX3%9?a==CNk{{GLz|58rL=XgB#OXj@HY(l)C>g^`?ulphi+oIJY=%Kl=1^+dlMvPYqwByRq&hzsIY3WbrE-A4^^AOtC z0IYVDk1+SjhHr81) zVv+S!m?Ha!eMyhs4-H8bBt#v@4<^ha^}3Z^@Y27AL17{X(`rA6-P@}pSFSX~j+Gr9 zjD#H~RyfdOx}qAdsN_ebP3Ek&q(G`&pXgpV5$Wd@5;L%L;dqn%{IEl|a{Bs6yp6X& z^9U~!j+cQ|2S;wDSY7MeNro<8-#Rzc=eHWNj_j&}< zFQqD<6gu2+j3d~>DWnJW=Aj0EM$+$) zo>5)FY)@%hHq_(rTM;ZK4~ehRt6e{X;?6gfL_{RY?_+ZRt%Zw!{-=;ixp`_)*Txio&NwbH0^8v literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/camp/taiga_camp.nbt b/src/main/resources/data/emeraldcraft/structures/camp/taiga_camp.nbt new file mode 100644 index 0000000000000000000000000000000000000000..c457f581f625fbd7c5c17199b7aad1870cc59e07 GIT binary patch literal 1423 zcmYjOeNfVO7)PyXm&wXfbCy?(1e7_fTf`OK`Z;~d-pt_*XQed&IR%(>PaSK{&rPQ zt}=Gz>79~0BG{gM@^Hy>sgkt!j{uR2XjSa%JL|uoFNy~U>Gi0KMLRFBy?574mp4YN zdhGK1_SZG#ApqMoH0dyh;Xj+1dF8>lp=<6+wVCUEv9@oxH`Ga-BYYB#@MKq=8TmJI zKVe_kVD{3ZqgfSUjk#sRQ}^XCw~&a;TIBi21fmRvO!!eoM3lrwmn!qM*jk9c8-@Y# zUxqpD7V@SB|H#?}2-5waV})hNQsuM^5Fk;=F}=ys3kb%HDqx3${EQP5R!ojJoFawJ1a`8@HkF0y{8T0a^SA+0*Nh zuCatJ>8x{*(PukL_)TWrJ&db?Od~Z8`gElvicOa)LAP zdeeHnJqb7<$n`}-GH_p-rB4Fcl?0n@1Za!%$#<3q(}ZNBDhDwfr3%bD%rO z9NPI2901`^r-dy!aPt^b+(m%^!Ek>teD`e`h!!vfP+K3+5%aZ~yw-mSMgg(g+4%NK zdJN3YrI6v^B?!G8;zZ{_2Blpe?*aA)Mc>yv?ri7SGsW3i;KzN`LB$o9+m-`VYIEss z+XVUP+Zj7Cf5oYm5%pDmZ%@ zr>~FvH(#8Jeg@kXr*+%=YUeBu-&DO(t_;aumlWj>ipt$`rxqNFIO{<>dN!+CpqPN;|qzFGng3Ur_HP{Xg zQJMl24DmIEb@lBJ#dmvjN1}+6$rEL(hj?5?#g^33LBk;-dYHZzZtNmu-sG{HL<|FT zL-jQ&nt2g<9z9Z%M0(KLcDE@t@xJW4s33OpII$s3ji~m(SzDX>IRS|}*5%LIahj_I zNfqt&r0s&3dXtL@b86S{OgC{LrY5ER^4@PMa7D={lv`<2+|fi<&Z*^z2x&rYcq)5# zKz%7CqbidiTEV|!E?IU%qK<5MiSCaiQXTS|T20f(!snFzWYf!-$6YPeMl)iwIO&Jy zbq4ipAJ%a2(gcss@w~nhRh7#-Ce`z${l8c}c57aodpf@YQeNeQ$B+2kn7`%OwULSL z&@fDQBlV~qWLbN|b|H&Bm?Glm=VTi;qME!eALk0LwlpQH9XYw$&%=3rjo7&B=2(eN z!u8dZ0BjY{WR?WaXen=^b6Rv?Oz@_V@%ZNg0uF)v2UMNkX#fBK literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/nether_warfield/center/nether_warfield1.nbt b/src/main/resources/data/emeraldcraft/structures/nether_warfield/center/nether_warfield1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..aa3ee36a1ccb91975dcf9165bccf78fb83542099 GIT binary patch literal 3058 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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..78ecb184f5c225028cd3028aff96e20b211a9803 GIT binary patch literal 5174 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 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 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 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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 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_accessory_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_accessory_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..92854bc97de66cff7b57bb967b7ebab806336368 GIT binary patch literal 543 zcmV+)0^t20iwFSbTgPGm|E-kGj?*v@$EW#d(^LqAgoK2|ffrcLoH-*-T%&0+NxgOK z$aWenFT<-cX-Q*B(~a0FiXz9qnfcGyGbz9tA}fAU2mr$y@EfloA?1V2@ z-`kWIAJ-5z+71Rsp#O#tTZfL|WO0oNZ!mDh&tifJW-#FlCi0kILNjKt6rJjML2IfYPdT>|l=7Rtd2rKl7Y2}BBOf)BM&lp8GFmu)L# zAyk#|gfXacVy4kr!Y8W9pe#<3(H>=&Z#YbNB+Fw44cPY2p#a9#E&i6b!sTikKx_r{IAD54Kt^79m*ZDnv z@2qTH8S{|q@|iyypKmJ7H1|JyN&Zjm@<+|N1%cm%S8pl2C0V*Nsb?muK_G+h_Zc@? zCbQg8=S?tboXNVQdE%Xe9`6z!F}M}6EAIsI7BiF^OtO|Z$=&mW)$J3La%E|@`~i=+ zge9h|VEKa{ah?t0Nb-#nuZi?LsVkG(;V$fR-*#TYA_g_igi8#|-cRj$b9rI7)xj@& zH*ubs|oK}B>4R&3&gZ9cg2N!p6~%}zg)gw`sVwbySppj7@p`3nSSsHW6zfR2R(kv`rQA!dZL;O^Y?J!o-gN`Ctj27+43%7NhwI@ z44)6PdUy1fHt%dsT$}tZA>#E6>lr;JjZm&ixxt#!Ga$qLir(*%Jh0)KAxvZ*3oKB8 zia;R&RJHCyI>X^8abb`e!$Nit^Lu22wZt{6XMAm2`yhq}q6^%$76KXk{hct_{2GuO zP_?`|wegzj5m}z>Sf@J&H$a%O#X$3qgSZeU*>V-23dmMB!>j~*3)M)FQ1$Q0LLjGV zf}A=X%A603Y$FrpC(v^1irmOorI}({E5F=ZVg7rO(d;PuUGmqiS?>O>&UbCv ztKYXf?YZjDp0mk$QS zQG0v$%Z(b_UALb0eVP@U%k$@5e$P$$JI5Q(>2JRr9c%wI%>HTrvH1D#|Gc~}_x0HQ zFLN*UR!4{Y^ql^5xBLDp&(_+`c=hXgv+c}VIr{GVFRz?1uj)zsnuq_N+^tTlyRfwI z+?M#9s?8y%=V$-7DE)m@-9Fqm)n7ies!rsL?Ym*~CCOW$@q@mAp5i+kB8g>C!hZZUIC&;FVZF86)T{`v7>NBEBy*B9#> zRy0(W|FD<%bGgz!Uf#f>Bi!6c{OgCA&#vcQ;5FL6@84bhO{bUbwCmZQy*sq6_`}>C z@2%d{eYmynLFPH*ubY;?%w1GkX|i*z`TM_d|DE2ye!lirI=|lD4gbGQeW^P+TRrth zh<3ENUEwX!Z9(0S75Ddao}Pa+XiwceyQDfBj_JpEZdH?_b literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_animal_pen_2.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_animal_pen_2.nbt new file mode 100644 index 0000000000000000000000000000000000000000..22bcdffddd7e822fc032f276186ce3e9f5fbd23c GIT binary patch literal 2152 zcmbW1dsLEl7{`^gGFP_YO3U)h9Jca8GaHtdwv)CD=Q`<9Q^CtnQ}YTWg{alcC_5Ze z5gcsn9Bkq=%}^wRv@9>+Df5D4x>E2+M}Fg=Z+=y<%i+x+l1**7CNiXr3OQ0jcT{xfuj2pwESJ-c>I20QvP*voV`?!`pg zM0q|N9dX?jFAbyou@PyVxyf?sP{Fe%tAGfRU;fB2!7tagg_eezrOQ~cA#pRc<*eSQ zbFK;PRA!y}_UQ{}I9TX- z94Rqs^#k2mPktJDSa`%9X|)wfGA2JUgp>FmKMjNx^@AWu`e06aw&XLgz#Kwxgzt|e zM+u=%i$WRBmbB{z3rB4YODf-$Jpl*tk2qe+My&@6HbW?1!S`E|qvRg-J)w-d4Ho6< z39b<&@DRKTLypq$kHpX+r8^+FwV{kiU2+ux$uO^fUoYQB9x}gFfrlLom{rxMxncHk z_(6c-gq`F>kfRThG25h!aetXLZ75OEh{mn3j6!Q@D#+0ri85++$>4Y)bEdi{;F=;~ zDkj63rkDdIyGU8at=9j#q=HUbL)#5d`3Y@`O9~6Fe-LuZgQCYqIxepb006n`6dBn- zEB1gGd;lcb13dNHCMAyI9tI)a(;EUH=~6zx9I*09&hSUg#f@u2lD%l!}`eG~y!?3&X* zob(DNpid%3XX=)21u)uO9I$#lWza~$SOG?(ZC-(v-+BTADvbs@_@LNXCDAet_l{X9 z(n#qHvY`D5NCMZiFU(>BlM_`%Kj}2wfl}?XRxV}yxLPEP0(1xH@%`HYMu6f61rIhM z4cLUvDh_~?DR>0fjI-C;N=^iFs6^t4%%ug3eY`f%)&cN85r(YTvNmsE)rje;5jgO5 ze&Sna+(I|E)#8{Pv?6E!JrLXn%H}BG;`4{nwS}p$jhEzXgT= zVI40EBY7YAPVKTcEmr1D7jW6p%~U2Oa+(=*O4KF8o$SR7;x$q#dqg}r+Q^QhzPV8z zKj&-mxU>XYEywkqeVIqa1s~w1V(^IgX4G_2g#%)mTf4msRyLB;HXmNslXpWA+f&e6 zGTaxUYVAT`7~?Wcm~%(%aI@sCbZ?JqzD&-&&njuFE4sid8nX!$YPvVI6neB2=6Tok z_+m>X)W34wo(qEO0_<4ceR)*z)yw$FW?xyHW-MX{!9DP(2=C7x%o@ZyS@423#uEsL zmz!+VWqYvd>PghJ{{aDZs$qXgyg2TzNRudb`z07XH9ovSLmHM zkuM%$_gfb)AcDw4H^@_bG~!+;tCxwNBY)Y3b#%Esji7r@&UO*YYLlu@yJ@iJvZ{Sj zP&U%m7D6XCc4CaLQRWd4X)ow+COj#_#U)Ligo767fmezC@F~f+KFPxI`{&Ijg57s{ za|8XbvmGvWW%!}Ki>6fe_K-2uy#K~5y6v1vfdQQdlX~%H<~xdO&eb=YIA~1l=M@}x zOL{`$6^D@Q%C|x}NqT)og6b;}sBc%(Xq<-cdFNekS?+u~*g}d_&U-6 hMBG1m45KcnbkLkYbBlLX$_SAfeGhg{PKK|Z-hcaUBSHWG literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_animal_pen_3.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_animal_pen_3.nbt new file mode 100644 index 0000000000000000000000000000000000000000..79bf9840b02241e6d53e2cf55eb8396a6f923f8d GIT binary patch literal 2246 zcmah|dr(q&6t*UEooL*Z3f;_hd!W7ax?1)S*hXu%1}j^UY*8^M(@e3*S1K5mrdDpb z6^g}3Qz>q`u8%}CEI^xlw2TiFMMm>cKFBmB1!V69ZIWX5ulu{d?|07mzVDo~HvJnD zQIhb4iB^^)zP>KR>gQ#7bb3_lY6OBDpXgB=npr&|%|muux}B~p@QF%Xccl96^BNw?_Qbk+o7(YNxEHmELFDUC(&ipE=1t zqfF}Uzx=)qAFU0+Zb|F$e<%v>9Nl$=)svSumC*b|H2j@};Yr_wz(v-=!-3aA70v>; z21pW01K4E(_t2Dl3tVXwBX|@LOH<%>&)^m~XE#Q0G9ZQru%~O>CoZNAP^4~VsBCkb z^IAqQ1`x-S*yyE*#&1zhtPpw@441`l(#7Z@FeVO;%KlNG27dy~ ze+k3&Ek>PNglIGcSz!m`s4+=dD27kXnC#&%fOxXTUE-uRXS~Vo2o!G@xJ%$pIABl} zaXu;EqG9JVo&1sFIU&<4Dh>nXEK}s*W->6ycj2tYWsz#lf^L$Ue6Ny$D3*;C?{HWX zc<^hAJ(py)vHKAYz|*a483*Y3h~YGdYchdIRNxtV|Du6GEiRBsJwI-uUdu>H4KW83 zN2lDaLUr5D_?jZ-5xq(ZvUzobb9(_WXm3xG+%nTkH_S4$1R+BLC8Q?&b3RR;l{%cN zSY{boom*kKfmm~FI1BtiQx*k2J_RP7Yyhj@<65HT8{T$dU~%p7SD!sZaubW&oRGi* zL}xG?SMe1H%I>-Gvjht(+0IwGVaP*+zA;zI5W@Ab56zW=2GYPsP{saUkTiLNZe-go ztUn8?bFqLZ>yDoZUC0*>`8sF8LL^6#y9DBWC`0#&fo!t@9iXRxZY_NJ$zQ5s(0jx3moPh(YU6hRq9 zhAtV7!@SXTtb>q7yiTL8skfk6C=h~^>$lNKkkkF59bZ{dZPoyHVOEA3nwE4NX(e&JG;??k(HHc+CJ z&5S)SANCfJJ0p3a-sVL`34B-U@?h);i#a(ZaEp_V4)rR|aznf)B$=8a&9zm$AU=z) z4!jfTNW|o@`gr{(E9G9@4;WpO-(D$Oha> zdesTBS!XfUUm^OgUX0!q^7GTnI$d>#|v$4 zGeuRh54<3X{O_m!RZgQ9I<*nSIaoel{m%%dkvGt+E=F5p{jL3GI|C`Sm}asxNKUKn zYG5&2hnRJOBhn&X7%x`!Dooj>kfumZ(IlSkgoOUgo^fryw&P;f8796{IXW_?F7Rub?C7i~=~ zF7=lmjnVW~5oSlouc%iuZM~@%X0Q?CG?uFVJ+{C7{sV2FZAKJvs*ez!^t4k(i;Kla z%fe$T`kB;@u(X+wJv8*D6xvk%dROYXD&chVj-BydU7FmtOnx~}^ZrV&f+gacti`Kt Jw)vWv{0q+iQW*dM literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_armorer_house_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_armorer_house_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..bd279bab99d4bb87452bcd1f2b38c3e1351daca1 GIT binary patch literal 2600 zcmb7Edt8!P8qU(uN%AtLVx>*CX{8}*qveg!%BCW1Ge$<)eQ<~;)@H5oUunQav_ zliXS=HN0dhVBW(D5zD-ySrQ`PWz^I_g*hL)ZO;6)`~A-EocFxveV=o_bDrnjcvWkK z>Qg?;4~!PD4WI4*06V}Rw1`whyuP5v0?3rv);ave7-V&4eFUf)MnU4D_vkp z@>4EtVg)!BvnB=@A9!JiK?hSE|C;9deG-oz3O?TDRMrcag|Xy=$88OQdd6%sWGzWE zJG?z4f3c4@(znph{T6w%@tz0jVTW$+v7p)p4D+Zv#W*f`S?8x0r{TV=vlxA;j=g!u z${;Qzm5%Pn=8fi^Am-8oI6=bIG(8vf8>`92@NjFR{TusSJ~p}JcTeeOaQFNus_ee8 zd*n*;bC82N`M@CE$sJ0xEA&E;Q`~&QqTC*ruV`kQYXz@+9v?IP*Ps%@>O!i==zTr; zwse9~Ym6z?YA-w*9Kh00a=Mio!|Nl{#f*_kZ{BwyUP@228O~_s4Xw5sk$IDPp_c`c z(fF?5)oUI0YYhuSxD7HV0hvSJ+o8c;=cBU0RMom`(#jWib9FD5FRBI0Ron{5i? z1V;=&=Hl+;9Z2izw!{W#qSibOpJ~;Ga>=q)8A96;0NNiE>1aZ`{x1dnOi>hSgW}JicdX{0Lk>zG|^c%bm+w_TWe(* z;b>u&u_UR`OHTql;F}lePK+a##*(!jrV#(yWiwh3w*bo{Tu&=@E!uz)ZK-I1SDDeW zN=Xj|QrtoCtKECR-z5-VR;J;kn>y?C;NCfA#D-5gBwF9@AVns8Bv8qqG ziadBSG_O7jDJVew4LMfu^EE%j=yvEezRGRC25+7V@RqAJ&kcyf_ML+9V_i+OkrBMx zgt{&4GS@^2uT?)|oPlvWUE4PZEKL3wvG*DPjAUqS-@jg zp+kXZtRPRNnzml*&^~yM8ekQ8T%ez^xB1Y5rJ?-56>xe`EYzAS)Ysb}tq+w+0n5Q7 zUFWGZml5&}M92dm)f&3uOJD{7tocYVi?E*!L#Qm#*KI02^e&VE!+LYMYF}6iq7g#z z(OO#TftuJww^p9c5>d&Z2;~rILm@u{YN;Hb(k9c&7MmBvvOcEnVHt#FeJByqL7-zJDg6A!2%_wq+qHrpL_ zGnt2jVIs-%WhMyqJOx5cGJ%d=H$&#+By>$B&j9r+jAk@pDV{CBd}|4<9lr{~LUw@r zoO`hlG`n(cg_S#!P_y0e6*@{c1I1D{l@gWspfbowQQV3b)9kK}mYpPzx zK#3580drThQ9Ea8iOCFlv_qHg`$bx9>44w-EY1IkFkZM9jbNxag}; z{?73ER|Y#xUD57w7*x{l1m`z9>{qFyz!e5+#g20am31w)Rfrp zZxuP7pk`)7*}>{j{x_JzrH5nZvG_n!3$G~(mep7qhPcG{n_P};`4Tg=4S6wqJy(bRyKaO&s^bIx>p0m zz99h{HNpI0oSHQL;;7(dT;^;hfczrY}zm47yVKy>~>vyiF&fmAkM`E|}^r&;(94o3}1?r=0yIE19 zuYMG1W%i6z!rZTm8+17qX^Wm&Qr^`ejP!r68{*Jve3;>Pc&59?)O$mJ+CKt+Ya`jt z<5|W3^m1e==EOaRJF^I`HA_j0;sL7L?S)WGEK^vO&&U`GFEV45Atq&;6v&H~p+wtQ zx%6Cp1rhU#)Lvk7G2!H76<^s|tJuqZ1>t;g}7w)8~`3>IUO zPrAXrqnYmYjEoyoJO~-8Ear>L4Z^)Nm1m>YhZocNPr3*w=}=zGuiBoHVOOK~^R;d< zD^uQ?mEvFn@2mSbGbYkktW125^a6qNcQ*UrdXi8mOQBzSvEdh8;){Ttk*?{(6{WYX zappBBtnq-YPWPnZ_hRP6kU!eO-ZqCsI+HS0U13vS+8;$sNSq3sM-4n4y-UQdSn)gU C(JJl$ literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_astrologist_house_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_astrologist_house_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..69f9096a291a798725ee08e12f07b15432169494 GIT binary patch literal 2846 zcmZuy3s}Z@lwc}g|Q&ZHH15;GaN2l#nr|0=S-^cg9|M&gB@BjO~Kg_Of z(8??64AD}z7JHCq8ekdbbglZ)LuMX1MW6QXQ{g@yy-*VNX^usuqK zovGnwm{4y@`zm|)3Lfmt>6qiLUE-!%zUkIg=St*Sz%$QkYjG%#TQNLBls~Vup8>VmJh)<|K zBJ4d#V8cSU_i@{z#do|mE6|VCyD$Efi?#867-qA-b=Cc6(57OG{LSN=N*s~hx)~)N z$Zp76YpG5xLzy^;H=44lKU*vCc5y5$FTp+Z-4edr7_7@p$E5jVo>L=4T;-Hiik^tO*?uQ` zs(0UVZI+-oWYxhXm@q^U4jRI#L3~9Wra3&y8P8cN9$zowUM(K)fsr1-NDWz3PPu8- z*Ih?$nKsxL97jdR)?}gY0E9X(;5GeH5l|galsEa)B_zkWvwckNc>E7Ba zEKp(hyNFm#Wto%?7G7qVyoXX{oGt?02ZadTJ`8gDan$t>gMEI3E2!ZE_*Np{%^>W? zzJm&Rx`iVglyYjh+k!c+|As8}_U&$TWmBdZigPCDlQTT-x37O~V-WmXr&FjVB>&bP zlgmWKz6I@!0d}7u+>ci)&jgwLcy?IuOwUT{UrzJD6A-V3GL7|h2zi4h#9Z^JCf)xV zn>s$|Ec12H5l#C}Y&Brx3y*`s!XQFEEf;<7ND%lI-beKQtmMBH)LsDM=8hfRZ#D+30^;(N@OKjVI%O_O8#_JK_$Vt;nLjMPN&OJqb3O%2Hwg z|B%b^mjodOPrCd8|D45Q?TlHHe7lZFX-nO5nW%!3zy94v$WPwC2h{lf8fUg0#5rb` zo1#ug64Qu0VluFOjW}u7tC`kv-m!;Zl&tGs zqyp1v5+RQq2O|zO-Ce983^f%eLex-V9t8U>N*<`3-^jFmds`u=ox=PfvH4d~^MzN$ zv{Mtydpq2c_goS_ zO0v_qT6~yYNU_ge4YXaWKWgU(Tm|pkq_V~%e%NE#CxF$hDG$U!o^x@)EF$)*9) z+Ss||Pl)kCL%7webs}f4ntSGJXR-$ZzND?NGBr!c20thp8~ku!pP59msiEg0e3 zohzxV*C3|gJAk$v-k}-iXdpa5RHOxDsm#A}FtH6sB7jk&Z=G;KSfuhGMCeS;*!?|>l^JE3pD zUIk$w6@Yx+L6agQ6hv&l{#Od;9bxo#Cj~j;k&?C_w{`;Gcni7Ajp&)F+=m;?Tg+X0 zDTrYg3GSMz6IV}uR@6MoWmDz7%J6V%khH*1f}^zU7=ukrH^lUYCr?fEFFhs7&0@q1 zL4bN>pr~WFLj27I`m21J>xFZaU`1FR z`cM)XzeV=@EKhNRcKYdLbFtpY;n9YjV$m++ZHrzTf6@C%sv5Ht&-PSq@0yNZUY$8X zUh)~6t){Qph%FPI#VQDX^Oa?1u@9=Tj*B%&RpSizo0d}XdD_a=c3Deh^cci4)VA-O z4`fo`*#UcUu=NEa9&g_$K9e9D8uhAMbl5Xh#cdoAk2i)L#QBsMCOqTXb%s`Q8WVDi zlTQDNI~Y>ib!r1`Ig(i2Qpz+WN&ObQe^fn9FvaIQ_c3PCTNp3qR-&FL9`lClzn@Sv z&ePPr5n8e9e~4ixcHWJgmL09=&J3kvhm%N>`NM5Rr9p+9pJKjXn#VSGRohhhV$^{b z)S=;)w8+XM&KIYb7miAcxT?{S<{#-#ZpSt=BFOFnRoC<9!Pr&NOsD_ zqq(zGY`)j=li za>UE(nVCe7YZU4B&umH*BI^rfJ2xc^oG<0vd;EzrPW{W@%P`85F;x@Os`&kCUxmo& TW3nQ60XrRMxxV+Tmezj&Ftl|O literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_big_house_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_big_house_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..75d9343080a2b42bd76c6ad3623755044f8077f6 GIT binary patch literal 3133 zcmZuy2~?8V9`DVxOof(~iHVvrS)-21sHM1N)KF>4JU47y3Qn5UXo_NHU?(RuHPjY& zBr4MsWyq{V&EbjBq$1%qrfAuSxS-|&iIVT4HK%#!o%5aF{qFbO`@jF~_q#@E->gz3 z@o=k_#I&P?ch9vbZV<}qVte8s>!JZc;XDlUegOM-&BGn*uS<)++4ir1fTg^}&P&&W zH#nw^l+;((9Pllxs5X>)G)#KLrESc%O2q~FsN}XVyw;A zc{}D-GrUHG==9)y_QmX+U37{Qv`52i4-AKab_0GS4$#-G|}jxLnim%n0XLphW8sy;(7 zi8&J}t@F&yJkhnbD)*|5|K1~0`yrjzwCgsbV(+e|HDSbu=JLw*|F+9<19mxXz%Iw_ zpLWaif!$9KOe&4|^+00{M{7f+et01mwKWJ)caj2-P)_rsFhnssJNM0T=I301fUA?( zwoYTR;}#@=qMwUZN_$1s<;L$XH#&}`ja4Y;ZG@bJYj<_)7T0zJGth}i?Kz!6J?O9bJoR4>or5myjrZ= z`*QR`hp^>D>oe;JC#)}oibU~mQ@oLbDeOgU{Ls$luiG3F*WqR8^lCsJ@@!$z^2oz3 zXyIkMkn$}CQQ1^`9J7vxRrsXGdNuiInj&+Hlh_jvp<|Y5%VmGhM4Sf&300oOQu8h# z{5Q3SHAY9RM#+2(MpT`TFqWnC3>E5gm z+$Siuv*BYRO{_MkMvhArv{j%v`nT>211rChT2ROX>u)oPRQLN207p*eex#a)=KCuX zilOGLD{z)5%YP(g3oPm~+;a#-Icip+V{qmmy092dg_gy}ka?JjyNwAo5c^wP;p3htDoq_0WX;*~(9I-^(o z84Zbf&ciI30OebOJ2s{irEdIBbr*hAnO_#*N)rzX10Zv(Z$Jh<>HuDMG^kmj25*f- z&<2Uc+a-fwGw=^Ub6%ZDF?fW3j0+?$Ts3dfh{=F^wE>SX8Fv$mDHmYzW}z}+vT{ef zG2kAgKKVyrn0!P{KH(u?JqOUkn?$Ca@YAFy9f6e1#Z8kOZunCfA3dJ|7nY%@p9MqJ ze@7BH@i7C3={9YkfkeYC1W^B3hnX611*9>Q9yN5;Icp#KcX0@xy`sK`7Hc0H_4^96 z_q8WRB1yEO$>O{{q#u!dVPAm@oQ6L&ag?4VK-enow;dXW=7Y|^2Wnw7ja%m2O{zUt z3&^X+bkLXJA;QqzZs%RI-HMt6t@j1k=!ZjB2zaW?1Slu-AduUDv_)-H)wcPal+f>| z2WNegbU}UY(FQ&9j6p4iu%QMz948C>Xe;W^90RO2VdrCbs=` z1?Uz9e5@}3(B|@re1uQFjCbX-jS#k9XHMcyt=%!uB!uh(SD4-<;Ffv`Aj2KJE4W<| zT_j!nyyf%hp!A_yXfwDDCUMLKFjvbhFr9xG@Y421rY`Q3sWG?`JoX2tF!Fw_vnN$> z)jycac#j?rczNT~u=0(`O}oHVGu~2Wz->7!XXVFs3aKYN;l)G1%lS;T z4dZxr3{W)*N*z(MI-*T~{JnPZ&$Kj?aTbM>;!5mQVVL=1dBi|}$HD4I!`Fiun|etJ zq_Yvp4S~)PaeI4J;``!F{Ln-(wS_T8Y|4rBSU3mm?`|5B5eLTiSd}kM$oQ&r7wZfS zGh~vI2*=8wA|g{+{p7`W^2*4fQJjM#XbIBe5*M)-N$aSt5D+Tg{~5 zg8ZcH>hEn=x*!nRj!!+?xMqbzU>t|H0OF_iBv&8dLvxTAa;lqAbo2rJpRMR8e1$j=x z#r%ahcoovNmI!^_zC@c`NE;k9;!g+-y_OQ6z2Zp*dY@tIj1t=`K9YY>*6KwP#p3zl z0nZ7~IJ=@uvQ#dc=iktt5zeU=T46U8OX(ikzdYufi04REwclqWujY8+AM&Ge;_jNh zf80Z}yf8jl(D+n>g%`-gs@-pL|N>Z%= literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_butcher_shop_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_butcher_shop_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..ab875a708385f8d36fde93c7a9f344b793e464c8 GIT binary patch literal 4117 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_carpenter_house_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_carpenter_house_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..0edd9130c8d0b1fd43a6e023cffbc18a98e40dea GIT binary patch literal 3596 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_glazier_house_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_glazier_house_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..ed5f23a6db8c21804b4afb16a748b177e4abc0e0 GIT binary patch literal 3415 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 Kp8D&C4gUg{1-C^2 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_icer_house_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_icer_house_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..344b8303c18b5b683c31cf153e245da3c0e6fb6c GIT binary patch literal 3204 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 J^NifG<-gglPlo^i literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_large_farm_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_large_farm_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..eead0ff77b622f67d6f3b22e1dd16341b265302c GIT binary patch literal 2380 zcmaJ>e^8QV9JkxG?Q~{;tT2DXx!rkfc?gM8)a1_2b!;@RnmQ+nXhxcnJ0($mZFYh; zGuv?)g~aMeZ>zA5E(=nQFua>09qgv&fHRl$rcx#XBH-Q^6=lBd?)~F=-sk&#etp01 zi){Wdtf{-NIBcoKtf$A?;=i0tpz)>QG50cY=K1%H1wYAEDCMi1==_q4n9T5h_R{N9 zdW41fpT!>fBU zZthl{2cds%_PhNPbtdfG(rvMGmN}Ve;63XgWNEQ!6w2%uDZ52=ntPi~h{5YcZJQP0 zCvsk%eP~Z%X=R4gWVXC+9A6oD3dZr^!wEdij~Qs7@QIAIO=!<1<)Q(uPPVv1Xs40N zA0%PP+vSSS$+YYTL&_=%V;nDj%t&jTs)!iY$ZVW^HyPJxV9ZGj^KC>|N}|~ysv(pZ zedks-f4FQ@3WF70si|4fqP=AeOTQOy|=et)7QUO04~NVCyQ^P^+9!AC{U8i4SQ zWKpIj>Fl_ztlo+NIQ=qLywFlhTHQ#jn~bBFjS%!TyndOYBv9kMdI7=@?w4uRW3tx_ zk)vmeuy>ehbm2*!LIKe_g$7vh>ed^fY%A0YKC~o4IMhhAJ(g8djStZPnPM>{Qyk5J z1+8efj3DKs3p9?+id~{o&8>#Z+hU64vCh+?DSk6<{gI46mvL|~iH#zaHxVN-za=E5 z_R097Keq~FjQCVGmmnW}8!5b6N~&+e0C_qYZHHnPTMw=H1=kW1%>q#kve?LJBD&UZ zA{R3bZUihos?7xN_{b22gea&iyn)+l@Js#1a>6EN5Go&^=JbmFP-->6w-w#=nisY z9duRO`*fZB)tag!C)W%HDZzgUTy(I?W1HmQgsw)rmi92L z1bEw(aKgq9!@f013n39NZ-8C|AJmo;xRD{92dIV_*jQ zsf2G#ZpXKBoPHA7IWfVk_aM)Z&!>11}s7ya>W0?~^TcEI4vp^2QVlHPNUDizdEA`_ n(@bZ-ErMPBDcLeIW965*ZA?6&=lZC>dx7xQ@g%;bG%W02M0=PW literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_library_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_library_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..caa5998b43587f43a569f0f9a47fbc32b2d45937 GIT binary patch literal 7190 zcmb7J3tW>&wy#*g3j+OBg&?optEG#w5LDie+-~pcjT>RBD}p?d_!S}$KnMf_1VmKo z62e+4MtQX>MUj^g4ew_(QIe2W1OkCXL_#rv0Fm%WfIA;ntL?U0e)FAgGIM6m%$YO) zbIylN_J;S?{#FG=;uy<*@?ZZ(RhGqcH;fk!DbK6cuhZs_|G{tkqYdwOMWVgR&>2K_ zT$*j$R?~Z*+^LHcGKmlNZ}{N!*WcWDcJ!)R;(R1&E(XD3KUq?=&8zSTjx?`HDrB+4 z)8pJc3ny!`W(b~@#U zF&;wXMOEs-lOZOCV#+^o)@F>4M^2iaZDg0O6?;R>4NuJ0O}K}Q_wqRJGyajp$kWMt zX1rEf?H_Hn?R{%WIDFj>bK|XLLQO}jc44mU#6N6apC>!5pVY>(PWkRpf&|af<@6n$ zoVhK&e1Lc@Y-;{v)$Dz~f%vi+N)pD_4~IeJIbHBgy@DjXX`fuk%_Xr}5I z&!!yev4%)psnhP?ddte)@6jp#ZnD4;24NG|%lVw}+o^f+P9k?|G={6ufk=f#gtQ)t z%(ZAdgy44)yC)U$<{h z$9;)HKCodtHNnj4+b*up(`KMoe%35QXQ1iP2K0{YT-=us@_`fMDFPF}(bior&oUGJ zYt7LgYcDt2?De?wcr%Rjow+_oT+lN992vI%Jp_H2PD~#s!6*F ztn^XO88me-;~E~z>zuJS6bEi$)$Sk?LPXt-H;WG7J(1;R@8vB$LY8CS%iER8c%(Xu zc1K}6P~r|QIPFVfk_aM(vS#!-vU;_pS{+6TPHCA(@R(dVSC)NΝ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 a-qzM=jh#3#i(;?psQ&U~G;Ytj_x>OA9e2$D literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_masons_house_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_masons_house_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..d8cf96cb986b0876a0894d83445aea282e135da7 GIT binary patch literal 2294 zcmZ`&3sjQX7OnyJ&N}rDkR&770jF=4%}CMIq(`r=?<} zSsFf?X(}s3(Nyq(7N$)CQYJQ$T6)Ej5KSH$qW8x;J(g?Twf6e_k#+hk$vr=%S+qEeO@wrjxN5{Jm=>igEUE^80+oa16O0cW0`k~2=r(8@#VUl;B z00t7FB_AP30y7c)1z7W|PH6Hsr`RA-(Y4t*Bq5w0YUb~NK;wUFKeVFGy*TTYUGAvS z{2dWtcoyV7#x|Yf1|mlMtg5I2qS-Xg`{l&ZuR0%_<`!8%yY(q$=DGE$?MpvI8PYgz zY9IQS5@wx`Epv+;piaJsBXsnm&wObTZJ`z@`KgE#9C5@OxD`b}Z~w20Igs7*d2tuxAc|f4Tc9Pwfoy%DQ&Ta{Q7{*}+QS5{Fe< zWqP737aw1+c|vB_a^GotfDJgpPZGRtFCjKg>BMAu?nrolDDAmXLAX5P|lvhm<#%$$Nx&N48?-Ob2_Hb>UvIsntgr1i%g97hN1-(e)ey90M4WhMPjKhyb=?=)flC$>LrC1=ek; zOR2TrrqiU*fvh|eI(6G4`EUNG#NV^JI2s6Dvt4c{JX1CACa6&vfC*x%Pt2y3$ftjx z-v;4W6}86WD~gj4EZ4gFuR*w=$u(B|)FMK9d(FI9oklQ}RrPIt?bHQCaxg@pipH4; zKAhcPn@%uzT?F>d+y5JAhGqfGi`8aY@OtAfud9(lcfrsJsMhwfvFW7C4ggIoCy4vq z1+G@qk_e1h!oFWuL#553;xTG49-|_mGB_K2>cvs%7j4yA*NWQ z>o&}+O0NdM9Ea+Bzs3X?RB0S9=BzbT>J%zAo(YvfXf03%0ncZ^F-q!meWdlLR8@i%Q#3kjRg6Dpia%6%lkW|URvK*u+ZCSEtL-Lh6Eqw{V42OxByrFs!| zqXVtgi*P8te4ixPoO0*)a=(z+>g*ffU1yleS9h8QSdAj()7cnx7Hbk7YZkH(3dE91MOrBuVcGx3!=1qq?t)X+5|^dF`m-TK(E zOu{LbuCXD;*K?zmy&-#jiQFr+fuv>3Gbn`r-3QNOO$v)hY zdmLV#sCxCVq9QjF<5HX?F2tz%#mlRsv;yD^)i3Wx-pqNHjN=k z3>2lJ_K&>Q?Ow4`9WVfY!x3uL!zt>xzfH%>5~`g~b_5>zBS6^H3Gr=g<6T)R9f{S^aG0JWfx&pu)7i+=R~f26l)dW|AEzAeKh`hon-$Ugl?U`U zRdAh%aCco;k7j}Ubbn6)IG}cNukP1p;?gkEAMtaO1lUbjQyCBRp@Bc&;ZZJ_OI}|B z`@Q=cBv&2wcYg3nc-gDNjYGKsZT21m(!<%Bdz5n}*&(;Gr`&(kj8Q5Vr0?{C9WVRZ Q258ITJNGy^9ay&PztruPO8@`> literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_medium_house_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_medium_house_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..4bb753abab23468ef707020b82f77f3a6c02ab37 GIT binary patch literal 4400 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_medium_house_2.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_medium_house_2.nbt new file mode 100644 index 0000000000000000000000000000000000000000..0054aeced35c32735aa0ff6163375bb8eea64bbe GIT binary patch literal 3380 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_meeting_point_4.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_meeting_point_4.nbt new file mode 100644 index 0000000000000000000000000000000000000000..e675b7db893f4bf8e2d0c5503865bfe03c20cec3 GIT binary patch literal 3936 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 SHalzPkk>kmOTpOyjK zS~6BFYDL`gTcqpB`YuL#XZ4<@<+zEJb-uLX$*gqf;dl5kgM_Pp!a7b26#J0oQKH3f43_$(N%>NZI#xvkK{un+bd> zcc-iApfN%mlnQm&k!)CZw&0$GrbBCRPYh7S=BQ#?HUy4hp*AWpS7V4MwPY2xLU9E1 z*cOb#O=J7!;d5#YHp~}u+fl8KGnupqywr#@Wlo;k$7+R0Siza; zdwD9atiRx3pCCal182BEJdd+SZtc4EvqUBrWCA|4dCAscS5TXrDh1a=b5s!JrbpVD zNw9MYU4j}hQD*@xZi#@|P}0m2%sx1O7lX6My?;RBo&d=!Q4^~W6gqpkf0XXLY76eV zD=C-u0YXgC)zn?M!SXc0I1|qrHE%v?W(}n+4ZPCW3qRVY6OF84}!6_U7;s=KQTfRbB`}>hEBc{TpxwCA*xOBG48r8F_#7u zojA-N_L0L9U_>vq2<=F|ucQU*-+@2o!;X)E_`vMQ>^nl6CPQ58Pp9UtnG2SrGK3?; zHK+&4H8ZP+Rc5GeeSU5?J@m##r`b6ebJ?rPu8yu;D-!LFTI^4uY}PACFQWGw-1?lX z4pq{U143e8om^ZvnrP#m34GfJ!N>r zE&up7f2?NMo(U*7NdeTy;p`fDzo*HAvB}Q8<=LeaR;10HzNNH$yChKod)aaLMOlgRXjUBOH-{>{UVG z$c9l;H@aR96wO@-i{QcS`>-`ZS`S9(=p%qfUoIFhXxO)zzikp)y{sF+J!^q-C8CU8 zo*Yk9Y=Ue5A{ZEQfO&4Aq~8Oy+F@E?fr|r%c781UvLC;k47CC9h_jt<)l7!wGb9`{ z25z6P-hJKX9Qi)g#t1l5@a61M6-;y=nHx{199L<7Q^wnH&j{Q7ly(wQV!VU;!tOv4oL+tM#S6k_sCg z*NY<$t13NE(l06gIbeVsg%9*4Z0(f!9rA8Zq~axHvV`jAjxQOd(_L!`+i!cP+ae_r zd}RV}^GJ`4eVqq~A?fOI?saG!5{1*Mwv2REgjG8n$2*?<3sP`6cNU80;8c&>kZ%+2?RsN#lX!kdvi z81v-2Ej_;6arx}AAx~{aO>NC=-E2WuP-1cM4snsTzV_4jF3mx6Y1xBOGiN-q#Ahr* z>$?jV-DcP4$5XT@B8`H@3i@e=W~Z0R_i~9O<=34f?W)YP?1=Mt&rX^4i1BlkmHo7| zs{4{upFS%)-qedtj^S;M<5x&`{XOzoY|!5(W}soWsG?B0D09{b%#T`ImIH;#Pft(;=U>Ve)j&B z5_urs+(q4!!XCY1P6?|O{K~QSssFS$y(Da$E^zb3ZXnxdSO;7da8}+t06|L5A zIGHJ5Pmn9aH8E6oiwnDqXP!H6MamKm@1|Da&=| zX{luLfpsMHUZ-$oBJSeeA(|@k(O~iY4OLj5mNUmkt-TLeeo1HY%dxShmgFc};ZMwp z`Z090`e3h4^96d^RHW$}U}k?mJJ6)mk$0#DT6D($il5O2kLNTfu1=X;b3Eq4OI+ca z;BvS}AP?amok))M3eOPdMY!3Pkhk+6{oEsI>T|WYA{Z!`EpFxPP)0rD{?j#nzgMt@ z{D@_gl6K*MNboH+w$3q`JUU&C>E7qoDeRxZ^IEMK(Y%nB+zhV2Yv~P>*1XZbTE8JY Z&--IcB@8Oi{jObkEqix3D|FGK{{q7>hiU)- literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_miner_house_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_miner_house_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..d31ae9e5468566a21a3be90e6e3a267e69b43dcc GIT binary patch literal 3144 zcmZuydpOj27q7Q=rNk;_Dq~&`#g;HhGib(cv!x=JTI-U*no!CP8TZEYY%z*PHFD21 z2;0=yT(V{wtuS&Q8oVa-x(*{`7?aEJet*(#yZb)Rc|L!f%kTF+=X}mNi1-a_cDvVl zuUT%tf0n4{ye-B)3?E>6;;Q?r>lxv=ofmrV41W>+?U4;k9peqIW}#i|-+J05dkHTY zePL6?f>61CSt4t;?EdW=u)3m46mql2*gK0-(jyF3wa*|IKV4{{taAxVn+ejWkL*H` z&x92RE;lXqWMjA!G+gSk*g%i<>~;K%@u?#nGAB>!_&(LNE?OGgq*&Q^!fQ*ddsgHD zCHgK|V_)wpQi ze0o@e5MjWVIwTA+VGTHBGS%Bq&6En^U(Kb%5}hFRN6ydKNaCt>^6HNs_(FdP$y`aIsOHD!1i;&0%b`vv#Vq}?q7Cm5$q zeViaSZZqP4E+W(cYA7=KGa=dQjF;oMFq==p(Y(#}{?563ItJ(5CvZZOwyEO1&olBb z&Uu{qKKMZ8xi3vSsn_Z@`@UFySz)1sAANl264Nlu)k1Xd3rh)Rbb>c&swhbJUY!PV)f@=GN__G$kFM)3PF_cp6P{`-qu`?+_ z@OelxRhj9N3%5H3tm;O1;}TZv^>}Pw1mC?wwwo_C2@z&m_}jtF@@eU3teZgL8y$m( z3(SLsndbh@a5FJ2J=nUbJZHGuF}SawJW%M4_BYZp)1;-#EACkv9nH6lXvr3v+W!t&{L9F!HyO!4VxQJ^dP?V^~p*JpSApB?Mb9Fgih)zNsU#PIwN+``+P*cLCU1!HD zu;X3^^xL7xq!Y)vuzI~*yo%43wk-3Kc=LC2bmiE~o91*^!RE@i?P&HT9GL$_b=({k z0{vOB(pHrrM4Lx~aMAl`X2N&DHvnAJ;ftyo)bVEqT%vx1)gKQkv_mG{ISpRylly`9 z6~fkpsvV84)QbGjx;}WMPfb4+r$#wg>2U01C5}g|l|p|1sY2MBP&wEvFN5XV?7290 z_$je2r{8QFPP~7LV~-^DZn>Bkg|oddbF5!r6f0G`pa~uY(q6=gWYPP9-Sld)1A=&<}6II>rZ zvysYfW3osid*PgFhvwYguW;scK=+o6S5?1Gr(gD63nnwu^(uH8#{7$LgVgRA3KZ@feq8ln8Q*U3O3RS-J2^kjY3u zF`Ag1k}oUrbZ#hidl~JsVQfAGFURYRH&7j0L}Aw=@NbRAn$$8v4@Y-&e7!bJ2i>RR`(baJr?tX zH?u@kgLbsyxT355!NaKiTSFQ4sA+cD5IOt-d0paQ(Fb`krxIL?NDx zoz+D4*GFSbY96@>$({%`&t>nC8&(1Hd;EJJOi~VTq*aZz6pu1iByTRmVcl6p@#xEU zV~PeW2F7;tWISt^js7~bz@T8I)9u-A9%1MiKV4(q#W&NA4}SScG&DD=@MMYB8Eao< zQU;XmRp$?$li#v9U6aEuNcTB>GSqCwA6_KOlTkGT*zvdbi@2xGZeulxuk}rj@78E* zGCL@!LO1lNo$3(>EaWatr4gN3lUIhV3FDrMsVdgwqZ&ce`20Ib-QKq^^u{~OWYrtb z;iKMoVy={5>QwT~3oG@oIy5zuE#bU&l9dG4I&+sJov2sJ_Fa6QvNhwsfv6oRIems0 z%Q{PQZs9ZkY^T7wE_Nt;S66jo2H8AGl#1B?lQTW!&QE2FQy1tJcnqcaiB#NDKKU%F zIIA<@ZFV=&uNCEyMwGOf=3y=*S1E=`ityoD&FQcMQ&XY+N6AxJVtBH&?)lr-|Dt#v zdZAW6a7*Ul7Ri0N%t~Vf6~nlGw4Sf+L?NbnqDMrLj{(s+Kk;JJ-CIqani)^t&xFbn zQWC$8?A{d>)AOEp6q9xJ(AmI)q@wfl`N)A*-+<~Koyx4m3JJ@2ETrttcDp6`(kA8W Lq4;dlnl=9eWZzsD literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_farm_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_farm_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..c307dbf280cacd26d7244da50721b6463c88a6b2 GIT binary patch literal 1465 zcmb2|=3oGW|Gl@*=iNz>X#IG;K7A5LBUjSlK4}eWm1}DRwYN>2UBjDaTb8n$_eJ$yaw|J8T<*R8u`)}OuqTcu~a zefY{+Q=jtu>941B@rSRhnjy2%Q$8jC9G=5WLm~M!}mZ=uO?G% z*MZ7YV6^H$B@n#=qge+kQ_j72Ej+m6d=~S3)yMNfCBLsZwIe-r8K1;=o6|dl;8?`uCq_0x4dDRWT?yVaCC2IBW*8o7WUB09IpATNf7#Vwr;666}n` zJgkIG!v-E~j=pl=7Blp4g@au94-J>v+VrZ%-bg5Km+>}iHQ_sa4#J; z!sg_F{pOj_5dQF^+9m-O+#C3?c_oJlTln9`5~MXZKUjr6UR^qSmU*!Ky3EVGe-F=i zzkQ|L?pQzjx4#VUpS}C~>-O;XzaH+Bm(TmWEE9f&T9KoeDCQ_>38-UzyCET z;s5#c)0MY!@p`Z4eBPCF`RwbuH*L55<^Mc>x#s)bKi|q;-Mhzk`LNm4zqP;KeK~9X z_wXg#+~D11pPl30`hT7(I%(e3`)|%Z+bI2M*R$8oov%y&KDV)b_VWY(k#Ey4|Glig z@`w4`|KIx$Uyc7^DJ=W_@Xhm*-&4=T`psTJfa&^2GJKE6qzD z|NZ=Umg4^N&RTVra$nxQT(JD_)N{x4Yl?rlT|a-`Kjdxx<)7*E=RbRYXYHSZ_viQR zm|gb!S37@w*_E><-+xzMS^L*y+1cQ@Yq!h$j~mw%ZvJlm{@M4uxBpIkF0xR%`)B$; N_Cil~*N5f|3;@`B?}-2a literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..f1e3c2c7bb452bd6e3e7b3c7212758f7b365802a GIT binary patch literal 1816 zcmYLI3pm^78ux4~32E!n<5CCJZfd0wm!Rr0qI234#%fKsB0`fWj{9A)N@CNR_Dm5p ziOXXsWu#VwdahX)`R(j4SN>q zQ%f_`f)Jee?;zrZuo&f>tN73U{Oo(J>CGXPl2O0GOBZC!kmc3ziR<ro;j9IHOb zIi6$JK>wE&v@a?b+$j+mdQxTrma(uICF}Z!^OJ9D%3!t8kY8uYXvc+T_(pc(ugUlD zm^3P>+v0N*DrqE_PqYc%aVFXzc8u&$2(4!%_ZRSFYBH!o;fQ=jhn<;ZFXv?*M}OqH z5m5#!iRKQO?3QNUB!-N~1q7LRm2jPj<)6HAM0P%7#}$vrNWnQFvV8xI&)*;ENuFhQ zNIdIKxow7Hm<@(YZB)$=Y0snLVpwk7=%X8CSlk!z?v`%xbLvyCwtNdoTmZ)q5bpjh z3Pi~JP)35a7ICAHhXiQ?lK+0}_iE=rjd`fJSRP^MRm+_s0=kffSg;i)R8v1>sJnT1 z-TO>RtB2#|_G20P+8jCggy^&ciK8l1UuuW}4- z3q-dZ%W!LG0$U+ong?)O~(SoK$0W27|3G`*vo~|NkuFY z3NZCefI$XWp;?#`>I8_e=Krt?)_>F#>=%pdEIA1xRC`<1% z#mTMfF6??Gfo}{*gd?<90ClD3nC^HYab)H9Kxpu?@l)eMZU;he@ZV#G{SW}Cr-cH$ zy?f=bI9y{d(cjgCmr^VDep+8sDk=eN@pmH4-CW_rP)Kdf(W_><6Uc)-W3L6=@j$Nw z4JRPA-?jR(>vO;NPGHmR-h-{TC7XUer<^ucB2NTOR>>2=luxzMVcKX5(km^sXLvo& zBNzCxA#{#71*2a)^-;xHg+VMBN8WdIE?Sh*%3ufzzO?4s3?Qvjos;GS+>!MT@MNw0 z9lTY42jEGdD|Q*aR+y4)3H}7q|LufdF1ElGQTwX@b=L>Z>0pcP4e}7?8Rb3o9z=h! zeY^aOKGqEPqr@4LCRUzjr~mn#2|L|C2MU@z$5xO-o&lUs#0LZLZXMq4L^siiE&d5S80ef)1@4q+B15OVOg0kxKc{7lwB{d)ErDL^QUL)_ZSdx zPNPumj69a2|F?|GTBGMX;~TL7CXHr5w7}h-RIs%^>H&KOtX~S$tA%Qo+WB1ZfwrZH zWtTu`#qi%~=SU+HDVP$$lG5?*=qX7(1{GsaWKub}q7Il(5m|e=UTiiBh2#}B{Ga-a z`=SPzFY%+y zb90)R$&0_ef9X=?mEA}44;TwfnTo&5tZSo>^oxitVt&ASlvo@wX zg>0>p6HlrW>tCQs$Cms!%ta@U(lHife1!iM^Yy;>V4)96L7T;`&dnFWz@KEWswuVC zLxmihY^+*TNa7w^$y!C-s!ZrI{ekffvC6YpVr>1F`juL?v@$o!L(Lmm5Wy2|$MIPv z-wZpP@o-S!(`QyvF3&l@bSD@C-vU7@my@ z{%c`pDgf@WFH&RY9}=o}f6kt6Io{s4mu; zzb$KAuO@7H_NjLF-^`FS*U-LeNjW$B+OXSM_?eN>~cqS{F=Yy-5udZsJyFVF;%> zJLVidp6^)gF}H5M*{X_>M+oi?p{3;}*MvW0w+HDbWNr~w=NT!6bEI&5(S4SVv$1Z| J2WNG3{tHB2v?l-n literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_2.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_2.nbt new file mode 100644 index 0000000000000000000000000000000000000000..6d0fe9f92fecb9bd4b754af114a90006abb52e3e GIT binary patch literal 1685 zcmZ9L4OG%sAIEDu8XnmM+haOi4j5?77n+tnzQjbE>(MP=hHr_8lww*A_W)BtpC*!J z!D;q{(G)P-)M}kcQuu-kYp8|%>nYJXVxf|uhzV*&%Ja8c=WO@f^S!_OJNMpm@Avn) z-ZhYQubRF6teQU_1G^c%^0{MXXU7dn0#7M@7DIv`sXUH3iDeR3kA=ziEKqHa<`=p9el-`V&8 zcg6F3N{?=9a_S|oD@g*?fUlOJaMq%7j>lnn)#KHnMxo~GIzo)*7!VP$9j<~w&-qNo z#RhA}sdyFxC;FxBk*n`M9l+cAnJg|f6AD_ zzxDjtnTFDwl?eXE>1`jVU<&BTTds0HxC-9>Ehm?pV5c@#By^|D{|nn(0lkCcPKo3V zY4+RWH;h&KG$ao-6zl#?a`ZjtOZ*OF%F$3|Q@@D|9uM^uW zI>{s_;813zII_B{K-r0|-CLnyByrY199I~h z>w>^NEg6v7`GEL=PV5%5vdI_#6(+v_+|^O-y@BOaY2d%B2$rO86mEYlBQW86k`Y)b zRHAY%^^?T9Tgx`&%Q(5QRK{Bw(z2^xU{PQ<@`^o>0z`2-Qh)|U`@9ZYdN>_^`x|L` z_L>{qz(wM!ffdEwWr;^=%iLQ9YDl`xh_|Rl7?z zy`IE<|0eiLHg+u=S9dCqoTT9F&L4z;CmPXzKT*^0A0`=C&M7zj`{g=FObt9V^1Jd$xZsth*in%luWbU144B=F$@yc7}a3D#!K672sL`rX{E#CM+3 zIGbZ{^jC)}#Uno~3b0g}SO;@dyG;=LKfNv<$pLTrv#!X^J$Ns44lIv z(nBf@?#5^`;1$jGg$gO4YsFNT+}}Z3T?WnJe%t<>AVK`PoGWJ?J_dm*yrcN}!v=W^8{QF6_+m*^bkD#}zAy1u zjcp=*VK39Q-uG^`Tb__xdX8QEI`JcwMvz(*gF&)&%_V=-2F?;N^sX{v)ebh7VpfgX z8ci2wAJks1%vd5CE#oaAqEQ=rEM>*#zC8Ryi=t-7Ou|%G{*yDKEqvIif&fGyJ~J`0 zDt9#S?p)ZNk39~~nLb~l4NM=Qyts_2p*6SKhox-eL9{b$$#yb*!Rx;bNcw(XWmdDSFa++R&UG`h*xOV+9P zlJ&M(Z4q1d{CM6<^v|3mjuG#vPh$d#TI%dn$JRO~p?1k<{n#X-<&dMp!|x)w-*4Yn zd*rfaVNqYbQ#Yh|`e`wVU}?y@KyM!tO|vq)>was+m3`F9sB3%H_sb&}Z_knDP7&)# Y#nU}Wm0!`91TQ>E>!g;^kag?+4|1nhEC2ui literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_3.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_3.nbt new file mode 100644 index 0000000000000000000000000000000000000000..5a4cba303db08cc19891e9726f7b3adfc9c7b230 GIT binary patch literal 1734 zcmY+BeN@tC6vuxkIi0D!tU@!iNLnvT6xOn)un}5jnQy5zC1R4O$-opv5^7C6Wir!J z$k&Bsl9HL0Vrs{hxxjaw!6Y*$q(f+gFQGEb?QDDg_&oRA`#tx2?!8WzEP)Tt_~^Pn z#SypS=hOyaTkLfV8+_s6#;k0b&!3l(BcIq>R?5U`{gcNHlyqKd1Or!jZtO2&$VLLvv$W2D_d6*KB! zUe$(~Bc)U59|DpfLn^y1Co>}vxbtoR79b)SXZ9sPIJ^Q9iN@!(lSxlW5c6mf{MHMA zvAl!>c!E^~cqn$MShrG2pdfO3C4PsINDrxGluRMk4%{dX5zHw2xhcvF_HOW#>XrxuOe#LJPO@LOa|lP( z!u58bc`U}bq6-av=U?tIfF=}#QTG2&ujel6=V2!Out0GaLkateYe6GB=ULF~o%28@ ztOM0sKEq*lT94ja1fS(QtZ?x*&jdltAl3+%7Dv|F%tMG}Ez#_a>}nv01X$b?9NqJ&UsYRvdkRatIr)@nP1>4}i|r|< zNVFJbj~)E8LlT(4J0Y;orMcw@OS4o5+@3oWZHAB)E>epw;wDC5=KU`=n=Y{tV+UgF zC}}gJ`a0Vpdls_abL`2+{d$7841I;3sKSwr7hakRAY^0ol32n!+064^nlrp*Bl!V?)hVAMoKCmR(pj)LK=&grZelL1v8ncBwnE2bx3T z@e1f9!St~*(_Y@_PS_`N)eY|2HF9*+@b;?*WdT=QNwlW?_SutgM0XN0!xV<01G6@%!&No~-2ybuydDw6b5i^?T8zp?#5_ z(4ENvm9DKZmG6_>_r6imKBH-H3769(eJX9ao$#IeF_-Sq)i&8@KiOj#SH;;b#I1Zx zfwi@=%;p@>hqGV1!p8&&wN5^)U7l$vH#^eQ@{Va83&HbMDMG&Awh-8hXYroTNr~x| z6O@5UakziscTBIy`q#ZLaar`**m#RIopY1P@8r+A4Ru3s+on7__q*jX)H1@Csh;|Z z(7NK|tUd0XKio@9)foDN#j~Ba`=$uCH;)c-fBY#W9nQGe>sTcDSXQUbkr;wq9_VII z{*g8NM{9J&n$EGWAI}FH;$BT-xwDTZ8jK2!Ber|+<*YzH72lY~9K1h2@=Ecxb(T1} zj$2Q!U7wz)yqS~q}*m!bs`x*UfhSJ|8Ajp2i;%mB-(ac^67-YMUmqs6~x2QC!hvgT6U2 zLwP%49>okjz1Qo-$HJtV`iY7g#xQYR@9}em_)gd3Z=e0DIF0`NUVsuU?ta9Je0%Ep R_#8!V=eKrXQ>+I7`~^$@U3>rl literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_4.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_4.nbt new file mode 100644 index 0000000000000000000000000000000000000000..9c77466eb2984f62ad20011dfc5f4a70281607c5 GIT binary patch literal 1773 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 Qo!AHCW9Mr0%s`;O0P4=AX8-^I literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_6.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_6.nbt new file mode 100644 index 0000000000000000000000000000000000000000..1f4039a98339789e304fafab0464491d4d652b53 GIT binary patch literal 2311 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_7.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_small_house_7.nbt new file mode 100644 index 0000000000000000000000000000000000000000..9092fc5c276e6b95114f7c96a1efb75d9646ee8e GIT binary patch literal 1939 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_tannery_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_tannery_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..ae0e3f4d70832dfec373c0f4cdce2cf3104fee1f GIT binary patch literal 1108 zcmb2|=3tm1bu5YD|Jqvz^KQFIxISFy;kBuE(cPsEWtELOyIxzpUa&f^b)rd_MDP-a zzML)kmzTfUm(t_Sx#`P%&j4n(1y6)eDqHVTdr?;q#1gDB z$S=Wc(NhOpLrd-+@WV8mOa zu-!dZ^^&)q1~IEAUVt&-qNz?W=KuStYsw^71C5%mzU6ep`-gD7Q#h|DZ>`U6DwDjm zp66C-#(tv=kZo(e0WEGb>jR2BUIAvLbG|j&Qg{Vq$%SKqyLobDw)(G6Zd%y87^u}E zYdV|()D6>v!l<2hLC;y*9byWI@%T8|fas4w|%jxyNH68Z9*bs+mo;Bvd^DW_y58thp zGksmgAG;mjf3M=4ea`;a{p-h9-3vRLCpzoK&op7S;*8t3YB_#i_*wP))V$TZzU}_7 zvHs)l!^iE)6pz%sl#^S1?E32K!vCwRUNQ8|u6T3k)y}nTm(Q(Q`}^sa^YN==-^WkO zldIj%eR0n`?cLAxs>GWkWol%Tcpk66tkd3hKKZ%-^2fhcNykn7ZNKZAz^;$m3)qBf zRYz_8m-$uV z*aUgITEjiF{(rxD+RCQ=R_gxP>Q~#dBXj?3yjPZ6{PW7{=}|}a^Bp{UJ-6p=oz=75 z+S4yzulp<8ekQs4!DG%pHB1}dn#JFnv*PWlht{W$XT6B(S^wZwh1H+g`4=BXzk4{j Z|KIrwUmqLaIc)#VUdpq~`l%`d0{{i|SV8~* literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_temple_3.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_temple_3.nbt new file mode 100644 index 0000000000000000000000000000000000000000..0a504ddd48a5e8e6342b24a7201082cc07c9fae3 GIT binary patch literal 3469 zcmZuy3tZCI9&c;8+E8j%qE;*|)V55>S(r*q#c3oK+j`7Lpr%&p8j^{Hceg8K%*wE( z^A&26J#?Ao6d&{Y%2Ih6B`Gy6AA}f^WC-5#N846+e9q^b-~ar+=lA~oK(ZIkGyP`j z^LE6`A6Tb4F-X}Xge}Ms*;VCxC8~<8ZoWG&PUIduFs^jlV@o=vo%iJmr_-F*n22Fq(c% z(kpUOLw{(Ue8Y$1iXG?s;&gP89hR}aqWFO>R^iz|Iqgr(YK3vE32`o|O_^q-1-0Tu zssVS3o$9T1^rSV+ zhnKj%c1mZgD+-L1mZrN`?c|}SmvC%on3EmmB`#Uw{n6`rmqK7So+cEZIK!>VMb-UG z5?%-#{$=020e6y;JvxZb`|o&7)|HJ_W~BwKl6ra~7T+6)QeazU2u5@mjh&sci zWmqfiHs1F=aGlLcig2ksiV0UmwDnpaD%iIL$dPTn%CV;XP!t#^b@~at9yLn1v2B#+ z`nvQd_X|7cM2`CbD_-Olgb%xK&Yz&dZY0`BS_f7XzRY*1>z~M_(E=a16`mZ55F zG|{1wctdw2ue6Fl!$4v?(%n0Z9FfU$VhFlwdZcU;DU$>NLx=CUQi{X#zN#KOHX3n(8%;7 zg4Uy5NMm&i*zH)Khvgr@TZLG1utUL~lP#HM5=5Gq5q-+aF+mpq*7-~I{JeR=tTtj_&~Hy4u-w1AV`36B^n z%Nvnsk;hU?Ky`VeflzN5RQxuHXwh$`erXFKxQeen2TTmmFc7aT1Qt2(AE1ua z=iUIICIpWQk63x{WzY4Vj9Jzz{KnQ4Lz7=YllJh|pvj^sdu9c4>T|Fq9eWkfy=G*)QfJm_=K-U*{~A|hp;G{kI|w%r?}7k zdRue5dx%kpyR5;pZ?=INcODzF1`3iN0lGdncsA<}5}mo)pASBYfjeJ`otc<5F*52A z=n{0b=^l7tVxipQPjPeoLBY;#L+0pA-wt4?ZwC^cfulH+z6kX+bk&cwu;tvbym?N>rqiWLKW_iak@a zZtC-A(jmbC#NBIyx4>3xD9vvQT7DT@g3I*v*Gp`)1dA+y-vWd!s`zOy99!O9D zNRX}Gqapt^2(A|!Y^zo^Xfjy1d~%@YbO+4)Vf^%S-HNvktBswdtgygAcg^>vQl~iT zGX#|3`T)&dSR_uIZw+jog!JkmdkkOky$U`7RzExo9D*_kF(HQl))^GVEK5nUiO? z>}eF5{d*KT<}q}=0Q6Qx7+UlFI@vON_|P<0XSm~y&R~69RFEnn9@KJd48?d{sR)cB zja>bf=l8yxaunG>@g;*wbJrn1sOU%YBWf(x#VKf)4#*<&^zg z|IpQJ(;fH(#bxR#sGYP%#GjD6^|LJodSlqr)!h&17tU$E#`#P0AK*?Kx?)zFYQrqT z4sHug*@LiFi2y{wm(BVHUJ4$Zv}w*`ENo9MYQt6)hSx_Rne;dfD8*>#W)M8OH~R=;kB`t}Tq+e1g24h3biv?pLKqW}$#$AwU1m=psk}AtV`Fj|{iY`_EK$$kk61JYt0q&D<)JWElB7y+%uyaS zOm-y}{wi{<2w-i$wa@q8q;FXI_+j2QPOtN)tD=&+IcE8<#owJ)r4W^I_%v!6p6% z{S$p-SzK+zG*a$CxFh0*!U;5a8NWeoF<&Q%teCzRmn>IV%v>})KCTz^cs6DQMX&y_{%v2p zT7etq2^v?J&9pXIa6au|?l#{z9PvBn4{{4DhOg*eXprVQq;#{tnRZ3 zW)tu&Nx5}1UL5lK^q7QmlduQWjB6LW&V&H7pHFQh5q55aH2Q z3?NX!LNyQ?)Kd^Ps1iLAW}jh?2v>60`LCT+Hq@V-ptEkdsXKi2!$kWCxgGzGl*|d|DzdAq zcfhsU(P`EhL>u!f*%SAAO!mhi)-`&2TBeWwqME#8nf79_#wjTvpNl!QDP7JIN9W1e zJNlM?AlFI`P?MZA)oNMgj!A_pCD`ZLa^6*!q%j|fdca=5AZO;dqk@t-A4x-CvS8R? z+x$^ft+`35JDs$oa$*-)d&wCpZ7&N3vY}e%Y!)tC2l<4EDH2ASGL9hL2J@SX>2n;VfPC@T=Hk7?_x^<&;VA)zk`>4K^GxeW^m^2l8@<~o9b8NEsyost|iz$WF3SvJ+GWw z3kzOLh$&mIk1xxxEdn;|&uuQT(Pxbt4;wf7m0JV7>uZ6@OF_jV#5Q+3e$XZ;+3ttn z^_gMDjXhif5CwriIERSV2_`%tyUbpjG8j;4h>+?4q*{Iod@l$~@ZbFhsCGlD2uPLC z3U((sWv4H`l!D3*b2|iYwF8Te3WifHM#1 zf;C5lpUqvQ&D{cC{WMn4I|fKG)eY1^A^L_Py%QkeRMAhSIp5 z@&HA4YXhlMr{oJ%Sn^3EgQ-n2LpgbvkhNeVD_^7P2r4TDm4%tTgh4&#d}Iwxquu@H zZL|{^4=P&8g}6_6e~sIhu&AuRK}_Rb#)H2`1#)1s+pm8E>NO+PDi}D=dognN$ZvYE zfX%3^58!c(7EC4YTQjXIh!^C{uY##o5u69z7L(ZpQAkR|VM>D^)?v}HX{SJabXFHR z+K(?MAr?<|d@E zm!jvD5-;eSAVaI%er>j77mx#;XS3vb2?MGJ@g;DXSEzGP;PqWr$FIUmkJG&@1i>31 zKI?7T9~OAsCD0VkoQ-8Q`sLT%(IUk3jjpD5l9?tbpW*WG`+oU*!48O8ex+AR`dhS8hJ2B3Hc%bEXws79!2nex&4uYfn%8dxGw;-VTeoI#Q_^~r- zkn#kiycUS&_uMlANuRkf@(d|BxlM49op`RG(GO$efwx5DmZGu^A9=xBQ-_y#BXY4W zQP@dPGnNR0e$u{XKa44N_^UK_;{L=4p%Fn9InVumr(kAaDru(|edrLl95Xk_TB2?u z=npB?wnEpgMB9eB?nLK?9%4;w`2E+i1fK(l>_UagfWU#c=h=C{nG?49Wa^hUKX$|N zg-8ZBg_no3RDza~odEc<^&a0?zMvzhWRK`s>q?W^i=m)}3=yFj2-k&gB_%TzH(i{S9A zT_4^$kSznx-79%q22M@U;DPa(bSx^He;(A?g|BymQZT3h`E4DjnYTR#Qta^TE@OL_ zwMQATz)$GJHix(NNFCk!mF!{bM{(exGl{JfDEd4t6KLp#v$+=>kV|JCClT zMQx%*;fg|65>9qFU1nQ`fP8MU1^G;e^6B!Z;>Ez?zv9<0PCnn+<}_tgGTDu=U~sY2 zTyVrBhXxy+5_eR(c9k2-S4WD*oz;Oz^6XYplI^#}p)7JBOZDJ1fy|fgf|0J$IJcWl zdk3<1S^4HOn8%@3AF_dDOXK7=oem3R*;)BI?(6Q}8q+5A-zH6_g&4VgS&UQLj^^o< zV2io=xLj=!lHu~2(3}5RQCnJlncCiCuxKofOPTzBAv~GAV8V}k=x!BDCCne^>=aBy z==JZkZ|>1t8E_mDD0Bgv%|HO>h@_^DEZEi>8fbC@i}Y5&f>tngth|4C%L?Sf6)4Zu z&jU(o_vS%-9u&yhXXUH9#8I~_4QDxbcX@4pi7REq(8*eP2kj-c%C?M(wspM%5`5#4 zYCITBtbIzt9yeaNo)XD8hfSd=g5LQ%vklxoA+2pM^oHH{Oc4Z^Jqr7CSYB&nczx)n z%izWo!gjBwxLbkmsY!$UK=2LKZ-#F6%P{6TMyIh&Z4={u17!KulnRR2KY8Tit5%nB&oIpyxlV#FZI3Z z=kYsiD+@re%WlD5!nMn~qx6fiS0FdW7s+&yceuFs{q=&rm<`cZLQC>E*jC0WG1!rr zZY{N;$8l5WGT2ftw53_F#iXvYph^nt!4ZTY_AjTk&K?8xGqVVBpc4;}qNNaG$v4yy z@0kVM4UwT5zYD@Z?gO)l!(g2RZaWzA@K9J(Xz(60Yx`84o&~A2nZ*1l(BBRMe+2|!H0JPmJ@-wi(g!cq zL6Ai%WI;ai*6NPcr@}zT3>Fepm)0)%8cD3lTZ;y!we!mnhAJs#9SR6GW9_x}{}e zN=hf8zPLhhksujNqS&bd{= zdHksT)AQ@F7=!8X8cARD0)N(*k1ZFva`xOFR|mDM?+|P1<@l(|;YDi1G@^}EoCtuDV@cd7{z6eqUltN z$(Mk literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_weaponsmith_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/houses/swamp_weaponsmith_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..adf345807e276df98223a382c5301458d03aa6a3 GIT binary patch literal 3397 zcmbtUd05lO7G<-Pf?xqj1j}MAmG=PwSso&bnt~ewMI{1Zi!~`IU<8Z_OF$|hVN(QT zH(~*UxDfW8O0Y^uLqujtwb_;p1limuafz4L^o|0vz&US&NCe0RIWc5kr(PseaGu}GcQF< z-t_Dl{Bd?F<`t?R*))`odm)SI|7rM4XqR-Vb@=bq0j%DBQGyOy)u&w&t?W}IsjFl} zlQTJFbjl~!EozrZaFVno3HvGZq!PQ`0O(o1x{`S`i@!zjKkf>m7^vL8h20*EvE$!? zv-1WOTKp*xLGd4X3fsr0?1apc>U`|QtPM~KanXU8`?w|hXrcy&;Nuuku>HDU)Z-(_ z?iRwdbXrzzTcQ-*qNS!!(2`9O18L`Tcc)P%v^WJ??6lk@oiCmW)q6QEBhNXc*HtMv4q2z9d zuQjR!LpOQ1CHMsMLev(naFM5{q9BZEdmUXn-C{wDCY$KQAq}L0(61c7X~y!^d&O@~{zG!ek>oUH1C6mTQt|H6Ml)z1G)W61~+&R}!u6 zGc9pc=K9VS`gZ52EgP<5qq1b6nQ@iFR;nhE6W zq=vqgx6MkaV4t@>;I4d_nXD~-7&Kxagyu{B=F|HWSZ7{e`b!Eio9rZ%I5o|1%v5Rg zfYEwtAgYTPaWqZ}GwExf}M} zN22o=KVDM(>g;VOMdu*g_!!(J`7+s(dQY%hZtNHbrvlzDXhY78hk$zs>EIxtzwO;Q zWd&A6#V9S8@ILY)IXi>F>feLZi}iP(J`6TqXF@4{k4X-r(qN)81upWxfBE-ZjvV%i z2k{M?;ARGR9gyG&pwR6yfhsBb)k+mCzPS#iAPzn}c^7mWFtQO*fQ4xfgjITr+*G3W z-A0q!taP>$bd_P z=sE+@O`?I}^5m|?0oQ87%46n2bYH)?1hrH-2da`Mhi8(Ml|Jd5hK$?bAVuZrWl2YpdxKCYO>t6@=a(U&-oCU}s=(hKzAfAut%$l6MCOG}250 z8d3%W+_zhW1U z0;34mUcyKcPCY?vJIxGGU2AJX7;;U)Q~kIv7Q5t2d{~Roln2Uq&vhq>&<~DjF z1I3WCJR0N(Ou^9x<|iobTmJ;_a&dSAc%@wYGiL>s06bMf{yv~Qp{anW*AC1Rx&H^T znF_>avc+Q?h_X-)NO2zip^uP9X<~_S+Au()4YaVe)sg6iO>7X+EZ7cKiF-i?(M2$4 zHUn48ER#O&dg#L1fZ2I6;{UEFg46Q*#pyzvg+Z?n{tU{+?E<8G3IQ?D3fEAw|6356Vh=(!lR&7o z`g)xB@c%P3QSjG;XB+@GP#EA6N|*?WXa zw<+awk5o1cob-leba0DA;bGpxWwxVLIdy^6)QNr}>bL=C>2h=UR$+N<&57Q@DmPZW zmZA9|(F>6|YzpK0585=BWju!&W>*Eg%MS`F4PCjZ@xXm(sEWz2zhd4oHdfR`zuH>qaI-HyLrKXni9J)8UXBre1%YyPFnkt^4$@vIS>NTgX#T1xlQqD2cens(V#DDuB>7sfyj z-7gKyb1L%c^?u%QW~QEx5ByBA5A; z%~`m!l<)U*<^nrdC?VS^4gO0UOUq^>Wj3b4F@I}2w;*I@_Uh^Jj7*CQT19ykor`hI zg%!_v0ezwS)pFOgsLwf0P`gr0NeWSoeu`V!!G#LkVYpS_W&h#9_JUjfzb+Wo7JT{ijGE_5uSya+J-z-4XEY5r^yscmzH5u8@zR9TagPYMpsM=#a?C12ByG_&Yk4zV GLgGIuR<#`f literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/corner_01.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/corner_01.nbt new file mode 100644 index 0000000000000000000000000000000000000000..9bcb5003751b3d4ce5cd14555b4d58454f8c8ba3 GIT binary patch literal 1188 zcmb2|=3sDDIG)7t|L(2xd5^**96oYC>sLH^#v^p8*WE3(jW^5hmR=3reuA@H!oRck z&1sicr@w?|tIhFLn=F&(9xKS{+Blzg{`<~CrD=*fhnB4W-{;Elu%O!b&aw9Q-2unc zuCDC+oAINvVDszT>d)c(c@jf(oHk}xoBjF|+LAecmB``0V&`WDwn?VXP&({mbjIZH z8KX0QCQ9y2IK{L1gu&^a>%|ij^^DJiwpC6|jO&(cH0t@!OfJG$YxH?O<2R*v$b)fnZY%-W48|6*p-}fSH1D5 zMQ+Yr!)@;*qRV^cnnR=_(A1aRI{>mZT`JD4#1c-+&RDd;%z${e*EQjwpY-l+2XAcU zJ+>~_pe(m}W43fp?CpeSlE4svdGpPkCTK`S%Jsrx0wIkOYEV5fGQF^nJg190!oZ3ql9AR`2=2)m};#kGrY=K23s$4NQni-#eWnfE9Fguab-RD&M(*Y*e zSMpru&%L`OpzLi~bZmaIq~5)&zFTAOUVfkdTJ2uR)!koSFI)Yq?(56P7O68#uIBRO z%gOD{3(m@KXD`d$&1--3_KncnU;ie{zfQbA`^UEZtMkh9uYX+j_LRZ8>;2pR2ju^H zwT@?VNa^eu`|f?6ys|5uOM3pbp+N@srWAonZ~e)-8j&;m?yY;BwzH zTgRq6dMI9Owr9(Ie*OQi68DGRWqtSW-NSdKcb8sW=k>l_dE1}G+2tFpYyOp3_~nN4 z>o4>wz1>o@KiV|cT%+vcRfAoB|LA?o+=)0JHXRx&QzG literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/corner_02.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/corner_02.nbt new file mode 100644 index 0000000000000000000000000000000000000000..4835c9b98425c9ae64dd1026eb08ac06363051ea GIT binary patch literal 1115 zcmb2|=3qFda6F0O|Iu5%+0x-64G$OdzrHNrn8OvjwO--(y4`xQrP{}?_1dhoQBGSY z^kV+Y__Zy6Z{r9Q|f~RME`x>7qB>4RJ?90hD|MvB`W);nS zeWl;ee*T>|W%uv>y}4e=?Q*IQU+#I=^YN2+yeOU;Y!mm<)L6^lF_W>T!DXi6z=Sl` zw73K@*0jikFxIr#1U>FESGA3$46d_2b34PK@;PCRe9zbBjdcds_>cWM7-28*nmze1 zlHjvd2V%q}UZ?*_A)pYU+h)JN=#0QdN%0w;jWfk&bTb)i8+>NktYL7PX|tBWYo_8z zi1|AOjd`b8*)6TLx+C_l zpPjY8a*Dmp72jR2SAG9E-LCxj?wU83o+U@mzq4hfT+p7M;vO$cj=x-(`~72al}GH> z`*wEUH{N@{I=1S1{VF-W_j0NGI|}#K*0%G1UANv&H)-1Hyy>5&oBw~4vUvIN*ZX@u z)|YOQk3aBsrJ4S9oInlL_D7ZuGxzxA^a@M%TE1^2h(K>)umob@TNV zb#-I=kl#~^t?GT|%wzlY*5>8y>9ccR>*e!>?&F`gr>b((s@<2nH~-q3&A-z6|MEL8 zRWo=0`tm4jXWr}xlica=&5s}cd^CQJ!}|HlSDml>sd8<9*v?*urfE271{p&U;mw@D*$GYIr&Wj0J@d=m3IFbP{*Xo|!hNh?%+(koiFGUDErb8A=P``003DNy}w}y!Fi~KCEfT zc4Ni2#8~Nv46-yDa%WoJmTfawTvQO%PYE5zkI-bPv|LN_sdAHp}93Eb@SN+NVVwr<^ZoID6WPUbl`>nk%g^e?9MuHn>+MEP6 z&a_zxX`E`_2A^3rdl;N%DV~;aPWX&#(@qg%233jI?8$!<*2wpKZQfXCaE<@iuY(cx zn1YgWz4#R%bj?5iKA01SF$h%<3y--IV>wt?dXWiE*P$D`j09uLOqT!Ui8E+sG4?T7 z%wp_kFqy^J*I+ZtWYrm!O_3@yQkyKj4W4s8Q#u&ab&{$5RzAV7f;d;s;z}Knp6foa zaNnPLnPcDNd*0eh+^#p+_CF!#|G^vo;86l%{$)@8%@0>Itjf*VNGxMfyS@W5H@em*2axy2G`h*-8v8+)B{J%5uS zXaC$)V(Rr=F*W(si*lU9!f)r+?d^?>*r$K0X7{e;;@e#%ub2MY_ct~8%3S&BKXZA) z`Q!JkyR~iC+kG2Xugd*lc<-3i{k(Vkzps3eS0#MkwEXAWcX!p+t+wJmoK#%(_xPh_ zC*N-}$o>3FZQJ?$zlUyrdTDWZ`QtO6atnixot>PyuYO1Qw9o}Yc^-hStO_%3peX0_kTc21t zV;@lW{iHkpx86SeIOXQzlg|>jo!-7N_wmE$FE+p9{99JB>^Z;r>29kJPv6U}|Fk;x zUfqkhIY-}@Zted1Fr0JO^d+mh-yJ=Bdy$s&w)<;Ot$HW2y~3<9&VF~d@9tag|2=+s wbASI|(d*_{|7EY6e{|3Lm;Hx6UEg!|e@AKY4kexceE%8tCnZ~NHDq7_0QvKfm;e9( literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/crossroad_02.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/crossroad_02.nbt new file mode 100644 index 0000000000000000000000000000000000000000..f2d8e611e68507a2c8fb619cec0bfe9dac848f1e GIT binary patch literal 1166 zcmb2|=3uy}bv%jT|J_@s^KQFII6S;KcTx?ffXItYFSt|gmtJ=bzst47G;oI3B8R@D z1^So6byJ@o=}VUPn;j~8fFr5aIs1?N`)!0L)__r5=pt)8<_i5x!MHT{gjVIJc%8i#v~&!`;s zF+TIAQ*uvI7mx9IgYKU1o6i`COFlC?9FsaD+mJb+ZDXCmHU4A24o28Zyk<}So3KW{ z=W8>D;QYjd6@Lk;f@s}$XSorw8PXEj%*nY4Yj}IMHf}UCxW;zu)`1A1V6u!v#C{}! z-P>_k4m8%7lV|IFkS44qAqg&PT=-2IpGio5+k7A({=RkEgv2(%o!6ZMSGgtqMz3ubA%m5)7a&;u-8P9keRMhK#-0*Cc{*Mt@8?H?PI{X2N$ zCwua9`JTD;Fb*s#KJyKjF=v=8a&^=>q}3dyyguSFk)*GT2au6!K;HxMTUb zk-?QZoY4<fSY9!M3ZvUjFL8 zx=iO;H@B;vFDv_B{Pm5bfmQch z(fQ@yzPz-zTRqpdw#@fjQu=lMD;96hya~ul_WJn6K5+9p-oIs4%cu8?Yp+)O@N#?q z{J3!6DA`kA7XE&wQlF>!b5-@cEyf9?4DNc-;8`?uv=pRP~U`rqMO9VIxezP+BoB3>YPy$%Bd0NpEI ACIA2c literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/crossroad_03.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/crossroad_03.nbt new file mode 100644 index 0000000000000000000000000000000000000000..da5b52182ccd2a5eaf51b1c66f74e449392f8a5e GIT binary patch literal 1209 zcmb2|=3uy~eLRWb|J_@s^KQFII6S;KcUlc+fC$G0-`nCR_Pt)$y>6FiM)o3uiJpxz zM;+pqt&h@r)fsx+YL*#e*Rh7g8^1hWKbH|qcK$4&cWB4zy8guihyHzb{cm}velLgX zn&7FcZt(tkUv0kku1Wd(U6mZoCtW3SXZJPR)%6@&;+@*{u;55>+JwY5$+Rhn$0XAx zB`%XpD@$Qh_nDZeXLQEq@lPG2GpTJmPZ?a7eCBqBVM^i}`JS)M8|w_N@gMtjFv4Eq zHGA^k1PsA+iHIwo@hL#kWp{6RO4%8O!#u`kG!FL|pHVsNV~k-(Zo-=0!i0l<=UX?L z8C+vKcI!Zdv_v*@GEkhiXKN#p;O^~U=NNP9yn1=l5Wh2Ft}y1+c~zNQE#31r*I?WB zgE#K6K{?p9pV!&2;(0F-!2mR0q|wzjA0vEV7B?dtF5bv$osaGrBp+6DBf|3xb9dD} z9DzThvMn-Y#%Z47sfp{1&-Bi4O$hXlPsa#QERhCuR1BNg*Ds~Va2Smi+2=#?8~vC6 z*f)EL+y4`C{x@#~bFLEz45VcBT#eW;{`|e}Sz^fjWlBEx%tGfnT{N5RTe-W_HDb@Y zS4Ep`F66&oZFO(!)7M`v@6z3!_w(Uedsm6;PiuMf<>dF~24%hb&A!cdGw1!|zi&*N zef8nS@1gbYN^7p#PWgU2e09b3Ev^z_s~g247+_~~vX^gGptEZ25?!NNw-KBNCr@#Adtx8)bcVxzl*X}c4E9|Z}y7_Q| z`sCJv3ijh4wF|z4`k4L8-t@To{SR;7Z+8O?c4uu~_3Eq9wUxTBcb}MGe_}%ZtXT2$ z=QH*{n`ytC%|CB@e9oQ!C5kiO{BX1Usin5N^4U@Iw`X&r^OC#@|LaeS{NGY{)Bf`6 zY-nhFVt0cKvHJ2Nw4VvVlNHFZhs$iB1^ zFT<Ffu`(ag7NEOz;a6j$on@OziOqt~j69ag5K|F+OL<_?#URdzf&9 zvtxYDj`2A=#^>x9pY!2+j9`4uj`2A=#^>yqQ|AmKx#Sd*trC)9ij^oO6)DWuLSmKo zvk8Sa(OKyJk3nbAO?5Urjj?5>4OYZV-DR6tp|{TT z?pO?k2Dkli+%AOXyg}aB;biYxHKe->+>S(PVXt#!p(ITAWH@h|Lxqb5yy>Y_nm7N* dH>&+BKZ5xyGJcRYT?)*<;RkOi%bctR001-5x03(> literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/crossroad_05.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/crossroad_05.nbt new file mode 100644 index 0000000000000000000000000000000000000000..bc2eb90b2b3ceb7d2218a4b5519cad29b6c59bd9 GIT binary patch literal 414 zcmb2|=3scEdpwEZ|J|u)^9~vCG~AV6(4gjfD|LG8H>Nw~_bP8?hNm2Gi11u>q+!eS zo2&IijrY%OKhoVM6nzC1R6 zp}4w#>aO* zv*76SI~%kmbAQaw%m;Sht9si)iDUmX?+o#?mBXnc^u|1zmVyuOC-gz|X!9Na#F3HcQb_&hQ^prb&^4slOQ&i7o2$=0y z!xn8MGGW%q#J1L%tan5%qHxi8%`sbIxX*r?VkU%vqS2voJAdVPdnI z{GN~G4`u^tvttFz2df(f<*YHdGo)a9ryDfIfL_$Pp}oU9zOEd4Up#MP1zCeN!N=p> zon^LlxY1f`;0x8{(3HcyM;&@sbmb3Nw^t?Yty7Tba$NtQD~|^SD@Iolzi$1;gpE@r z(^NScT{TorLR}tvdv@KPJ4eN%)#XgC01&a{`WneKkp5qi4J9+bKhy6kJ&R;AiR0aq zomH~&K3twfvTSA=SAoe}G{j8(A9@~yZhO-Y$7ZM<$mLJR%cXW)w8-~iaW>zaZOQcy z31LaB)8UZ;S=$Cw*A|U+fsz)l5=86s19>jG_CL$j^Jl-K-rMdy^*Q0+^i$a0Amev( SzOR7oPxu9$*?+i?2><}^MeVQv literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/straight_01.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/straight_01.nbt new file mode 100644 index 0000000000000000000000000000000000000000..934723b406a96e759cccd58299f592be8598f393 GIT binary patch literal 1136 zcmb2|=3q$DJD$Yw|L(2RdAHpp93EbrJE?|KK;*@y7u+fLORu|z-{sn38aTsii9?^z z0{zS3x~VUZ^gWjG-MyMuqHS${M*lzNs)TI8LpD9TU#+*`Qk1!W|I7QskB?VsB+XqF zay0Kk{k`2U?{3@qe{*z;fyBAP8TU(cetk0Inyfcfv+Z)%^fL;Fd5q6!9PTkbqjK2C z_>9hB5y`Z9iDHszGZWVtohfbGdD38e659fv%%8#((VB!3cYa*X)>r zhc^>Y0MeD4u%=i4JJ3uZgSTgE<3=-sYi!4E9f**Y$Yw?oEXxO5lU`$n#Y!xC3^{q; zY(h8e&AldUPBONgz5FlFzGODZv>AzRl4)}i)g;qqC8kL(J7MsdXY&bz(>%pf6W1A^ z@on2FYRt{^brUvIFoR>hlEIbJxWfk}(4I9etovUsbL^bGg!TV~H-DNpeFv)Mu# zThOBz4U44HnDK!Y;D&)5-5ERg1^@0d3s&6?H-xs9FKS1Ir`z*$BVnwmZn{|-;h5m_lM@Y zr0Bfs%a7ZI{@rT+G4}h;J8$o=eO!B4EHPs3{B{2$a(8_y7F@P6$K0^C`epiVseK>b z@cjS2`_X^<&EZ?M{jOgQ-?{pFsKWBQ8{cMy<*oLWy?);8>*L2;cVCfvcX?s&YJcCY zb&2t|9flj%&rgk4zxj9e+_}?iZr}Wvf0=*%>&i`=FRs3I^Ro4y9p;;BclK%?eH?G9 z_Lu+5?T_kv>-I!MZf(@xU;F3NuB^*h@yq!CPTu@uZ|=8^w)+$|*L%&{)>ZnSchxe! zqlx=h&E6Is^Jup0k6-OaS0Dbjf8G08hnId`yy4GQpQrL0-}ZSQ`t<$-zwt~q!CEZ_ F1^`2ARGI() literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/straight_02.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/straight_02.nbt new file mode 100644 index 0000000000000000000000000000000000000000..c0ed9d923d82c87210f1b67032e62a6055fe6dec GIT binary patch literal 1090 zcmb2|=3wa6JD$Yw|L(2RU60))93Fm(-S*qaV0Po0N#ZkVuSK@6*<|{vtT$SCYs!*O zJWo)YgqUmr{>FRlLXzMnJED7yXT#cw;r4V7A z*9QWQ_u>prm@06<=P)_Tnqv!e6jk8p+04sRdWV?!0!Bk9@gcj8nP?Xj3lkq)w}}md z&#Csa4YJ<_35vdhP1M&fiKo_94EJ@8><)eSB5t_t>9`fA1`RS2Eu(_D*fq z>Vs!ze==+{k8hA@*FM*u8{IztQSzHpRsT!g1&3aLs<`jH{q+9h-~Bh~AKG#&KJH<1 z>5J3nT_culvOe?>2x)}~Ch zKcyyrD_H*c_l*3{SId^4zrFWQ)j9UfR?|v-H0S+ijp5n;?e))Z_xHt>$CqZ7>s)qz z@Z{_3lbc?(`R9C&zAl$s{!jGI2g|LorgxlXuG+@wdb#XnV!72moquV@`}XDg|4;j? jHLdp3)6Et6~HZ-rRc1ivZ9q|>x6}3MpvBLqE3JW4ZAb2ih~7@e*9@^crxBc zC^1b?t=Ay3<)rc%n?oXk%X$n#TUH)S5yWC3%(N5A5DQ>@R9pM;*y<{H5#~Bf&D}No_oEhWOLyL1WR_Vi=ruXMd>`+!4ZZibs`v(1U^(f4;mE?=ndYy%F91brmnqf_4$`vL7r9ewer|xyB%w#b2i(_ z?EdJRZ2qoh&(_=j{wN&3bmq^mFFe=ljBnk(bf#I>OwY#Vr~G8q{o615Uw9MgTXsw5 zZ~WxFyP3tU@2{!d9l6VlXIrc#?@zh5J+I0ZS68`J&33Po^7>a{v-!Dw-nUK1&ct5uZ`GNv_xAI@PxtT4Eq~j-;Z5!iBddzC@(aHbcO`$FzVP+k z4gbrtclqCau-tpY!Sc15xAQo{Psi5B{7I0AvoG6S9~p09%@#Lr)=_ooH{s?zzeUqN QUjD<>`Bn1jNofWK0Nxd8{{R30 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/straight_04.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/straight_04.nbt new file mode 100644 index 0000000000000000000000000000000000000000..2e93bd6106af502f71de92ae49f6be8cf5eaa1c1 GIT binary patch literal 639 zcmb2|=3wB^Kc2+!|L%>meYXrGS|94yt2AhZzFHO({+9R5zSrwkuiNFy##15n=tNoC zl6yY+TRSf>rnSxcxuh&qMPH%c_m7&+A*U3*)Drt#MWxFTeaiC3YxH{GPVzo?%x4*Y z%C@|}&)j2r^2>@ftKhe0jPk%3#mIwg zmZdC@-XZ1x_I1gx_j<4MVm(&hThjdC!R*tHj}JxUeANAMukEFL|HjGuc{Z$*=e%F? zvc{wR>V^60`)}~fm;d|0{Bw48(xc1Vk#&YAYql%;8K?a8u48uL-1O$IAOiycSNtUS literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/straight_05.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/streets/straight_05.nbt new file mode 100644 index 0000000000000000000000000000000000000000..6f4b4768dd98f7238f1fb4e0b68a79f5519cbd27 GIT binary patch literal 1335 zcmb2|=3wyGKc2+!|LN_$dAGwP8Xo%BUz`7bQi;Zem3tfC%(WJuYgHnc@!BO#Yci9k zszd&=?NOZHvQK;d{={&0io}D27nUaWwd?mt#JQYFzB8?UX`qYD`uBX-KNRepbzCPj z_U6=;vNHSZcWj=WTl+hGcZb9u!~Tow@+`l6G41laEgIX^F8n`@O)_mpqMKyeoJ2Lr zXF7*{jL+yCK4W}F>9CIRnaZ}ECk&=bKGQlJ(=FLx)MMJV@tDCiiDOcSBa$Vud6Ih* z*BD|G-1u-YaS9>2=hfYxJL6#e497O0TLRl8(`R_LS)Mky%wv4o;4{zW69%VwisvQj z8J$UO+j+|1deX6jkAC+O?H11sKk9J06y5o6bRuf@6YX|0Ua|Z6*nM2fSw@sQ%|x$NEV&54L~h+FhX^5k@qVsbS}K~hRmyoZvc znl!V0i8p)3^j_Vhkh>+DXY5&jdR2GkMqTsJsPjob*RAP#`^vGdK0fT_HqCpb_S<7O z?|=KvH>!5U>1OHhqqSYH#TAwwmOZ|E*S%x@FYQc^mi_&3tG#HquG!1n-y3(_-&;H3 ztxnt1Utjp%pZ1NenR7HU++_BZ+PcsFYSK1w%jfqz3^%>`@|;_I)+YIR2hZ-iv+i`( zX0OoeB3E;hPROU8*j;sh*+0p*$7_t{od|I<5X^Mu1?96r8&ztQ(i3;)U>^W6A`+Uv35Yj$l_`>4uOYIE(3 z#FBkJ@(b5TSkH9!Q9LfLbw#Uh3hT%Gb$`?O9?v!~;7pYHRr=BWO{>7S`TAw^@7{fW zx$wlJU7E9$uFbu>zC5pDr`Gzq_3DZx|D@XQEn8#x;;_3u&nvb3q#f3eikD4J*u}YQ zdcrTxvZo=D&WHBn!TgYJp=m(T)eZ(ITgpIIqHdTpD|#O`Z}sD4S7$mU4~8PQ|fwz1CO+If|NAo+cLi8<%nHrh%b z`<5eddo!2=l;c14>)?%2gz{qsKx5Y>gPrQfTxe6{hZ?&WW}p}d+-k!xm82z{D0HGW-^*s}HArTe1pT)gSKu`fLI->#pPks;RiNl|)qrX_~TXX-p`RwVZD?-B}Ux=MP{P@1u_0oTK z+=tcHuS@>?^3wdD$)(n34_e&4QW$qfzb^J^>E0cG#W(zKUb!PN^^eB#S+_$L*M!Eb zfBZ?_xwd?N+1-%atJ9*79^Jhu!sz;UcK?04VW*R7_jbHqcItZgM8Wzgg7>G~wz}q? zzGZpk1KAe_XYW0h-~M0snC*X#BR32l`x`x;Yh(9Bz1#l7wc3i4Z|v_0pWJaXv*h%S z$Cstb%c35i^G}W`d)#iXD{1quuzI;^-v8*H-}Cn!HM;q*{P^MH)k;6xEUbI;B+F}} z9{c%a-?^FDYyCgtPN78Zr_h{PJL+q;RA=sg7ys|(-(8h~to#1Fc|3oyj#=gBwCx|B zgofrNZT)Y*vuwYAYUrCdr+Xq#tx|5EO^OY(J}NYyXYuj=d&hT0=9tGi+Qd{+E~MH>{j$bL8)xo8K*LRbO4%*{Qwjhw_tiJMVs6X3zFF&@V>vl}Ip8 z?6v*x?!MTPC3b&z=Kn{}k35~d?DB%w^Y8HPeiB^pTd>_H&49W2B=0hV84C~g@TBpm z8Go6$(9Y6fzsbVy3^Xw{RPxrnFw|R+a3aeV>2erCHeNi1p7F`mJ3r?%4f@ zq1z^ZTWm#DZ^=yN_?Au8{MPki{G0x4-gGfSy}4c zEiY^K-Hq}8m|$p8S0lRX%lE^l*WLVg`Dt_gt4}*;*M2)$&z-wn`eEAsJNZ-0??}f> HGB5xDsUV`^ literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/swamp_lamp_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/swamp_lamp_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..7867cd28fbdb73d09a7ae61db6b3ca68011c7f84 GIT binary patch literal 525 zcmV+o0`mPIiwFP!00000|HYQUj+-zPMIQzdAgbEgb=e>24|Lsi)m6912@d0lVG z==5j$t2Lbjh{qm#7bJv?ukU&90&yCE8VbYzup9ucXE|MKsF*~KoEeyo8a8{O4ky#t z!Pgq{L7D4<%$~(`&7m|%kzH1-HS@93WC2Z=WSFC2@sd*dF z+}7McF85eL`J}i+sI(G-?ggu$ko3&p)0s1Gu zXrcO^b@R>AsAqg!hEnO(uo&5FFf)VUxp*&d`$%QaWe)}F=f(74F%?wWWzyfw|5bPB zB|XYZg?FMm&0mVS6aBXN+XtTh7Aei`UrLHx*>|E-qikPcSEn~$tNjpn-zm~xOq*#D P?Eb<(leo8HvkCwJ9s~+3 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/terminators/terminator_01.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/terminators/terminator_01.nbt new file mode 100644 index 0000000000000000000000000000000000000000..34f3d6ed2e7815a74cd4abbc5db1297ac7471505 GIT binary patch literal 284 zcmV+%0ptE3iwFP!00000|BX^jPs1<_b((Jd5(0?}zlAer#EEO=wchY(lPGaP@Mrj| zq+(mgR?sZ@5a;a@E=9HI(s?6`-9B`=&!^ zSOh_#UB?_o9bwcTnB*TGHKTRPqb|@=Gg=Bt&}Jn$EVh=7K!zP}47E8_Yc|-`KgheD z4K*Iuav#JGjSQaZH_H*18te&fegTLgW9qE!;Ci~C-pNM}3Ae}aEpGz8=dcv?8$}-+yFI-ARn9qNSVdlq_;-JMn#1KQqY-CJ{AqXT!PaCvt3q zlJco&kej_$*dDDIMM;y4hKCC6K@3gZH+egY;oj3h?}GZJ*Tr-9Y9(@op_y_02Vjnh zg|l|T)#Za{r|%UuGW^DmG6s69uv79Q>skqG8`(b_S!7B_6RYycd7S=`*1EZf4dS(P zq|ecE^XRQ(pUxJIS}*a4q+$(9rl8&8a8_7t8t1n6r1Zo-qz<&7_yRxH{z{?&005gA Be}n)4 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/terminators/terminator_03.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/terminators/terminator_03.nbt new file mode 100644 index 0000000000000000000000000000000000000000..e168dfcab675351ab591777d43586a08d1ae7e7a GIT binary patch literal 292 zcmV+<0o(o`iwFP!00000|BaH*PQx$^#@)1A{|SM#3(vxtGvdUx@>;KWv`LhBAb1&G zl~mAmYz5U)6h;2opTEcjKn{uL4~hX`JZiXe$VdwdlZPR4SZ_O1zxX0NiX38V{8(^| z7*<|T=%-?ii54*Ggo)0WXh!QV=0B}yM(dnW3w)^sT549SfLL!OgVo-!7D%zDb<`+N|Iwsbb4z8yJ^;X_9P~4p2du~0x zWv~`>Ey-o485_}=RTY@jVn-r0Y(^Z^ABM3uQ?rJhR2JnK#^lwMM0VjPibrQGxnbLa qf8#jp9ts-`DWR9@V2`yI2EuIRJqkXN^FsxcpYR1tZt!Z^0ssIpmWNRQ literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/terminators/terminator_04.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/terminators/terminator_04.nbt new file mode 100644 index 0000000000000000000000000000000000000000..ffa7884f761b6a2ce94ee4fca4cf25fb612c6c95 GIT binary patch literal 321 zcmV-H0lxkpiwFP!00000|BaKuPQx$^hTW#y+D-@%7oLSPXT*tXZ=#nV$K=3lW zDv2QL#Q=DN`hAA%aNlbA;PR=JWIiK=`&p9UNlbD=OVpOL0-5fJH ziOKmSCg+owL!TCuo=FX(wP7tV!Jb!|7Bx(ltg-KY$@>j!nmb&|gBQ1*%hpl%Za8q2 z#tp&E0YDTID{D*-*TV@q(Rn7UeZeqJ4J8l8ZMj^lu!8dxyeC!-UXFx3#;3qXvT4^brML T$oW_S({K0zPA#IN)dK(k3n`x+ literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/town_centers/swamp_fountain_01.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/town_centers/swamp_fountain_01.nbt new file mode 100644 index 0000000000000000000000000000000000000000..716301332778685022905e1b6b71eb6eeab9c3ed GIT binary patch literal 1821 zcmZ`%eKga19G2HohaFSq=H)Plm^4IQ=bU7zh7wjTjfqa`nwPwUDDJpex=ZEta+RYS z3mbFq$jeM*jdfC9hP=(Hv%K59W$y2X8-KXxJpX*&p6B^|zF+N(y;3R2cD&U3P=O0U zcnU^r7cV{AwT;hMFxkpzu$8*yD7>%;Hkqg z3~g4^q$Sk_!y}qmRX5?^v_8Pt`90mIe*x*mEK$^l!mefs3XZfej-~Z`>!H(BV4uAYuj~S*Hwp6@C6>Gu4OQT zi&nC%o3K)h6g z8LGitOs+S~Xgs1NlK}{1(0OhZIm)o>D8CYOMba(wJ#yC(2FG&{3V$3DN=xu5CG z)ki+mM!H9Vc>hTXZr`L84t4O;m4hO3PJws1h-4)BbE5?cB>sQ!L_T! zPBH6dQim$(5yFdqR+XXRWP*HOmrU-_B-Kp$m3#x>MSg1(-cR;fmW5By(tVZ~XS^#t z$OupV+0)@JrtTFBa*PsD3pZ@bOB{r>pv6&Tm^oGWkP%ou8|>OaIj>IQLrDCp^H#EO z>;JI42fhK8jXUQ1U4KnO{eTPIw!ajwULx-G(a-)LT!6dgOwX zMY*g?ApceX_JjP1K}yPTUK^}hsDm42)MYUFS@-Mjn{z;GK#`4xun!EWptAsQvONg6 zTxO>jO!lLI3t2|w7y{Nb^TBgj0_u@BLG?b4e?{nau!DoxvLpCGs4;~y4g>qofn)#|E)$7KmuZf{;!yDepOv@wn2L+eIiVrKqj0-br}HuM1}3FQyE%w0;!Lm}r-I zVng<45ox}RnRsb9y|>`YGG9b(EF{s59T!cdM+vTDi3abYLne8&#)P~V15bpV6XV#) z(;dX7dud&P#gHQo)kHS;mW&`z#C}`nZ7~(A=cVTTSsH%_-pb2*UfdXO_F>3ukRB2? zT`tVl8&I|nmoJo@735btr{H3>P#=a1J!zxkOGB6S5a_7!RY%&;2ti@m1KSG^a!n+U zbQgA<2%J0_S}hTBS4JErNw4n2y2IkvGsYLQC1noJ>qZVo$1HcwPSApthqY{@S8}-t zA!}{)`t`Cuae2I_UB{M_3O0Owi-xcxHJLAN18|WI!^37Z= zC6B6>M9Ag}=C3X+lu~Rz&KNwqgpDd54s0k%)9LOS7FlYMYi1{B5%rPn<>U38sEJVl z?!HMI{%7%xb>3|~`mkiUl)66FZ!FIK{=7S;&ImdmL%+`;AbJ-Fui1;Mb0O7z!}4%@ zTSTjHeyHZq+N~?mw`W7A6GPXMt9o%o(@*$L*<3b+Juz9Q{S;TrTdn=VHEW8T^wX@) o55H`IpnQHaD-Lzn50V6^vvDizntW33dZ0vJ;e4S=fRmKezk9!TuK)l5 literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/town_centers/swamp_meeting_point_1.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/town_centers/swamp_meeting_point_1.nbt new file mode 100644 index 0000000000000000000000000000000000000000..636fcdf45be675c8832fabf39d961aab5a6d3115 GIT binary patch literal 2707 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 Kqbqm~jsF1wGT&JM literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/villagers/baby.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/villagers/baby.nbt new file mode 100644 index 0000000000000000000000000000000000000000..a327cb78d35b8d7a540c1c27f9da502a3e4a3747 GIT binary patch literal 750 zcmV`{)r0;8@y%{xO1m&Dv-95f-uKP- z)(7yQXvBS9006skwDR`tfy*Td6x{fB??XX$umJO$iN^KeO%ZW}EQ;xjF#HOl7M%pS zu?Pg?)s+ewe85B6_;nVB^>8R;kE+m-?((40<5}{l4P}goCz&%_a*%|QYt{)lIIvLZ z7^PzrN>(D3NQAW4xu(*{!m3hXpbn({ScGze8EjE!s=E*4$AKAJz9y(&*-dNa!K-nG zeapgPA8tLz7^Ez08(E zX3IF^3x?0%50^dgEXo%0D81#p)nK8bBc+dtP@IS`SsoOc%A`$ydUom23aj2-TgsYU zdzd@>^TqFFYYPkYAHJArU#ydEqfriKt4uaUcYix>D1~IPnVqq8HHORuKh|oOo0QSq zR9~qi`PB(ia}iM&ia3lp%uhqifwg8HTQw!@ZEJQ4#)Kxeev@3pwf%_@MWqGFpSloyJF{)0 g670hy{Y0Bov}~QQW2er#x_k)#05=2~fwKev00>iYJ^%m! literal 0 HcmV?d00001 diff --git a/src/main/resources/data/emeraldcraft/structures/village/swamp/villagers/nitwit.nbt b/src/main/resources/data/emeraldcraft/structures/village/swamp/villagers/nitwit.nbt new file mode 100644 index 0000000000000000000000000000000000000000..e7f4e902a60f43769c6c3f5648f8101ef6913459 GIT binary patch literal 749 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

G31p|(qsgwY@2;k!`AaX3B{7vN%e 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�uN%F@I8 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 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..5ed479da025147d4f23890fec011c3cf7e587817 GIT binary patch literal 59454 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 F*90r!V9@{o literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/emeraldcraft/sounds/villager/work_carpenter.ogg b/src/main/resources/assets/emeraldcraft/sounds/villager/work_carpenter.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b680e750d3f85f891f3993f8f3b4ef79f0c6f1f9 GIT binary patch literal 20786 zcmb@tcRXBO*Ec>XSA-}jgou`iFnWpJt`J0z-br*u?~IaMgy_*b35MuVMjJyCLA23l zbWsOmbVm0ca^LrJKfgbIpZAaVeD<7KXRo!_-s`*8UVEQysN2|Rfv$r7b!lg@`(BV- zcGNXj7_N9ZyP4a$UsPOqtb6eV0)?4fx%@7=qJGixKi5Ue3r_A6uM7&U^Z&knU;Cqn z3t;Qpx!7{6yV)=~*qQ5IYG+bp;^*b#dIe#R6dcB)x84x8w8?}xy}ApnMI7)FRDjT4{|@rbb&kQW%?iG zJ(2w&)-KpVW1-Ms86ng8uK%MB=%PVBo!%=qMJ{ZndmfEmkLxlMKrJ%a^tckU091@9 zHr_3U?+=&U4SXT@j#44QwU7p&^63ET%LV1gR~PSw5(TIwrZ7#na={BOjSacmtqU#f z7y57)nxh2khX2T23SZu$F4SLAPJGz=?&TL+fJeGNbxhAJsX!k=piiIKBIel0Z_`$h zfPR5MxBqsfREVQguB7W8ctUoQ%-}D;H=vt<+{@7Xmk}`i7;C%ir+&F?>ACDBRd!uf zoZVHpM()ezFF~MJ8kB7=lth>9EJ2`~uh}BeiFKZHc~}|8M!zEfWX?`iISu=GwnqaPtxE1KBLiyT&BGydGB`TZz2Z68B8sn_=6`O?moNYZ-@fs{@*^<75XwuXZh$_zKV|{U zi@8B3r};#|?TJGClg@Zf#RQ4&>WiW}{6dvVXGF&lv+roO?>IAJHM4IuF=AzsY&8XU zG(nq~U_AeKxitOlb~+JK(ZQia&DX*@z0b28;4%>?HX$cd1~o7{@V$F$i>y+E&-HI z01ALekWd_Yruu(bE`YrX0)mgOEfuP%RD^o|l8@C!yq&HlHG`Z=M#Ydz$npct)3T01 zu*}E2bfsS(`6BGWFs+;5B3NQSUweK5+K?Sq!vHw%4(J7tB5povzish>@5ZCx+kEXz z9=9L2(}j@A+<25osnp37a#uz%&Vp2i2;gcGf400W1AdeQxb!L=@Zk&r#&R9xdKGk2 z2KA_&=|$A@n=JX1GB3gAq%upHi9MoVSRz^mTqGCu{8wf|yeKP6;-DrN27jdlxnux= zWv^P+Myq7Ul{jb!Foq4I%iy%k?M#*^#m>wGO(nZBfU!iEL@uL5ACjn~#FdHlT zoLmM*X@OEKN;C&xNV5Qfhs6RVdXwe-Z6!q(7~owNm^P5#-(3U!{gy2KZsave+N!&t zo5Ucd+nN!4Sf<2yO{F_BDxxMYq*SJ(!Us@*mLj+kUwbBye!yUO zGLVih>cB8G|I(j2*sviHkb;zej?jjjRzp zZ}Nz#8QxxotOkG--v_>*G;T4^e|>s^;v-HA`6a3VONdt_{+xv72Y*hAH(UVXOrz^d zVzP`~TK=G+?Pn0^>op?abL(^e$0X3-3?R_EkD5_{jQ}+5neOCZ7!3esA&o^3uoh`W z@ht%h(gg!pl`a_nUarVxE-9kV7YwG5{tL!!8NgRxzFh$^eUp#tC6@n(gv@{#ln>0b zU%Y@C0P93xPTd5cVr!$hgw&n<^3kxJ#^de<>f|zP7eGeQhg?3=hy%g^a(rGFK7pal zIWJ-6LmOTQqk(AxAP2;(Aw;PNPGeCDM_&bfyGI9lOX8qUKbvpM`SsGq8=!BuLBOy; z*T{i|@@e9`%j{Eh0pEq;A)2(XOTQL9QxXOIs;SwPneYm572tYcz5&B73kISC48Lzd z^f@sRh?sVA8TO0EX!^?lYNwF}gzsBK!9y?N32-0RB^SPAc=1RJ=>>v1_AFVLp>gElZYVAt?xhj798&%Pk$KW_LR zhoFFb&h7$a!mk>Z?*GJny0mfjkBuDwyqfl@{{U#S1 z^EEXA3dm6x;TQ!#ei@?XQSb}nx!UwC$}X)fgVR9BF5KY2hfW9PHW0;8mFRS3pe-QM zuw)FFT&oW$69m!(;F@#@3R#FYzYuX>M}j~JL`0x3*B{#GD~fT@k#S$*@DTKt=_g>{ z#p-*pxL;1vODa)QDIb{X|7L^$V0;2*f+sj9mi$4Cv&{X=L76A9Z8Q}k@x@h)aEx@pg9Pl3n#Gfxl^{>af z|Dk|7mj7aC0>k~U$A6FIvhKeXXp(?HVi*48%^j3kdp6(2?DFDK>ve70UrHb*VBz}v zy4WAM?f}lbq&}oxK=TK}|7F>~$Mip=`+rPPf;`h^K{S$Y=1DmeZQkd7e;-|Z!$fSU< zDD^y$)nUWtC2%ZV)cR%0zKFMVq;0<Jlr zF$=i@YPdrV`fyABuBOccU0T<9Vw%Svfw^}D#0TVTU@wyY5da&=?f+}rnR%H>L7;Ef zFIGB^(If*yxW?qLqUrAQ-}l7K1^5><*{$6kFUQf^SKeLgCvn=mdYQ^V4?v)W{KP~< zE?Swc=XQc0elaaRX?yb6;^RMq{}g`Y`=HoGZ$a|tuOhF0zW0=Qw3;Monk4qcqM?d6+HF1FV|q%VG{ync0)jGX_>n9njhi&lX_U|p|Ed}Up$kh)YtgXv`%w1)cwFu5@ zoxk?vh2@h=fxkh&f$ij@E01&2(n`M8fBV%x`g?iv07QJ}0g$ZzbzQxBvAMo@fdMvS zSO2_EzGb?o0f8>wCoi~n!QEz*SE?JU>%MRA?C;F4Wo4+dwSLz3xqP6CG)oTV+>hd zbvw~A8*NR;5IF5FrzzD;cCQ~J_m?-*kCJU09GtD8kDoe!DA~X5UN>1SkrHPsa#mW= zYUSQyHZ$N{F{$okorjAb8EmsqhfX`ISHP)rq(?*GZbvSrDWnZc1JdG*Xt?sCU_LP+ z&PsZ)c!z&vQgavOOQ~n3VExU}ZN^(abJ&snps)u&7)x`WbUK(>E#KH!V>HhoIa#Av z3%A#hFPm|@C+RS+eY?#2A=J_R+1^h{#evAy_44X$8xdq?7IWe&p(h*~KdSr8sLklc zUylSUEfYT~FkYoD*`w8(x#E6Y5tQ3FSJl)sB`R&s(5(6Z>F^_KH+3~YlrXyOxQ4dNwq?wU}I!|**adsBXdg@*_^mNN`|5~8n9f95ge=>L9adi?me zpM6Q{TC7tD(lX6rRlKGDO~b&sX$xjmO4JBepKhSK&o>-@RBWqoAVZR8O)>&ETBMB) z>K?)$PHkrpakyQf5KN4C1>5=K3 zg!$QRw}Q-Nt7zj~l9`2LTVGxYjRKnzL}}?=WOGA9gVbW+6Au+j`9)}gP}Nb&VTrjX z&e-Y`>)J{?uOh`>&D}t=dx4t#NuFyO-gBsV*yEb z`8$Hok?3)ZBQn;;uWZt|$3sBfseOnDd(Jg=BvXc2Wy0z!fJynX!7E$+Lx)69`Lp&8 z#_Oqy-4C2ap{>;>Ip>wkevEZF>Xjp!44I8Z^dyq1TZVEZ@55qOBv+63eoZGh?n_k^ zGZHYH<2DFR2zEgO9>*mh6-+ccRe>d4hCg$!u>TIw5l+6xrU4Qa% z2R@TIVdX7n$Cb=smV;X?-brs>O>vC+*r;UsQ*&IGWf7S~OrR(!yk~kpkpR2NLU#m- z>{DnHAw>Idc zJ&dx<6|nd04cC`g-nA_a7(n~&v4_QyD7FZ7l(BN&<0!!>FZl`Q?V49q4fieRq@?^z zU&m6J%U9EM%)06Np}%y}FEsv0mlr>*EUV{L&Q-CCO>}jSSyL~RdLlhxUT~7=|De~f zB5aM0^#!x)VtF!cK&yTr_K~=a246)CQFHF}$(Urzvt6o|WOSItw4_gvhft4ofR$85 zfdW>zWa-=XxhNZIPtrzWRS7O1+l1!HltyrrhUfP6W=2b~lt%6N&j$$K;Cl9B&CS)g zaPYnL6$Y9nFtFPqidbCQIiE@)$zpGzt@7z4`K@CmSGaQv3+`L7A!M!}d#?sXx9n}^ zg6${JYXT=Gn)k!W<(9=?V1IdOGM9CPJ;;q?tc;yMSq|a*?jMZDy`ly8An4{p4#2&y9QDDOw%&CD`X;QX8BXD-G7hutZBg9{3uY{X(&DZg>t(J zBvcftg?FHP@qVeQX~R>e-U8#>WlA59eTuhCP4M^XKGo_Ie1{Lq4se2s4cFI0iVccg zoD1@~YmdoR#@3B6HQD^<-Ls}6lK$|)>Dc^ubCn%SNW85vUZ;SXu3FRH0JFo@F*Ws55wGo#%5C1q zA5SYB3$`vfSsJ_i# zJ)&;9F4!pO9YEp^ceecWMUvxi#k(Y|x;L(-PMj^HryydggGz3~c$}puLER2YJQZc|n zamz_~;^?#%GHCYe2p;&%cjg0|!-lLAsCm>#_3af9MU;2I`N}Qz>{61RWP`?$Q3;FN zuMCeY)wKL-om%uf^yDD5p1w-i@QYY%!%>czZSU}*1RB3wdBGO zHj~0?e2|p~%Hxj_HqMZCLgcPrfIDKkGgGM$>q!2*i($8%H*xt6yka8Bx9qXH7=K~8 zx8>Mb62HOy;5TkiL+7L?D*|CB;e}|^nbT@WKm{s2f2beN^J6yCzK?VG@uVMp&>gdl zLV1sImZ$W5>3*u;su3o({z5(Ox55p*jbU!FtMB=O#r(8kSKkCeLTB>kU(-aN?UZ$u zvU&~fk!56pWa>PXw_-Eml4apJ0R)R)x7(x3hAJNZDrrKx`veuty6$Jy z9JrOQ>yPTPv(;yvnQ7{! zLMYf^%in3rakivO-kWFR^%#Q3W}4V9@5-4luCP=X^gA>=N6f=#dc0s*j6?GG;C^#a z$!d((dTsu~B803gtH$KHcpKx^(Y4R2d-B4p%&VIbs=}>epBOrs3U}w;{rnIsaIU6d z*31b(CmDwvvu6VTzcc-`?3O*tlrYD25U4&5OA!#! zMYP9VgDM{0+w}H;XFBx@AT8$ZK`n)XqSM#=9DIidHt)KbT{TF` z!iZTtv+uk8v{Kv2n%jA=+B6ACz)`|+(d{iBfv-F}y{V2&d%gOczFJ@FeN-Xaz0#3c zakeB+HX+areo}(RJ(N9H8AUm)3lnyiWV6g$?M$Y8%GQ!Uy`z$_Mtx2bs!^(z3iO?w z{l3x`#g?19U~!sOR-N(_`d(LuoBTSNr*3HA-b6+%jquo^M?>eE13FHM9QnQjjsT|# zMTh=t5${*Ul%2lZCy`RX-FglBCb;YFQDYsh11ssT*NW|{Fg>!xi}^R!G`G}D5x5t8 z&jWe;Hn>wHQo^Rw{F>VAd0aiS85*P*K0F-wBbpZvQUIa8z8YL4_|B8fJZJ z9Dn6)2Yo^=cBGM1^#<+~Vpn^hXLch`KjF}k>TEi#_Z_|`9JT7$-TblbN$-9@EC)UH zu^&Ni%1sVj7~xQ!&ywOX@9Le)ox8g}BfemI=!qN}_fB~Rk(6zL;=69#yJFgb;{btN zT2HoGV^2Q`Syk#->G(M}?$k@}ZfKM0ZY(iKpS)QVJgnI5jezJ*z{u1M#yZRO>2iLC zO7#`Iaf#(g%X;dmxZ@lAoIRlKW>wIG`f?|DaLh-lrXyy=HwQHXzN4nZ68RBuGDi?P zc{c-JyR*V=x4MRDhtOLD)zYV>8#(_9miJ7nKm`UVa+Vbx%NeuJ_I7iOp`P~Yqt~Gs zS#{!%1l4e)N_EY84;Ow-8@}Ndx3Kf|jSAa1GxQeY^!-t^M%PJXC93WIP&LOwg8x}3 zMYS1233^HmUWO3pP@5=H^cg1u^>rmvJY9b*0NTsoMwI< zxCkm-_QY0SQQH@&IQuayH90$NITdQt8@+3fa~_T8KV^_0!n}HR*DLVnJrf_T>C*!A z`&%q!`_${!CKzSk7M|>VrPUYrsrF;Lx>`pjHxa%mRu<{5DCDwk-yNm99J9U*cu4`C zq&!stTOU?^ zN%uDDU~;#k_lKW5Bo{$7zRWRs8Cl&9IFp%ZPYI?iaY7FY(u-|x3s<+jZ?mUgNTSkM z8(w*b@gkXCnz#=FQgaw&H;YQPajM@#u%szD_U1>RCTWLi2EDgLk<@nF+tm zc_~^4374@I7?X72t6gnQ#qLj!?S_d8jxh_KmrmbAzv-U75KJ_pL1Io0p2Lj;-R&7QLlT z0)!TI9iqV&UdMqG2^KsS@tYB{Ur0@K^lff4ycqK=oF*EW*=Wn-wap{-vM_>1v)Tn(`XVjxWL1Gduov5Wf@Gxs+d<7C2K zMz5Lm+47CQN8ZpLG?spSj9HvUvP%z@JIACrYZ(>~YpSuf8Z-|OyhuH>O^Onou#r@v z>v-H2^FFpBAHS$qS$tDYCkT&sxNr4E0l%6AL)2}IcuY)`BG}BfdH2LkktOzEKT>h= z%u~!`ZU@LdzOQ#j2Rc8yb&%nURQN5XJbKp!*>|7;LM)A%xn>k?wX@hhR zG6`%9I1;w62^i%sP&Z|K5g*zx@0sN>IJ$2H*FQ|@c%y}k8=?b=2pyam6#b+og)y}z?-TA0EA8}#kL8}RyB ziOwEJYf6eyA?EF%j$rMR0lfWuwxe||tcu`Wrgm=EsP-2Gx-e|?@|YF20eg{R`e>pS zm8ry#TuutlT|pBX>x@(Vtt+W<&Nrq`I=V*^I09vRp3JW$BFWKvB{3T*&C_=WzT_>N zkyn+tzVaO>w&!;Ys>VL|^e~LmgIDOY{V9F~-);5q3 z%<%Tiubv`&T6g^mc&f848^g-TR)US;wdr=FM;CGbH6@^aI~3ySZKZ1!{SY@XleMk3 zdiZNd@G$5+BxA4XZCQG)Dif z3OC@UQGP+c^qpW2cc&;&_rlKOX^fA&DtSvQOl%Co`SJvh@SYndfc;rRNIcJYLBU85IFSm z@e8STqs70kfhtt=BzlH=4}4SFw^WgJr8QsvKFg<8?)+ccHLaOB}sKQweHQ4XFfVFsm`_D1sX-%Gze*s$xB z+E(0)4aUNU4MoM>vp*ycr1nEs4>7BB5u(rv9bX$*O(@EcqHji3nuEEoD-Yb%;y(tj z)Y(_uJDM=ii*w$RDvehQ#460WTY2-XD}n1X?L_^C#Fmq54;0fhdQ(pyo)^~-owJwp z)g~t8WJzM86h(C+ALT=eT{%3@%Q@TkhA;`rKCNECo97x!BMApRPR(6@l*R-l#syx= z$9-8Mspt7$x{Nbe`VD@Ov^D&8^y1N@Kjw|5&XG94SYVf}$=)c4V5}`7ANXPMZH3!1 zFVvrz&KwURHhRHy#r7VUebst&0R=KLhS|?sJUA-`IzNUvI$df{COBBJjd=&2 zk7zH-WjU;ON}n7x8Q>9~^g&L$(gBNMF3<17Wj598urZZ>^_mt!B1s!8OS*anChprWE6*cD`y6TNRZo?ni9(>m{7< zdoz~MhK#FBY-0~OwxXM&OKyzhV)u@WBy4yJ6f&Oo#vTtaqFbx&-F-gmidzR{tV&eh zk5CC6eU<(-eEmTgdb{nrWLRqgj~H9Sc#XEmDy6HR*lC4O6nBS@X|~{!hvi0DI)9dZ z8~iLn-*)x3ii6i% zF&bOC_Vg#uL_$nX9ZW@aT^u^3c#?$SA0rtSy|Dv}=fnfQ9$oa zj=Dleeo|zKyC6!}dt-iCGIodl(28=c;m50Ue3lMRoQ6#^+Bbb{y3p{{6ESsMy|*XD zSLSb-733*2Q;`!!ehSZ9>~N1Ya#MMpDrtY1Qh$|F5G1l^q47P_9kbx|v+3H-tJ6_+ zRH%fb{}^P;&PX~c=bR?sTs^BM2b0%oc;2MlfJ`S=bIwK|T7yG(0xi3ccaEjUS&epcLevUax0Ha}W=25rfmp`8lI&|nNGh?ZMyJgZ0im;~45 z-0y3f(#$)W71+zW)>vos{1b4>6IvY{e{PB{GrHCiv{Kx|o)B;Vwa1mETCbKoCTbQp zw6}Za<)yC%nR8iS@s#>${jIcL`Z#a$j^B2nPSas(%vsQmQkrB@<018`EQecw%iU$~ z2{K}F&P>)_L-0&P?)iGxQKv>yXAvlPj3O!!zLYouV~HiR*FVu0v7QQS_zvk^7;@%QW{Y{1BT z$Wx|Uwu{}69?dy$CRJwbIktEVdd2g^~EPM22|KYwmy{vs- z1jC$|TnF`%)V>(J zK}~&j7fJV*pvNHm`4LU&JrA=66?Z<-P7^X*Ks0Zedu-M$ei&tKob_oee38&zcF=+C zy}H`^s{qsAz%5+BTh*M?e3$E}gEja=%VPNHUP4fzXhpJQ#`xLcV)oGVaATzuu6Ky0 z6uviF)atBzcD8zl$IDkxp>5v`hkZ{*aU|EOpW-5(H0a_|vt#Ws-izYyxin~AQ$>D(o!~v%>)MiD@DM_?{M?b)MHaDMMSW1a?rUs z$BArJ5U&>+Gymgf6}TqN%devHYc69iuL`7^8oHH=^1a8m)V^!=-HF+E0$TpYDCS`0 zN8XZ`)#K`qEF*~z9S=SA+In3lX4XBujt^s@87nEXpU=>pOEqk1is=tG-ZYi57M{On zMBHv)_w5-IKnO;DqMF(JSyor}Rra{ptN<=Q#bIekzSyHe)mW}(OeiRDnVE2@+HZ@j z@H&xCffgJI=#kV-anxpuQ+UT1iUn-n>K1#XrT0LdZsm3KvnY`~rK#Dq>EN<^cTGhy z9|NuyA01n(M;~M3hG!$oY45$TUgf>RZt=9-`CEDd*|Gh$iVeAsdw5Q^6E-~`@nxd^ zNXj|7qfMuf-pxkqoS=T-SwKcrS6LUNhWue>;ciG=kn77;PHR*4P-|y*r3*!Fk>|JL z=rkao#A4*^GY39-qw3&bRdOJw&LLj|HFxGWXex40_HwoVK-(ALwoc7Wv7?oVRLfJd zfBm65*V&8f%(6knu4_zCZgF2DC=7 zQ?=HT;@$75Jf5O$a2V(5ORYCYSNcqGs#_boO{f0X7(_G0eltDaey%P~N{A`t=6LY^ zr}*c`)y2h|Ws$Az-S<6bzn%AZ-c(~ToryVlas1|ZNdcFVqo&6`wo>fzSfQ|Z(Jvve zB~IIe7^y6fVrt~zRW%yE@Y6w|_D)vJTD4=@9?@~tO!NM=hKj^!R9PCkSckJ;k@!Yz zk003;!R)APa~A&v%@{v7i?P_V#)q*7Rg|yRy;Ymhm^>5{seMVVYh>UZ#&ZL8{iAs^6CH%D&lW0hLmn4DM3e2$ zX_iKs{U$dY<>8fEA}Eujm_CJPT2nzC2zlmL-Al=EnpSlhh6FX8F-x8kJ@17NvYYBh z-rxki?%3{=KFH~9b&gdiq(>scKMn0_=t{!6yE$^WBI9I6K5ZxoHp`M?2IASn%J2N( zHkdL^m=GA68}@z2J(J3`cM5;Q%x?dlq)y1`tiNO&d?0PApbHki!=gX-LBgn1R7!Om zJ6pVhcA^Mnan^tqIiIghSj^OAzzH^zxb%)4_7mYM$sjWuH>`d}zlZd|B} zo!qAPf|VzxTis&I%$e0Qz?xtV3)uZx%Dikg<*y&9tJrz#`m zi9KSsWRuFfihsJFQp_l&)U&@0?iol(jbMirW1{lhvd+{ zYO!@#vs795NOOkBteAmXnYgaBva6f1!H^)8B+u#ZkAuS-s4sUgr-pZZO;7wQ_0}!l z^ULWaTmNH9d>~99s(6!n{JefbP&(X8ku2Lo2#8`iW z>_@QZ$F7WU2e|T@#Hb4;OG@m$94k`VsnN+e^Su(}s#(eBSDHTAIB<`fmgQIlUsqsa zZ){gG#jYE!t}y(>yrh&~>-2LCvYUuENn+H)DI!IQ@FK03qhf z4ALm-VRHqHDC>c5(jD2d?X+#Kfa_tOYu~g;t-a_ps*bJ>@?G2dR0Q5lHf}OlGO~K8 zYYY0<*@)T2$;h9x5#Zz+BnjWHr&`8u2G!Le4&K%v@VEfr__cwsy)%ui2KY{+5fzi& zZlz!HR*Hvpl2)O^tM((M2xlQwoqTooQ4@OK#>Sr~w$aazp_n22#1Yp8K};EmJ$y9V zs7D>SHmtTv>E+T}Y&Kl(96kN4z9x9#bW4GzE=um$K!qIKqKJ&v2{jgU7gg3Sy z3=cVf%bgR#%nhGf?`tE>;~Vvhj&2ND?KgV)m7F$}u!0>@IM{LDhv+1;5|XOjGxGK_ z^F!q)K5lT2*wT+(HN|Ayeg%5_aR0pgcqir`16z|7L!8=Yu&GE|1+6!x`}diJSHkqv zU&s_;q5Y}2Z%KplHOYM{h`o$Era@uq(t)(A2_DQ$!pi zwUYB5@3XX_Yf~`_IftV>W(p#w62>2V>1Q=0r}t~%qOmhAQXM4$ke^mF*Y^mgdkBdJ z=Oq_J=eB5cI`d!QL+yKF9c_WfSwRU1OV0)ct(0LFn>LlwoQmWkYO|PxbAyDli6vQL z>a>E;Q{5g&fTUh*=;mbC&Q6hf_$cjQd26GSO3mKM_H)%&a4(Z-qibH643dwO-$Gg? zbb^jXWTdBN4VIqL1wvjsz_K8Cw9B|B3p zj5kv1d^L!%-M(>I8POS2;l6Ut(7N*jTCW&D3tONKc%hLkW~P|ZmgcC{?B&*NG9)ZH zb?evK05|Z)A(aCJ9j&!?1@}YJhrfqj8oD~^{|$V&{R9|#-VK5T_F64 zdoY`ylc9|*Ly@~X(%*}ryWs^cV$=g~&r{`uOxmmQ8hf6UQRyFHx4CPsc- z>-tg9-8!c)!A4h?-67C0Mm$=$kGF0ZucGce6U6qS30Em=dVQC!lu*7bQR-I*t~fon znc_dUPR2bVvg9TkKe8!i7&!eBU+ccandBXFysMKnwo{$~moki{)@h>5qu3SEDpF8H zwzRj8_c}^?b}xVK6Yjz<(V-Ac5(*?a)2_aYjfZ~Odf01WdG;%U+r_2s_^B5r0AR`apz3Ux~mF26_?Rxz_!;fDPVuf(&Iy0A{Ltt-^PTUtfD9X>0s zQ`yas5)tVXzshK{lh<>Y0jpHoG5#vXdIX_n&O&Bk9zk*F7Wsn0m&(EuF;P(!s<9(T zqY4jG+JV(&-cvcujzg(bGavDqm=>}4NcZ@n*{$)vyq&D^q_S5fno-r>x^AwHbcF%GT9iucI z?XV~szgvr^%-wX`aX1n>4bAm-mvd(Dr93SffY-O6g5kHIcorr1F z6jnyD8MTvzdduRnSDjSM9ZUDMpzGwxptOxSh3=~C9+ zxjjVZb-FS1kH+d-=}$v-Lhyofr2`IfI|)Rc6T0#lF|xsqMot8a;bvVwr5HoPaw`v4 zE2+q9i#hTO=0#n~M?Hqq?%4?yO#A7jvTjq<>BJ%jrm>z!;s#X#>pN{}& zI&~L6OgK~?XQoznVs>t~$Y_}UO;_KS<6m6rI&E`xI>i2X7cJlATADU74ThdJ9~qfE0mId4Q>v!n18N6O73}0MqK;g*E6{|o|xG_JARQCw?-a3?6s9e z0~^v#ZJn9lyj&)gI}sZ^&NLG&i5ruaF7Z%3zG`i`ft|nV(%yL4kYww zPi%a3!UgTfu$74NNVeS}CsBx{+UfA}79f(>=su{KkFYT7 z=s__!5n2fms*$?vKH)s0b9yx|2pgCctDx$nWpPxN-sM+Vd`y8F_1Sx|vAijp5Exe} zInA5r*Nv=PVwA(@h-3DK_nn-Zgs1k?4IL$tQ_dUUo7@s>I#HP7aYur<`WG);ZPW4* zmgoFLNyigJDtL2cU_&~qz;Ci3Mn5Dw@3pT{%=;e-$ESxKGp8o|$@4i?N5}!QlpMYN zgf0r|X=$nNXa4krS_LD2D{WD!!;WKZ`6T>on#cLN^Zvfm>qU_bQMWz_F7bv}=^i$A zs%sSGR^j_#b<(sUYhC5EM9EvVf=;@Bzu6(1{#c}7rz!P*Oag9NKG1u&Hr3C4`}W2v zBX0L>{~6H~ee1hn-E6^iFCwj!<3gjcCAqrxQQ>K4wa7X|&fpclf(hMEAdoN;YPQm5 z(9hS0YgE$1BTMk5e)y&*_QvuLr_mfn;!vZ{dtx}9J^A^UrW`|!TkV0`HH^AxPW%kY zDr?LItY@PI^aGYct)s@?tK!&<^1iRy$FRWdMU>!G#!_kOO@>!V9$)+krW=ZOP8?U= ztldpXEDj7TChEmhmV8v38Vz44vF;?TB3H%h+n9Tqm;S~x`Yisqsl??-YJ1o$m)uXJhNo$7Zr0QNj1R*TD)dUQCY`g`TO25 zzxwtm0lQ+F8J-v46jiscBwORIuz|jjmFuLbcMwUw&|WDnRtv@&uW#CY?i9$R7@6WK zTGx@9JirU$n)JH1yUO?A?(;bJAx*`exVJP}+4MTb_>)$pouBlk&|1e0q7+2|1}R6) ziHgy*ap?P8dSQa9f!(Sc7pt;Wt|!$oSr?!AX1a&3Gh-UpNUaonAz-?+30NN$b?jx?XszKlCQ9V+t37B{@(U!fQjgcssxUOIUyjjG(gW1;@{!!wy= z@193>H_O+lc;H(8VF8la0(4}OjG~ONN6?yH*7_eKg|8ncBsmVnQA)bl4o$I|nzQHJx;$FXE>J*U> zH>CX8#oflLf=7~Pwd0sP^!tjTALE+z6r(~pdrqcD8sfOGfoQx(n%Lz2L{HK<`JwrO z93KoLgyaYemt@QH&}}}?FhYbuwOBb84~Gl)?GAT1-}qTWcV=Asj0?qF50&y7=iZ;f z4=2wjrUVTA1mG25dUyFno1y0t0Z)T)dJj6(&sxIg`l=Tk^kc6qaLa|5?6k~;%h!pc zU#*?y_OR5}=r{V;a``Ce7aCWDaZ1s1n39{RXG&AMq~2*f=UPSc7| zoE2G_^Cm!4Y@@Q|Mn$*rk1##QZ%!c%Ir?F*d}KcA#Rl9^CinvDQ&|Bw7n+HIx9 zrvj$T#>f3R7R|83OO@dkhjxU;DFyXO{pM-wR%SNSSZ{oy#X0YTe73w~(Had*XrarJ z?c(5rDV@5Ck&Ot4?@?+P zyU616HC!?fhoUyWh4eo!jcm{s))zNc&sjU?WR_otdxas-B^!sU1(>nf65v>j%tBKc zBNxWr#KLJe`n**%1-iE0I&>@;*r+wv<`JN*#ey_U87Mo*)NK*TI?`rESH&-LFDUu` z@;{$1TsPMLBCX?Pc(kFMZy1}4K%W;d7vlJiV*|CR$yuFpAo9YC7Il3P2%Hjb@jJxO znJcr}D=TABf7U!%IXlv7$}hP%O3v!{^j}7@6nSKaUURgh=+5Nz_lKMQ<4HqH=^Gh7 zYaBaa`B~aHl7wupVpN<8<EJ zybvhD+&KA!*Ds0M2Z(aLnWp)wH$}@G7=;OSuW0^Z=bKF|qRo3>4!&3i&Y?n|uFrZ( zrdek)7#Nt+imyi~3|M688KZ(-A?dKZ)#qg05rR794@)Y1g5cT~i!RH1MX6EITI02b zIh`v7SyiklYE4OdvO${CwOMLN^e-9Ptj-@sT87yw0}kuh@4YB3Ia_lHok4txpz~4d z=g!lTx*|do{jLN}EWr-x#gA2D_0hTDz?Yn&%Zt^PF%r*<-f$f^87{dDs4Sj<}v>7@Pl3a@5}V!@OUc zF(c0$2CUj@jO<-m86YMegrQhpqhJ-*0iR4we&MB~Ab)FjtELXeg&kf0fh6Ncbk)^l zA$|xRbpeVf7sp;VXAZ3bUQZ4xr|HBB!HKp>&uB+|YpU8j0^Kk>{?yWc@{I6$jYxmo zt~LNu=Td|6v~NMPNNgM#W{q8|E+FG~cZR751;>dtPNH`1l`kryUlMIGg@?}^B&A2T z->`x1k6@a5f=Qk;^r#hgC6E*h_^uZS%N}WXMSRuzHSz?vJgSfCa6f+R_SZB~=1Y+N zTO!GvoEW;{Avi~v##=hGw`ejF#ANE$n}nxcb1lX}tBvyN;$H5fvzqIMQ(=I5^s z*I{Ym8^DGwD8tSvjZ=2C6{dU( zkbV^~6|7Kl%v10+w-UBhJ$9vpctYQ_EOs{vvTiNZe%cF_wQg4Ct2H?8*9~Iz_Cm?HQF^@Y3 ztLuCFdpo$zz4dkc#@gcKv~Z>msQwDYPuVR+-RuH$YI{bHjUsjv*@L%Hs_EDko*N8# z>fU{`D+QCY)sW6O2A%QKgP5*73GJEFfFK&trPKaJQNl}aZp=b^)7M8?VOoJ7bq7MI zaKE=23l$Q~-#?D^@1ED&-A72&MjOHJ&}dHXP|aeuF?y#FZR;K#4k;Za7Er6)=`jbj z7b9dNg&3;EfY|sOvs{e7nF6QQmum<8CVRi}QzJ>CXC9jaBz*TOT*7u=Y8x0ap`S-9s2hBD6w z%t#4dWq3LH6x0tAcFFLTiatVaoEBmKL9zF--y#owz@L6ThjH>f_iWM}>&=xW&z_6U z@f%C8kFQUg)px_;!MuB`)~gkCp5Pyk*+-)W4~n0T5<$Jg`i-S^BG%@+51DB(_!&sK zF!q_tQHhO=6{LOq{pwl6O1wDrxuz+xaMm+Q@u+abchTbh-`$Ec42xhb63MCUB&0ka z>IomhxAPg_p&fpAzx6;MfI&6Q-_;uGe|(7RVzpi#rawgw)CvoUKNo7pmWZzJ8|Mh& z#`M3OZY(L%akeA)_Yysea3=$#xjCM@$F81^51J2*Jei(flUV*yXTs~H?b+!MwZ6@e zbd8t0Eb?2d%+PQXzrd#y!p_b;qTV#kuO~7Fj;f}GT+qbWWUr1#BcJI#`y!FqO4*~P z^v5Q!w=S(TUi%c=%q0r@+&6bCKJ=$#lo(5XOD+G#Y?AoY?WUH;Hu_ll{=?R`(-rUp zV+%ju=qcUps!?RU$k%0|5Sy!#<$K;XSI2)0EFqeeZVs3e1YKs8Z;8Xmeo>ddigs8C^*lzV6x{n6^_f1~i-9}EdPC={ zMSpu-b<4KbwOi9Kcj#zte+!;H7^+N>O7tS#^_hQEV&Kc8o!sMH%4% zsAli;_nAJGUTyzvkWEaNGU`(?jZ`pYqs5kp>EAMa_O1&hami*mI#UsudmF9}ZeYn22(f4yxF> z3alaAP`#tIBPELlN)@u+_cKbM;{;Asg16&f?44h&PZbk{EyNhz)Xr$@(K!R zkPNP*t45C7lSWcAPqWX@M$f%HAGU0rZ8E!6A5JvFX4Fma@h@eaq9|0+llYs{Vcj(O z#2||778RbpIFqItBQlARuL#N1#-_&EwWYBcq)Sd0R3dLbov6b50 z@#Usd^!AsUVti&+>gG|lt6x_b7fZsEwt>{x4%$68%*5KIO5wWq(Pn#u{fY0)>EzEk z9sd0jnSblngYDGpACjAAA6Is(+bZ-=Sr936 zv}yIs?4l-z81>>u&pw=NMkD9WzpI=_7ve(mlOXYs; zZRw;!Tff|uAJ#-Cn&4CS`>ol6F6U@aw$31T!6DFq7&hG7EG96v1 z2?W0Isyk)tM^pZU7ALu0==`zDFsZlu!_Bd@t&cdZ8g)ex1`cWbVt1J$yS<|RyEAPo z)VO5J)BXychwCBG0DwDqQ@J}qBP4(Ha3YY}v!Jv8ka?BtZmO+FZAv98J*@J{u^6vv zANZNgXy2W!wtd&r|Hb`^R_8n#2`oa!lG|E)>0p|K%U@He7s9T&IfvrPsSh0zSDU7+ zP)d`AShv^rJo`%Efs|;^kV}M${|V@5k2Z@%adPai@Cv*cfb0 zkW1k_a3+kvQllN32%Sj z1=c;t^QwGfvB6GnpxYO}X};0F`09p1$cZ-eR#YolY7gC=38EaRGoL_IPV|ORhS}IRwRY3AQpZ6Y$_jeSAyM5IA}yD7o`3#+Sv4LN zp|8yN)-$?fG%msrbz3t`kC#38WuU^{QI=Jfb^hw}{;@uqq(mmC?Y&@;2=ngfFZ#%w@VW!hFl zv3vRQ=RRR5`RYI8hNYCa+eId!>F~PHjii}3QtHT4PySk`7Sz7OKk-Ga>6!>7b-Wtk zWcL2dwRN>ym^zq6ykhlUZBDAnidPG{EjL4T1*_?Jh0DP*UC_oOXVnaSbhFwCnp2cG z++(x7I_v3A2eDIigYS1v3E?qAwK+7#vfFzdTAcM%hz%EIATTHgW%sOXG7Xz%>xz4? zR<6~@mdT@DyXi{inmIY^EY-&S_TMSpiNI?IPw6pvF~&nT{Aw9iulsr4C*#rY75xC- zr|TgANWfNQFYC=6UbyVt+#v|4|Q@|-`EO;@U3dMaz$QMYGmwVb%? zn})`(WxHp5rS3JRUHj~8;<$FMN7I?~*yPPT=0!lQR-8JUt$(Wai`V$`ysTCn9|tAR zN;hpNy}Ljgkk3-`xUIkF;Gvpc$ea$-4Fa`IMhLBDsnM-CUYcBv4!=C_quuuZ?~87a zxUSl>y#1p~lr@_b#^b9r+NctH4SZ$46Y6BQ6xgDtb5Cl=vwQu(zYmXX{yU|o-I8WD zBfBe=C=OL^mBP$Kl*_AEw05gbjIZgGo#=TmvA&m^C{O@^JIHe#o-rhP7SJ$;a?jLY z$=j&)zZHtK-FMk~^xl^R-gIZgX-Ca4^tDch+}FK|DvL|b?Bw6+%BQBS>)1fEi%s^+ zmt5J@rf$a(hy2S$&uu=(%|Ew{$v&O;ZB^Rb*u7M|{H!{n+eOVQv*%r& zal>}K)=Xdh-g1RyQ$GxGr@Y)v3*=`@a%5xs>GuP;nc>G-lSM2mi{1Xy82G*#-fQbL z(=K~2&3PKWcPkhu5P54o)LJf7~|R<3>Bqw|ZZ zM!qQf4!nQaKiackU51B@%bH?4FXhNHm?vDNVK2Rc=@@@%7RwDI zzS@l~ZkaKobuThjJybrHy{wDfq!F4&Yhg)hdVc-;rTxqfey6j*rUU?PnELXPpRdj> z+32pS$}HK5-9(3zo|fg-Y;XMcS3I1!gKiZj@eGH@3VEtW$73gLSegdHSW909Tlo3+ zI=yhAmAPsx>wA_i)^U@);_Be{G`e=CdO7#Y0w$DovDKC)-5c3lt2pg(Rd>Z@P4bVA z`^v(!`-3voXSI!r6vDTzjWUaIjUF#2Jk{bvH9gEq-!26^4B4ord2P~|&Te0bG%>B- z16%8n?Zcl3^L+Y~nEQHaE2Ihy-K_xjFCc_kS%^WuD$uim*?Su*p{#L z+cvd2%c-(yz1_&5o?BjQ8@iRUw?@|mfn@LZ_UxBtOzRsTmeb^?3m0C|jWbwi2`#tSrv6)plThoxgjLZpM<%%2t06gfA zV|Sb$a%wd|rKfw^U-8nbMxCe9uP;}MV?6I!<(%AWuPteYlZ8^bk!F~bwt6<)oJPA< zy4Zice7AD*PxcnBUGKLtrQz_!uP=2;cdDl_)wwY^^2dlgomLOWc=cdSj<)}2Sq<5^ z{A#u8{t+G@M%3$*DW{X~vsOgX*WRMZp3CZkM%V7N-VzskD=+E!{q?`ZF2CAoVb$BI zPLuhcv{?UJ1pZtIwSV;ybTW7D-EtW9lhz{ku+k6X<8-mu|Fb+n1xDL-u1oz!XE5Wx{?0vWTlB+tFi#RoVu?0a+GIYx+E0#aTZX5}WBW%o zs>eP1U^b6?zGx%L6vKx>zgFJq$`j*{rB&^|(yk4>ymjegWt%6S$IjW+J9(^ozNq)7 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..afa046018c183d6f6643f1ff095d9ec65d720c7b GIT binary patch literal 124462 zcmb@ubzD@>`!~EMAP5*B9U>qC>e7vXbji{!9ZN_p4JzH8OA1RjEJ#a(bS({%3sTYz z_W?hj@BMv#&-1$Pf1dH|Vdh*j*US~~nK{?aDsN(<2)YgWCy}N3fUmQ^QG(UCC~m>5 zZS~FUt{>d`TzmZo1bUl$=jQMCTk_W}|C6p;-U3Pol0<`#6tDiDY4pxtPRu|BHM38q zujOq`s4UF%Rc`oGNm8-A1-}IY7u8Ee15-T*VT~m&jaDgAP_zX^zj7)Zj`Yk10p*8rE`3=#C5Li zZ9sfAoS2h(!pu#V1tmXqc z1FNixET~l<11;u5^?M*dVecfUeV#(DZ~Fe!zC^&ykIc4{Iy=es!K<9KuMb!{sk~%Z z)-t2yc-C?o0A-~I{@PvJkRa8+)RvAbR+Nv<4F_^;` z%w0X+NAtV8`gb4AaUbm?A3Y-9f39QqxufgrMs%uMpfnop*hPkK&q=;5aDThw?OSjg zWO%I-Dy+!o43QaWiojt{uR?caAr%k=Kc;Qeca zYqNtu@4#ejHe_9ZHXzKyw(P2Q{9|^qV}L5IHS&K>UvB&b5QI9}IM)0#CTqCfjaohf zY>Cn_MR5N11XS=(U!qDJNZjk?#!XyK%Y6zTZVFI>(^u!l!*48T(MP-p*plIALR(tG zK%!lrBu*mYZ_fEK9HTII2zW+}PQq;`)&uI94JBgaPN)HG)dvz+a;l#KxqxUmJ+fNq zFTa1>B3CD=uZepeXb~_8hgM^01Gy8!q^(}8>u3Mdecl0f(;FvhPyR~f9(rH@DRmZg z6oq{lZd4k$lOdBLBvec)*Xsj>m>yyO^+s|k5Xc+<#*6>G-MI2!FV2h%eD(8Xc@IlB z)Ag;OrH^O5qy=9D2Ml;I6FcC=A;^^!yCQB0C<2MnU_?Yiq!YAS z8w=5W=KDV#>p#c=0if}|!DO_4Ft{VhOHLT;uYvzXj?L4K2(qq-7t&=fWQUk~ciH6k z*an}7DzM2a5@-(+I1CdSDRO8Jvl|U78;!z@CMu0ItK8Kq{{hTj*vySN{1{L zB<59rv-nxGUh{vw{(~HG+ZVtEAV<{p#eX5^2bfF*KvNl$?A~7)`3C`o+KWE>Zv%ip zKf-aOZ{`sN2=gd}eH6m1ti=C+Mhrk5Ws@Cd0~8wr0uh5it8IYR@gp;0HSil$e{#QM zKhgmkKW&|LMZ^n*+Wtwf!Pz%Q55#p;3~U%oxD5cNe4p zz)jd6+)AV$EYwN$J{XKi?ClS}Pwh1zgh}fY&4NiC6Ao!50*YN!-qFI6#L?jp2?PlA z8H53Ru+s;^32wbh0)f7U+xder2@LRgFmvtkA$dez;oS7JcDPb6X%YBRQUHMk{lc(M z5{owTsgz`{S2*M)0`Wo0oB=_kD8&rJhde+41TzNYQ%x!6_CPRZf*phfo#_qH00^<% z^a!8@MtXE41d7N+0R;O2$u+8I2*fNmdPL(TEfOHm#-KEy;4G9r&JC-=%n^NahDwx1 z!A<9x*PUMzB$@5xq%f#s`h*yO7Qk4H`mR|G3B5#Q4rxdtkRPO^X%Q%4hC(DtUnUnx zA|(m1(vZwWj%XAXB8hl08GNosRS~NZ2u2VZyhPk|jsQAGR$g~rp#(9zZed>74s@Oi z2nYpNqRd0U?PLbM+=!Np)T47|6XJU)u#=ih%)GmOuOg z*7A>DS*;5oAK!wzAmQ5}BJXJZ9&R)hU<2=PNH8~=%o_p;#D@fe(Met(q@-dXGT@c# zXXd#ODRBGEvs|O#>u2}?XC$!nCwbuuGcX`gKwEpDHw0pw2WSg)3Fun`;0M%0AW-`2 zH}z-{BN{=}-ViBCT12dV5E#e-^`bR`z_CgYsa&95P-#0v3Yhm$z_a#5pkKgX!KLjQ zic;6=0-k9=fn5v+F0h9Z8;}%>5gj*e_Q6QIaoMMUrf~Fez`jX#_$-(ab~wTq)V6>l zWEw(*&8QJFQWCV8gxr9iL0A~l5g#CQw3$j83?R@3px%ui!Y|njX+hx_!0MIx6xh`G zMgwYSCliqZv}_Oz_%!eg9Ss3Qj<*ADWWag>?0W$1ks0&=>aq(3bOAi;xF(>J4F0Yr zSRl}=Pr%|^qF`wEH6jgw=WS3fuu6cXZuCmxLj=^uM6gMKSAaoF<^C;3L;e;SXs@Z% zfOW2^!T{{9i-6LklCO*D(b2+~z%l`7&IeF9B3en~6#}RXs7mFpUd;UhP@86;U&h@~dV3fuU721RRrwEk-5C<(}M@IwD zMrqjf-2+jvae+RQkC*T?OAe}iOs8hN^_dR@l3=*mSOVy}R{FIy{@rJSv;LF&-_LGx zEB_FBu8kASy+U@~Hpxy7aQ`oNK<_?>JcmCCzDsZ|BPL+#V7(jn50}b_zEN+!Wm0}~W20`Pq1${ub8h8RE;X4qq(2smj$DKK+EbCHAwA>_bp7RcOAVz&vX29O8v zPhb)p2dbbFMHsHD0D@`(%>Y6#5`C=@AXiwOea!`>Ww*_L%>}uVa+DbZafYmh4r`I&1NO~ z@%148wg4RPx?cKU0z~S@Z?9Qh^8=ih`dA{sxS-hWC zOlqtF)46_rseLe5GPf;O3JvVvL0>_jJC9hNU_O2KzzdSZO{X39P$>?ckf