From ce9f4add97d4ab85dc9c389c10e0e868cec60908 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 8 Nov 2020 15:07:19 +0300 Subject: [PATCH] Merge and fix --- .gitignore | 62 +- README.md | 34 +- build.gradle | 186 ++-- gradle.properties | 40 +- gradle/wrapper/gradle-wrapper.properties | 10 +- gradlew | 366 +++---- gradlew.bat | 206 ++-- json/block/%name%.json | 10 +- json/block/%name%_brick_half_slab.json | 14 +- json/block/%name%_brick_inner_stairs.json | 14 +- json/block/%name%_brick_outer_stairs.json | 14 +- json/block/%name%_brick_stairs.json | 14 +- json/block/%name%_brick_wall_inventory.json | 10 +- json/block/%name%_brick_wall_post.json | 10 +- json/block/%name%_brick_wall_side.json | 10 +- json/block/%name%_brick_wall_side_tall.json | 10 +- json/block/%name%_bricks.json | 10 +- json/block/%name%_button.json | 10 +- json/block/%name%_button_inventory.json | 10 +- json/block/%name%_button_pressed.json | 10 +- json/block/%name%_half_slab.json | 14 +- json/block/%name%_inner_stairs.json | 14 +- json/block/%name%_outer_stairs.json | 14 +- json/block/%name%_pillar.json | 12 +- json/block/%name%_pressure_plate_down.json | 10 +- json/block/%name%_pressure_plate_up.json | 10 +- json/block/%name%_small_tiles.json | 10 +- json/block/%name%_stairs.json | 14 +- json/block/%name%_tile.json | 10 +- json/block/%name%_wall_inventory.json | 10 +- json/block/%name%_wall_post.json | 10 +- json/block/%name%_wall_side.json | 10 +- json/block/%name%_wall_side_tall.json | 10 +- json/blockstates/%name%.json | 12 +- json/blockstates/%name%_brick_slab.json | 28 +- json/blockstates/%name%_brick_stairs.json | 416 ++++---- json/blockstates/%name%_brick_wall.json | 178 ++-- json/blockstates/%name%_bricks.json | 12 +- json/blockstates/%name%_button.json | 234 ++--- json/blockstates/%name%_pillar.json | 12 +- json/blockstates/%name%_plate.json | 18 +- json/blockstates/%name%_slab.json | 28 +- json/blockstates/%name%_small_tiles.json | 12 +- json/blockstates/%name%_stairs.json | 416 ++++---- json/blockstates/%name%_tile.json | 12 +- json/blockstates/%name%_wall.json | 178 ++-- json/blockstates/a.txt | 46 +- json/item/%name%.json | 4 +- json/item/%name%_brick_slab.json | 4 +- json/item/%name%_brick_stairs.json | 4 +- json/item/%name%_brick_wall.json | 4 +- json/item/%name%_bricks.json | 4 +- json/item/%name%_button.json | 4 +- json/item/%name%_pillar.json | 4 +- json/item/%name%_plate.json | 4 +- json/item/%name%_slab.json | 4 +- json/item/%name%_small_tiles.json | 4 +- json/item/%name%_stairs.json | 4 +- json/item/%name%_tile.json | 4 +- json/item/%name%_wall.json | 4 +- json/item/a.txt | 46 +- settings.gradle | 20 +- src/main/java/ru/betterend/BetterEnd.java | 128 +-- .../ru/betterend/api/BetterEndPlugin.java | 68 +- .../ru/betterend/blocks/AeterniumBlock.java | 56 +- .../java/ru/betterend/blocks/BlockStone.java | 28 +- .../ru/betterend/blocks/EndPortalBlock.java | 238 ++--- .../ru/betterend/blocks/EndStoneSmelter.java | 280 ++--- .../java/ru/betterend/blocks/EnderBlock.java | 56 +- .../ru/betterend/blocks/EternalPedestal.java | 250 ++--- .../blocks/EternalRunedFlavolite.java | 74 +- .../ru/betterend/blocks/InfusionPedestal.java | 142 +-- .../ru/betterend/blocks/RunedFlavolite.java | 52 +- .../ru/betterend/blocks/TerminiteBlock.java | 34 +- .../blocks/basis/BaseBlockWithEntity.java | 56 +- .../blocks/basis/BlockStoneLantern.java | 146 +++ .../entities/EternalPedestalEntity.java | 96 +- .../entities/InfusionPedestalEntity.java | 48 +- .../blocks/entities/PedestalBlockEntity.java | 210 ++-- .../entities/render/EndCrystalRenderer.java | 188 ++-- .../entities/render/PedestalItemRenderer.java | 150 +-- .../gui/EndStoneSmelterRecipeBookScreen.java | 204 ++-- .../client/gui/EndStoneSmelterScreen.java | 260 ++--- .../gui/EndStoneSmelterScreenHandler.java | 372 +++---- .../client/gui/slot/SmelterFuelSlot.java | 50 +- .../client/gui/slot/SmelterOutputSlot.java | 98 +- .../betterend/client/render/BeamRenderer.java | 124 +-- .../betterend/client/render/ERenderLayer.java | 12 +- .../betterend/compat/REIAlloyingDisplay.java | 222 ++-- .../ru/betterend/compat/REIAnvilCategory.java | 168 +-- .../ru/betterend/compat/REIAnvilDisplay.java | 146 +-- .../ru/betterend/compat/REIContainer.java | 28 +- src/main/java/ru/betterend/config/Config.java | 230 ++--- .../ru/betterend/config/ConfigKeeper.java | 684 ++++++------- .../ru/betterend/config/ConfigWriter.java | 158 +-- .../java/ru/betterend/config/MainConfig.java | 68 +- .../ru/betterend/effects/EndEnchantments.java | 32 +- .../betterend/effects/EndStatusEffects.java | 30 +- .../enchantment/EndVeilEnchantment.java | 34 +- .../effects/status/EndVeilEffect.java | 32 +- .../betterend/entity/EntityShadowWalker.java | 139 +++ .../render/RendererEntityShadowWalker.java | 21 + .../interfaces/CompoundSerializer.java | 16 +- .../betterend/interfaces/IColorProvider.java | 20 +- .../betterend/interfaces/IRenderTypeable.java | 16 +- .../java/ru/betterend/interfaces/ISlime.java | 10 +- .../interfaces/IdentifiedContext.java | 24 +- .../interfaces/TeleportingEntity.java | 28 +- src/main/java/ru/betterend/item/EndAxe.java | 52 +- .../java/ru/betterend/item/EndHammer.java | 270 ++--- src/main/java/ru/betterend/item/EndHoe.java | 22 +- .../java/ru/betterend/item/EndPickaxe.java | 52 +- .../ru/betterend/item/EternalCrystal.java | 20 +- .../mixin/client/ClientRecipeBookMixin.java | 44 +- .../client/DeserializationContextMixin.java | 46 +- .../client/NamespaceResourceManagerMixin.java | 94 +- .../mixin/common/AbstractBlockMixin.java | 102 +- .../mixin/common/AnvilScreenHandlerMixin.java | 184 ++-- .../mixin/common/BrewingAccessor.java | 32 +- .../mixin/common/EndermanEntityMixin.java | 52 +- .../betterend/mixin/common/EntityMixin.java | 232 ++--- .../mixin/common/IngredientMixin.java | 92 +- .../mixin/common/LivingEntityMixin.java | 94 +- .../mixin/common/ServerPlayerEntityMixin.java | 82 +- .../particle/PaticlePortalSphere.java | 152 +-- .../recipe/builders/AlloyingRecipe.java | 546 +++++----- .../recipe/builders/AnvilSmithingRecipe.java | 482 ++++----- .../recipe/builders/InfusionRecipe.java | 506 ++++----- .../ru/betterend/rituals/EternalRitual.java | 958 +++++++++--------- .../ru/betterend/rituals/InfusionRitual.java | 176 ++-- src/main/java/ru/betterend/util/LangUtil.java | 76 +- src/main/java/ru/betterend/util/Logger.java | 136 +-- .../blockstates/end_portal_block.json | 18 +- .../blockstates/eternal_pedestal.json | 214 ++-- .../blockstates/flavolite_runed.json | 890 ++++++++-------- .../blockstates/flavolite_runed_eternal.json | 890 ++++++++-------- .../blockstates/infusion_pedestal.json | 42 +- .../blockstates/purpur_pedestal.json | 42 +- .../blockstates/quartz_pedestal.json | 42 +- .../betterend/blockstates/violecite.json | 14 +- .../blockstates/violecite_bricks.json | 14 +- .../blockstates/violecite_bricks_slab.json | 30 +- .../blockstates/violecite_bricks_stairs.json | 418 ++++---- .../blockstates/violecite_bricks_wall.json | 180 ++-- .../blockstates/violecite_button.json | 236 ++--- .../blockstates/violecite_pillar.json | 14 +- .../blockstates/violecite_plate.json | 20 +- .../betterend/blockstates/violecite_slab.json | 30 +- .../blockstates/violecite_small_tiles.json | 14 +- .../blockstates/violecite_stairs.json | 418 ++++---- .../betterend/blockstates/violecite_tile.json | 14 +- .../betterend/blockstates/violecite_wall.json | 180 ++-- .../assets/betterend/lang/zh_cn.json | 320 +++--- .../materialmaps/block/aurora_crystal.json | 6 +- .../materialmaps/block/blue_vine_fur.json | 6 +- .../materialmaps/block/blue_vine_lantern.json | 6 +- .../materialmaps/block/bubble_coral.json | 6 +- .../materialmaps/block/creeping_moss.json | 26 +- .../materialmaps/block/cyan_moss.json | 6 +- .../materialmaps/block/dense_vine.json | 26 +- .../materialmaps/block/end_lily.json | 26 +- .../materialmaps/block/flavolite_lantern.json | 10 + .../materialmaps/block/lantern_end_stone.json | 10 + .../block/mossy_glowshroom_fur.json | 6 +- .../block/mossy_glowshroom_hymenophore.json | 6 +- .../block/mossy_glowshroom_sapling.json | 6 +- .../materialmaps/block/tail_moss.json | 6 +- .../materialmaps/block/umbrella_moss.json | 42 +- .../block/umbrella_moss_tall.json | 42 +- .../materialmaps/block/violecite_lantern.json | 10 + .../materialmaps/particle/glowing_sphere.json | 4 +- .../materialmaps/particle/portal_sphere.json | 4 +- .../assets/betterend/materials/glow_10.json | 20 +- .../betterend/materials/glow_20_half.json | 20 +- .../assets/betterend/materials/glow_33.json | 20 +- .../assets/betterend/materials/glow_50.json | 20 +- .../betterend/materials/glow_50_half.json | 20 +- .../assets/betterend/materials/glow_all.json | 20 +- .../betterend/materials/glow_all_half.json | 20 +- .../assets/betterend/materials/glow_inc.json | 20 +- .../betterend/materials/glow_transparent.json | 20 +- .../materials/large_wave_glow_50_half.json | 20 +- .../materials/large_wave_glow_inc.json | 20 +- .../assets/betterend/materials/noao.json | 20 +- .../assets/betterend/materials/noshade.json | 20 +- .../betterend/materials/offset_floor.json | 20 +- .../materials/small_wave_glow_50_half.json | 20 +- .../betterend/materials/wave_glow_33.json | 20 +- .../materials/wave_glow_33_half.json | 20 +- .../materials/wave_glow_50_half.json | 20 +- .../betterend/materials/wave_glow_all.json | 20 +- .../betterend/materials/wave_glow_inc.json | 20 +- .../assets/betterend/materials/waving.json | 20 +- .../betterend/materials/waving_floor.json | 20 +- .../materials/waving_floor_glow_50.json | 20 +- .../materials/waving_floor_glow_50_blue.json | 20 +- .../betterend/materials/waving_large.json | 20 +- .../betterend/materials/waving_small.json | 20 +- .../betterend/materials/waving_wall.json | 20 +- .../materials/waving_wall_glow_all.json | 20 +- .../waving_wall_inverted_glow_all.json | 20 +- .../models/block/aurora_crystal.json | 10 +- .../models/block/aurora_crystal_2.json | 10 +- .../betterend/models/block/blue_vine.json | 10 +- .../betterend/models/block/blue_vine_fur.json | 238 ++--- .../models/block/blue_vine_fur_wall.json | 126 +-- .../models/block/blue_vine_roots.json | 150 +-- .../models/block/blue_vine_seed_0.json | 10 +- .../models/block/blue_vine_seed_1.json | 10 +- .../models/block/blue_vine_seed_2.json | 10 +- .../models/block/blue_vine_seed_3.json | 10 +- .../betterend/models/block/blue_vine_top.json | 150 +-- .../models/block/bubble_coral_1.json | 252 ++--- .../models/block/bubble_coral_2.json | 198 ++-- .../models/block/bubble_coral_3.json | 198 ++-- .../models/block/chorus_nylium_path.json | 14 +- .../models/block/chorus_outer_stairs.json | 16 +- .../models/block/chorus_plant_center.json | 44 +- .../models/block/chorus_plant_flower.json | 100 +- .../block/chorus_plant_flower_open.json | 348 +++---- .../models/block/chorus_plant_roots.json | 96 +- .../models/block/chorus_plant_stem.json | 88 +- .../models/block/chorus_plant_stem_2.json | 88 +- .../models/block/chorus_plant_stem_3.json | 88 +- .../models/block/chorus_plant_stem_4.json | 88 +- .../betterend/models/block/creeping_moss.json | 238 ++--- .../models/block/crop_block_inverted.json | 80 +- .../models/block/cross_inverted.json | 52 +- .../models/block/cross_no_distortion.json | 56 +- .../block/cross_no_distortion_inverted.json | 56 +- .../models/block/crystal_grass_1.json | 250 ++--- .../models/block/crystal_grass_2.json | 212 ++-- .../models/block/crystal_grass_3.json | 98 +- .../models/block/crystal_grass_4.json | 60 +- .../betterend/models/block/cube_noshade.json | 42 +- .../models/block/dense_vine_top.json | 150 +-- .../models/block/end_lily_roots.json | 150 +-- .../models/block/end_lily_seed_0.json | 10 +- .../models/block/end_lily_seed_1.json | 10 +- .../models/block/end_lily_seed_2.json | 10 +- .../models/block/end_lily_seed_3.json | 10 +- .../betterend/models/block/end_lily_stem.json | 10 +- .../betterend/models/block/end_lily_top.json | 182 ++-- .../models/block/end_lily_top_small.json | 122 +-- .../models/block/end_lily_top_small_2.json | 36 +- .../models/block/end_lotus_flower.json | 324 +++--- .../models/block/end_lotus_flower_2.json | 14 +- .../models/block/end_lotus_roots.json | 134 +-- .../models/block/end_lotus_stem.json | 44 +- .../models/block/end_lotus_stem_leaf.json | 66 +- .../models/block/end_lotus_stem_top.json | 68 +- .../models/block/end_lotus_stem_top_leaf.json | 90 +- .../betterend/models/block/end_moss_path.json | 14 +- .../models/block/end_mycelium_path.json | 14 +- .../betterend/models/block/end_portal_ax.json | 30 +- .../betterend/models/block/end_portal_az.json | 30 +- .../models/block/eternal_pedestal_bottom.json | 14 +- .../models/block/eternal_pedestal_column.json | 14 +- .../block/eternal_pedestal_column_top.json | 12 +- .../block/eternal_pedestal_default_1.json | 16 +- .../block/eternal_pedestal_default_2.json | 16 +- .../block/eternal_pedestal_default_3.json | 16 +- .../block/eternal_pedestal_default_4.json | 16 +- .../block/eternal_pedestal_default_5.json | 16 +- .../block/eternal_pedestal_default_6.json | 16 +- .../block/eternal_pedestal_default_7.json | 16 +- .../eternal_pedestal_default_active_1.json | 16 +- .../eternal_pedestal_default_active_2.json | 16 +- .../eternal_pedestal_default_active_3.json | 16 +- .../eternal_pedestal_default_active_4.json | 16 +- .../eternal_pedestal_default_active_5.json | 16 +- .../eternal_pedestal_default_active_6.json | 16 +- .../eternal_pedestal_default_active_7.json | 16 +- .../models/block/eternal_pedestal_pillar.json | 10 +- .../models/block/eternal_pedestal_top_1.json | 14 +- .../models/block/eternal_pedestal_top_2.json | 14 +- .../models/block/eternal_pedestal_top_3.json | 14 +- .../models/block/eternal_pedestal_top_4.json | 14 +- .../models/block/eternal_pedestal_top_5.json | 14 +- .../models/block/eternal_pedestal_top_6.json | 14 +- .../models/block/eternal_pedestal_top_7.json | 14 +- .../block/eternal_pedestal_top_active_1.json | 14 +- .../block/eternal_pedestal_top_active_2.json | 14 +- .../block/eternal_pedestal_top_active_3.json | 14 +- .../block/eternal_pedestal_top_active_4.json | 14 +- .../block/eternal_pedestal_top_active_5.json | 14 +- .../block/eternal_pedestal_top_active_6.json | 14 +- .../block/eternal_pedestal_top_active_7.json | 14 +- .../models/block/flavolite_runed_1.json | 44 +- .../models/block/flavolite_runed_2.json | 44 +- .../models/block/flavolite_runed_3.json | 44 +- .../block/flavolite_runed_active_1.json | 44 +- .../block/flavolite_runed_active_2.json | 44 +- .../block/flavolite_runed_active_3.json | 44 +- .../block/infusion_pedestal_bottom.json | 14 +- .../block/infusion_pedestal_column.json | 14 +- .../block/infusion_pedestal_column_top.json | 12 +- .../block/infusion_pedestal_default.json | 144 +-- .../block/infusion_pedestal_pillar.json | 10 +- .../models/block/infusion_pedestal_top.json | 92 +- .../models/block/mossy_glowshroom_fur.json | 148 +-- .../betterend/models/block/murkweed_01.json | 512 +++++----- .../betterend/models/block/murkweed_02.json | 346 +++---- .../betterend/models/block/murkweed_03.json | 360 +++---- .../assets/betterend/models/block/path.json | 36 +- .../models/block/pedestal_bottom.json | 86 +- .../models/block/pedestal_column.json | 136 +-- .../models/block/pedestal_column_top.json | 86 +- .../models/block/pedestal_default.json | 112 +- .../models/block/pedestal_pillar.json | 36 +- .../betterend/models/block/pedestal_top.json | 62 +- .../betterend/models/block/plane_bottom.json | 32 +- .../models/block/purple_polypore_01.json | 198 ++-- .../models/block/purple_polypore_02.json | 172 ++-- .../models/block/purple_polypore_03.json | 146 +-- .../models/block/purpur_pedestal_bottom.json | 14 +- .../models/block/purpur_pedestal_column.json | 14 +- .../block/purpur_pedestal_column_top.json | 12 +- .../models/block/purpur_pedestal_default.json | 16 +- .../models/block/purpur_pedestal_pillar.json | 10 +- .../models/block/purpur_pedestal_top.json | 14 +- .../models/block/quartz_pedestal_bottom.json | 14 +- .../models/block/quartz_pedestal_column.json | 14 +- .../block/quartz_pedestal_column_top.json | 12 +- .../models/block/quartz_pedestal_default.json | 16 +- .../models/block/quartz_pedestal_pillar.json | 10 +- .../models/block/quartz_pedestal_top.json | 14 +- .../models/block/shadow_berry_01.json | 36 +- .../models/block/shadow_berry_02.json | 88 +- .../models/block/shadow_berry_03.json | 114 +-- .../models/block/shadow_berry_04.json | 114 +-- .../models/block/sided_door_bottom.json | 36 +- .../models/block/sided_door_bottom_rh.json | 36 +- .../models/block/sided_door_top.json | 36 +- .../models/block/sided_door_top_rh.json | 36 +- .../models/block/sided_trapdoor.json | 36 +- .../models/block/test_pillar_top.json | 62 +- .../betterend/models/block/tint_cube.json | 40 +- .../models/block/tint_cube_noshade.json | 42 +- .../models/block/umbrella_moss_bottom.json | 148 +-- .../models/block/umbrella_moss_small.json | 474 ++++----- .../models/block/umbrella_moss_small_2.json | 398 ++++---- .../models/block/umbrella_moss_small_3.json | 320 +++--- .../models/block/umbrella_moss_small_4.json | 242 ++--- .../models/block/umbrella_moss_top.json | 384 +++---- .../models/block/umbrella_moss_top_2.json | 308 +++--- .../models/block/umbrella_moss_top_3.json | 230 ++--- .../betterend/models/block/violecite.json | 12 +- .../models/block/violecite_bricks.json | 12 +- .../block/violecite_bricks_half_slab.json | 16 +- .../block/violecite_bricks_inner_stairs.json | 16 +- .../block/violecite_bricks_outer_stairs.json | 16 +- .../models/block/violecite_bricks_stairs.json | 16 +- .../violecite_bricks_wall_inventory.json | 12 +- .../block/violecite_bricks_wall_post.json | 44 +- .../block/violecite_bricks_wall_side.json | 40 +- .../violecite_bricks_wall_side_tall.json | 40 +- .../models/block/violecite_button.json | 12 +- .../block/violecite_button_inventory.json | 12 +- .../block/violecite_button_pressed.json | 12 +- .../models/block/violecite_half_slab.json | 16 +- .../models/block/violecite_inner_stairs.json | 16 +- .../models/block/violecite_outer_stairs.json | 16 +- .../models/block/violecite_pillar.json | 14 +- .../block/violecite_pressure_plate_down.json | 12 +- .../block/violecite_pressure_plate_up.json | 12 +- .../models/block/violecite_small_tiles.json | 12 +- .../models/block/violecite_stairs.json | 16 +- .../models/block/violecite_tile.json | 12 +- .../block/violecite_wall_inventory.json | 12 +- .../models/block/violecite_wall_post.json | 12 +- .../models/block/violecite_wall_side.json | 12 +- .../block/violecite_wall_side_tall.json | 12 +- .../betterend/models/block/wall_moss_01.json | 190 ++-- .../betterend/models/block/wall_moss_02.json | 124 +-- .../betterend/models/block/wall_moss_03.json | 124 +-- .../betterend/models/item/aeternium_axe.json | 10 +- .../models/item/aeternium_boots.json | 10 +- .../models/item/aeternium_chestplate.json | 10 +- .../models/item/aeternium_hammer.json | 10 +- .../models/item/aeternium_helmet.json | 10 +- .../betterend/models/item/aeternium_hoe.json | 10 +- .../models/item/aeternium_leggings.json | 10 +- .../models/item/aeternium_pickaxe.json | 10 +- .../models/item/aeternium_shovel.json | 10 +- .../models/item/aeternium_sword.json | 10 +- .../betterend/models/item/cave_bush.json | 6 +- .../betterend/models/item/cave_moss.json | 6 +- .../betterend/models/item/cave_moss_path.json | 6 +- .../betterend/models/item/crystal_moss.json | 6 +- .../models/item/crystal_moss_path.json | 6 +- .../betterend/models/item/diamond_hammer.json | 10 +- .../betterend/models/item/end_lotus_stem.json | 6 +- .../models/item/end_portal_block.json | 10 +- .../models/item/eternal_crystal.json | 10 +- .../models/item/eternal_pedestal.json | 6 +- .../models/item/flavolite_runed.json | 6 +- .../models/item/flavolite_runed_eternal.json | 6 +- .../betterend/models/item/golden_hammer.json | 10 +- .../models/item/infusion_pedestal.json | 6 +- .../betterend/models/item/iron_hammer.json | 10 +- .../models/item/netherite_hammer.json | 10 +- .../models/item/purpur_pedestal.json | 6 +- .../models/item/quartz_pedestal.json | 6 +- .../models/item/spawn_egg_dragonfly.json | 6 +- .../models/item/spawn_egg_end_slime.json | 6 +- .../models/item/spawn_egg_shadow_walker.json | 3 + .../betterend/models/item/terminite_axe.json | 10 +- .../models/item/terminite_boots.json | 10 +- .../models/item/terminite_chestplate.json | 10 +- .../models/item/terminite_hammer.json | 10 +- .../models/item/terminite_helmet.json | 10 +- .../betterend/models/item/terminite_hoe.json | 10 +- .../models/item/terminite_leggings.json | 10 +- .../models/item/terminite_pickaxe.json | 10 +- .../models/item/terminite_shovel.json | 10 +- .../models/item/terminite_sword.json | 10 +- .../betterend/models/item/violecite.json | 6 +- .../models/item/violecite_bricks.json | 6 +- .../models/item/violecite_bricks_slab.json | 6 +- .../models/item/violecite_bricks_stairs.json | 6 +- .../models/item/violecite_bricks_wall.json | 6 +- .../models/item/violecite_button.json | 6 +- .../models/item/violecite_pillar.json | 6 +- .../models/item/violecite_plate.json | 6 +- .../betterend/models/item/violecite_slab.json | 6 +- .../models/item/violecite_small_tiles.json | 6 +- .../models/item/violecite_stairs.json | 6 +- .../betterend/models/item/violecite_tile.json | 6 +- .../betterend/models/item/violecite_wall.json | 6 +- .../betterend/particles/portal_sphere.json | 74 +- .../betterend/patterns/block/bookshelf.json | 12 +- .../patterns/block/pattern_barrel_open.json | 16 +- .../patterns/block/pattern_block.json | 10 +- .../block/pattern_block_bottom_top.json | 16 +- .../patterns/block/pattern_block_sided.json | 24 +- .../patterns/block/pattern_button.json | 10 +- .../block/pattern_button_pressed.json | 10 +- .../patterns/block/pattern_door_bottom.json | 14 +- .../block/pattern_door_bottom_hinge.json | 14 +- .../patterns/block/pattern_door_top.json | 14 +- .../block/pattern_door_top_hinge.json | 14 +- .../patterns/block/pattern_empty.json | 10 +- .../block/pattern_fence_gate_closed.json | 12 +- .../block/pattern_fence_gate_open.json | 12 +- .../patterns/block/pattern_fence_post.json | 12 +- .../patterns/block/pattern_fence_side.json | 12 +- .../patterns/block/pattern_inner_stairs.json | 14 +- .../patterns/block/pattern_ladder.json | 12 +- .../patterns/block/pattern_outer_stairs.json | 14 +- .../block/pattern_pedestal_bottom.json | 14 +- .../block/pattern_pedestal_column.json | 14 +- .../block/pattern_pedestal_column_top.json | 12 +- .../block/pattern_pedestal_default.json | 16 +- .../block/pattern_pedestal_pillar.json | 10 +- .../patterns/block/pattern_pedestal_top.json | 14 +- .../patterns/block/pattern_pillar.json | 12 +- .../block/pattern_pressure_plate_down.json | 10 +- .../block/pattern_pressure_plate_up.json | 10 +- .../patterns/block/pattern_sapling.json | 12 +- .../patterns/block/pattern_slab.json | 14 +- .../patterns/block/pattern_stairs.json | 14 +- .../patterns/block/pattern_trapdoor.json | 14 +- .../block/pattern_wall_gate_closed.json | 12 +- .../block/pattern_wall_gate_open.json | 12 +- .../block/pattern_wall_inventory.json | 10 +- .../patterns/block/pattern_wall_post.json | 10 +- .../patterns/block/pattern_wall_side.json | 10 +- .../block/pattern_wall_side_tall.json | 10 +- .../patterns/block/stone_lantern_ceil.json | 155 +++ .../patterns/block/stone_lantern_floor.json | 155 +++ .../patterns/blockstate/pattern_barrel.json | 112 +- .../patterns/blockstate/pattern_block.json | 12 +- .../patterns/blockstate/pattern_button.json | 234 ++--- .../patterns/blockstate/pattern_door.json | 248 ++--- .../patterns/blockstate/pattern_fence.json | 96 +- .../blockstate/pattern_fence_gate.json | 160 +-- .../patterns/blockstate/pattern_ladder.json | 38 +- .../patterns/blockstate/pattern_pedestal.json | 42 +- .../patterns/blockstate/pattern_pillar.json | 12 +- .../blockstate/pattern_pressure_plate.json | 18 +- .../patterns/blockstate/pattern_sapling.json | 8 +- .../patterns/blockstate/pattern_slab.json | 28 +- .../patterns/blockstate/pattern_stairs.json | 416 ++++---- .../patterns/blockstate/pattern_trapdoor.json | 154 +-- .../patterns/blockstate/pattern_wall.json | 178 ++-- .../patterns/blockstate/stone_lantern.json | 6 + .../patterns/item/pattern_block_item.json | 12 +- .../patterns/item/pattern_button.json | 10 +- .../patterns/item/pattern_chest.json | 12 +- .../patterns/item/pattern_fence.json | 12 +- .../betterend/patterns/item/pattern_item.json | 12 +- .../betterend/patterns/item/pattern_wall.json | 10 +- .../betterend/shaders/material/glow_10.frag | 12 +- .../shaders/material/glow_20_half.frag | 16 +- .../betterend/shaders/material/glow_33.frag | 12 +- .../shaders/material/glow_33_half.frag | 12 +- .../betterend/shaders/material/glow_50.frag | 12 +- .../shaders/material/glow_50_blue.frag | 16 +- .../shaders/material/glow_50_half.frag | 12 +- .../betterend/shaders/material/glow_all.frag | 12 +- .../shaders/material/glow_all_half.frag | 12 +- .../betterend/shaders/material/glow_inc.frag | 14 +- .../shaders/material/glow_transparent.frag | 16 +- .../shaders/material/offset_floor.vert | 36 +- .../shaders/material/small_wave.vert | 48 +- .../betterend/shaders/material/wall_wave.vert | 54 +- .../shaders/material/wall_wave_inverted.vert | 54 +- .../betterend/shaders/material/wave.vert | 52 +- .../shaders/material/wave_floor.vert | 54 +- .../shaders/material/wave_large.vert | 48 +- .../entity/shadow_walker/shadow_walker_1.ogg | Bin 0 -> 103524 bytes .../entity/shadow_walker/shadow_walker_2.ogg | Bin 0 -> 110694 bytes .../shadow_walker/shadow_walker_damage.ogg | Bin 0 -> 26038 bytes .../shadow_walker/shadow_walker_death.ogg | Bin 0 -> 60539 bytes .../block/andesite_lantern_bottom.png | Bin 0 -> 2403 bytes .../textures/block/andesite_lantern_side.png | Bin 0 -> 2208 bytes .../textures/block/andesite_lantern_top.png | Bin 0 -> 2356 bytes .../block/blackstone_lantern_bottom.png | Bin 0 -> 2309 bytes .../block/blackstone_lantern_side.png | Bin 0 -> 2192 bytes .../textures/block/blackstone_lantern_top.png | Bin 0 -> 2409 bytes .../textures/block/diorite_lantern_bottom.png | Bin 0 -> 2430 bytes .../textures/block/diorite_lantern_side.png | Bin 0 -> 2264 bytes .../textures/block/diorite_lantern_top.png | Bin 0 -> 2354 bytes .../textures/block/end_portal.png.mcmeta | 10 +- .../block/end_stone_lantern_bottom.png | Bin 0 -> 2080 bytes .../textures/block/end_stone_lantern_side.png | Bin 0 -> 2012 bytes .../textures/block/end_stone_lantern_top.png | Bin 0 -> 2223 bytes .../end_stone_smelter_front_on.png.mcmeta | 24 +- .../block/flavolite_lantern_bottom.png | Bin 0 -> 2098 bytes .../textures/block/flavolite_lantern_side.png | Bin 0 -> 2212 bytes .../textures/block/flavolite_lantern_top.png | Bin 0 -> 2396 bytes .../textures/block/granite_lantern_bottom.png | Bin 0 -> 2339 bytes .../textures/block/granite_lantern_side.png | Bin 0 -> 2168 bytes .../textures/block/granite_lantern_top.png | Bin 0 -> 2436 bytes .../textures/block/purpur_lantern_bottom.png | Bin 0 -> 2282 bytes .../textures/block/purpur_lantern_side.png | Bin 0 -> 2209 bytes .../textures/block/purpur_lantern_top.png | Bin 0 -> 2478 bytes .../textures/block/quartz_lantern_bottom.png | Bin 0 -> 2243 bytes .../textures/block/quartz_lantern_side.png | Bin 0 -> 2133 bytes .../textures/block/quartz_lantern_top.png | Bin 0 -> 2420 bytes .../block/violecite_lantern_bottom.png | Bin 0 -> 2370 bytes .../textures/block/violecite_lantern_side.png | Bin 0 -> 2218 bytes .../textures/block/violecite_lantern_top.png | Bin 0 -> 2315 bytes .../textures/entity/shadow_walker.png | Bin 0 -> 3766 bytes .../minecraft/blockstates/chorus_flower.json | 42 +- .../minecraft/blockstates/chorus_plant.json | 136 +-- .../data/fabric/tags/items/hammers.json | 20 +- 548 files changed, 17517 insertions(+), 16862 deletions(-) create mode 100644 src/main/java/ru/betterend/blocks/basis/BlockStoneLantern.java create mode 100644 src/main/java/ru/betterend/entity/EntityShadowWalker.java create mode 100644 src/main/java/ru/betterend/entity/render/RendererEntityShadowWalker.java create mode 100644 src/main/resources/assets/betterend/materialmaps/block/flavolite_lantern.json create mode 100644 src/main/resources/assets/betterend/materialmaps/block/lantern_end_stone.json create mode 100644 src/main/resources/assets/betterend/materialmaps/block/violecite_lantern.json create mode 100644 src/main/resources/assets/betterend/models/item/spawn_egg_shadow_walker.json create mode 100644 src/main/resources/assets/betterend/patterns/block/stone_lantern_ceil.json create mode 100644 src/main/resources/assets/betterend/patterns/block/stone_lantern_floor.json create mode 100644 src/main/resources/assets/betterend/patterns/blockstate/stone_lantern.json create mode 100644 src/main/resources/assets/betterend/sounds/entity/shadow_walker/shadow_walker_1.ogg create mode 100644 src/main/resources/assets/betterend/sounds/entity/shadow_walker/shadow_walker_2.ogg create mode 100644 src/main/resources/assets/betterend/sounds/entity/shadow_walker/shadow_walker_damage.ogg create mode 100644 src/main/resources/assets/betterend/sounds/entity/shadow_walker/shadow_walker_death.ogg create mode 100644 src/main/resources/assets/betterend/textures/block/andesite_lantern_bottom.png create mode 100644 src/main/resources/assets/betterend/textures/block/andesite_lantern_side.png create mode 100644 src/main/resources/assets/betterend/textures/block/andesite_lantern_top.png create mode 100644 src/main/resources/assets/betterend/textures/block/blackstone_lantern_bottom.png create mode 100644 src/main/resources/assets/betterend/textures/block/blackstone_lantern_side.png create mode 100644 src/main/resources/assets/betterend/textures/block/blackstone_lantern_top.png create mode 100644 src/main/resources/assets/betterend/textures/block/diorite_lantern_bottom.png create mode 100644 src/main/resources/assets/betterend/textures/block/diorite_lantern_side.png create mode 100644 src/main/resources/assets/betterend/textures/block/diorite_lantern_top.png create mode 100644 src/main/resources/assets/betterend/textures/block/end_stone_lantern_bottom.png create mode 100644 src/main/resources/assets/betterend/textures/block/end_stone_lantern_side.png create mode 100644 src/main/resources/assets/betterend/textures/block/end_stone_lantern_top.png create mode 100644 src/main/resources/assets/betterend/textures/block/flavolite_lantern_bottom.png create mode 100644 src/main/resources/assets/betterend/textures/block/flavolite_lantern_side.png create mode 100644 src/main/resources/assets/betterend/textures/block/flavolite_lantern_top.png create mode 100644 src/main/resources/assets/betterend/textures/block/granite_lantern_bottom.png create mode 100644 src/main/resources/assets/betterend/textures/block/granite_lantern_side.png create mode 100644 src/main/resources/assets/betterend/textures/block/granite_lantern_top.png create mode 100644 src/main/resources/assets/betterend/textures/block/purpur_lantern_bottom.png create mode 100644 src/main/resources/assets/betterend/textures/block/purpur_lantern_side.png create mode 100644 src/main/resources/assets/betterend/textures/block/purpur_lantern_top.png create mode 100644 src/main/resources/assets/betterend/textures/block/quartz_lantern_bottom.png create mode 100644 src/main/resources/assets/betterend/textures/block/quartz_lantern_side.png create mode 100644 src/main/resources/assets/betterend/textures/block/quartz_lantern_top.png create mode 100644 src/main/resources/assets/betterend/textures/block/violecite_lantern_bottom.png create mode 100644 src/main/resources/assets/betterend/textures/block/violecite_lantern_side.png create mode 100644 src/main/resources/assets/betterend/textures/block/violecite_lantern_top.png create mode 100644 src/main/resources/assets/betterend/textures/entity/shadow_walker.png diff --git a/.gitignore b/.gitignore index 6019df58..514dd716 100644 --- a/.gitignore +++ b/.gitignore @@ -1,31 +1,31 @@ -# gradle - -.gradle/ -build/ -out/ -classes/ - -# eclipse - -*.launch - -# idea - -.idea/ -*.iml -*.ipr -*.iws - -# vscode - -.settings/ -.vscode/ -bin/ -.classpath -.project - -# fabric - -run/ -output/ -*.log +# gradle + +.gradle/ +build/ +out/ +classes/ + +# eclipse + +*.launch + +# idea + +.idea/ +*.iml +*.ipr +*.iws + +# vscode + +.settings/ +.vscode/ +bin/ +.classpath +.project + +# fabric + +run/ +output/ +*.log diff --git a/README.md b/README.md index a8b33f9d..50b3ec8e 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,17 @@ -[![](https://jitpack.io/v/paulevsGitch/BetterEnd.svg)](https://jitpack.io/#paulevsGitch/BetterEnd) -# Better End -Better End Mod for Fabric, MC 1.16.3 - -Importing: -* Clone repo -* Edit gradle.properties if necessary -* Run command line in folder: gradlew genSources eclipse (or Another-IDE-Name) -* Import project to IDE - -Building: -* Clone repo -* Run command line in folder: gradlew build -* Mod .jar will be in ./build/libs - -Mappings: -* https://modmuss50.me/fabric.html?&version=1.16.3 +[![](https://jitpack.io/v/paulevsGitch/BetterEnd.svg)](https://jitpack.io/#paulevsGitch/BetterEnd) +# Better End +Better End Mod for Fabric, MC 1.16.3 + +Importing: +* Clone repo +* Edit gradle.properties if necessary +* Run command line in folder: gradlew genSources eclipse (or Another-IDE-Name) +* Import project to IDE + +Building: +* Clone repo +* Run command line in folder: gradlew build +* Mod .jar will be in ./build/libs + +Mappings: +* https://modmuss50.me/fabric.html?&version=1.16.3 diff --git a/build.gradle b/build.gradle index df28b960..c6649214 100644 --- a/build.gradle +++ b/build.gradle @@ -1,93 +1,93 @@ -plugins { - id 'fabric-loom' version '0.5-SNAPSHOT' - id 'maven-publish' -} - -sourceCompatibility = JavaVersion.VERSION_1_8 -targetCompatibility = JavaVersion.VERSION_1_8 - -archivesBaseName = project.archives_base_name -version = project.mod_version -group = project.maven_group - -repositories { - maven { url "https://maven.dblsaiko.net/" } - maven { url "http://server.bbkr.space:8081/artifactory/libs-release/" } - maven { url "https://maven.fabricmc.net/" } - maven { url 'https://jitpack.io' } - jcenter() -} - -dependencies { - minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings "net.fabricmc:yarn:${project.minecraft_version}+build.${project.yarn_mappings}:v2" - modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" - - optional "me.shedaniel:RoughlyEnoughItems:${project.rei_version}" - optional "me.shedaniel:RoughlyEnoughItems-api:${project.rei_version}" - optional "grondag:canvas-mc116:${project.canvas_version}" -} - -def optional(String dep) { - dependencies.modRuntime (dep) { - exclude group: "net.fabricmc.fabric-api" - exclude module: "fabric-loader" - } - dependencies.modCompileOnly (dep) { - exclude group: "net.fabricmc.fabric-api" - exclude module: "fabric-loader" - } -} - -processResources { - inputs.property "version", project.version - - from(sourceSets.main.resources.srcDirs) { - include "fabric.mod.json" - expand "version": project.version - } - - from(sourceSets.main.resources.srcDirs) { - exclude "fabric.mod.json" - } -} - -// ensure that the encoding is set to UTF-8, no matter what the system default is -// this fixes some edge cases with special characters not displaying correctly -// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html -tasks.withType(JavaCompile) { - options.encoding = "UTF-8" -} - -// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task -// if it is present. -// If you remove this task, sources will not be generated. -task sourcesJar(type: Jar, dependsOn: classes) { - classifier = "sources" - from sourceSets.main.allSource -} - -jar { - from "LICENSE" -} - -// configure the maven publication -publishing { - publications { - mavenJava(MavenPublication) { - artifact(remapJar) { - builtBy remapJar - } - artifact(sourcesJar) { - builtBy remapSourcesJar - } - } - } - - // select the repositories you want to publish to - repositories { - // uncomment to publish to the local maven - // mavenLocal() - } -} +plugins { + id 'fabric-loom' version '0.5-SNAPSHOT' + id 'maven-publish' +} + +sourceCompatibility = JavaVersion.VERSION_1_8 +targetCompatibility = JavaVersion.VERSION_1_8 + +archivesBaseName = project.archives_base_name +version = project.mod_version +group = project.maven_group + +repositories { + maven { url "https://maven.dblsaiko.net/" } + maven { url "http://server.bbkr.space:8081/artifactory/libs-release/" } + maven { url "https://maven.fabricmc.net/" } + maven { url 'https://jitpack.io' } + jcenter() +} + +dependencies { + minecraft "com.mojang:minecraft:${project.minecraft_version}" + mappings "net.fabricmc:yarn:${project.minecraft_version}+build.${project.yarn_mappings}:v2" + modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" + + optional "me.shedaniel:RoughlyEnoughItems:${project.rei_version}" + optional "me.shedaniel:RoughlyEnoughItems-api:${project.rei_version}" + optional "grondag:canvas-mc116:${project.canvas_version}" +} + +def optional(String dep) { + dependencies.modRuntime (dep) { + exclude group: "net.fabricmc.fabric-api" + exclude module: "fabric-loader" + } + dependencies.modCompileOnly (dep) { + exclude group: "net.fabricmc.fabric-api" + exclude module: "fabric-loader" + } +} + +processResources { + inputs.property "version", project.version + + from(sourceSets.main.resources.srcDirs) { + include "fabric.mod.json" + expand "version": project.version + } + + from(sourceSets.main.resources.srcDirs) { + exclude "fabric.mod.json" + } +} + +// ensure that the encoding is set to UTF-8, no matter what the system default is +// this fixes some edge cases with special characters not displaying correctly +// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html +tasks.withType(JavaCompile) { + options.encoding = "UTF-8" +} + +// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task +// if it is present. +// If you remove this task, sources will not be generated. +task sourcesJar(type: Jar, dependsOn: classes) { + classifier = "sources" + from sourceSets.main.allSource +} + +jar { + from "LICENSE" +} + +// configure the maven publication +publishing { + publications { + mavenJava(MavenPublication) { + artifact(remapJar) { + builtBy remapJar + } + artifact(sourcesJar) { + builtBy remapSourcesJar + } + } + } + + // select the repositories you want to publish to + repositories { + // uncomment to publish to the local maven + // mavenLocal() + } +} diff --git a/gradle.properties b/gradle.properties index d72bf12a..05790c36 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,21 +1,21 @@ -# Done to increase the memory available to gradle. - org.gradle.jvmargs=-Xmx2G - -# Fabric Properties - # check these on https://fabricmc.net/use - minecraft_version = 1.16.4 - yarn_mappings = 1 - loader_version = 0.10.6+build.214 - -# Mod Properties - mod_version = 0.6.0-beta - maven_group = ru.betterend - archives_base_name = better-end - -# Dependencies - # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api - fabric_version = 0.25.1+build.416-1.16 - cloth_config_version = 4.8.2 - cloth_events_version = 1.4.8 - canvas_version = 1.0.+ +# Done to increase the memory available to gradle. + org.gradle.jvmargs=-Xmx2G + +# Fabric Properties + # check these on https://fabricmc.net/use + minecraft_version = 1.16.4 + yarn_mappings = 1 + loader_version = 0.10.6+build.214 + +# Mod Properties + mod_version = 0.6.0-beta + maven_group = ru.betterend + archives_base_name = better-end + +# Dependencies + # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api + fabric_version = 0.25.1+build.416-1.16 + cloth_config_version = 4.8.2 + cloth_events_version = 1.4.8 + canvas_version = 1.0.+ rei_version = 5.6.2 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 622ab64a..99c200fc 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 2fe81a7d..accc54f8 100644 --- a/gradlew +++ b/gradlew @@ -1,183 +1,183 @@ -#!/usr/bin/env sh - -# -# Copyright 2015 the original author or authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -############################################################################## -## -## Gradle start up script for UN*X -## -############################################################################## - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$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 "$*" -} - -die () { - echo - echo "$*" - echo - exit 1 -} - -# 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 - ;; - 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" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac -fi - -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -exec "$JAVACMD" "$@" +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$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 "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# 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 + ;; + 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" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 62bd9b9c..9109989e 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,103 +1,103 @@ -@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%" == "0" goto init - -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 init - -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 - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -: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 %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="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! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@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%" == "0" goto init + +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 init + +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 + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +: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 %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="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! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/json/block/%name%.json b/json/block/%name%.json index 15906496..10f7880a 100644 --- a/json/block/%name%.json +++ b/json/block/%name%.json @@ -1,6 +1,6 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "betterend:block/%name%" - } +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/%name%" + } } \ No newline at end of file diff --git a/json/block/%name%_brick_half_slab.json b/json/block/%name%_brick_half_slab.json index 7a4235f3..4a5be990 100644 --- a/json/block/%name%_brick_half_slab.json +++ b/json/block/%name%_brick_half_slab.json @@ -1,8 +1,8 @@ -{ - "parent": "block/slab", - "textures": { - "bottom": "betterend:block/%name%_bricks", - "side": "betterend:block/%name%_bricks", - "top": "betterend:block/%name%_bricks" - } +{ + "parent": "block/slab", + "textures": { + "bottom": "betterend:block/%name%_bricks", + "side": "betterend:block/%name%_bricks", + "top": "betterend:block/%name%_bricks" + } } \ No newline at end of file diff --git a/json/block/%name%_brick_inner_stairs.json b/json/block/%name%_brick_inner_stairs.json index cb848187..98c27d1f 100644 --- a/json/block/%name%_brick_inner_stairs.json +++ b/json/block/%name%_brick_inner_stairs.json @@ -1,8 +1,8 @@ -{ - "parent": "block/inner_stairs", - "textures": { - "bottom": "betterend:block/%name%_bricks", - "side": "betterend:block/%name%_bricks", - "top": "betterend:block/%name%_bricks" - } +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "betterend:block/%name%_bricks", + "side": "betterend:block/%name%_bricks", + "top": "betterend:block/%name%_bricks" + } } \ No newline at end of file diff --git a/json/block/%name%_brick_outer_stairs.json b/json/block/%name%_brick_outer_stairs.json index f24d5f40..5fe881ad 100644 --- a/json/block/%name%_brick_outer_stairs.json +++ b/json/block/%name%_brick_outer_stairs.json @@ -1,8 +1,8 @@ -{ - "parent": "block/outer_stairs", - "textures": { - "bottom": "betterend:block/%name%_bricks", - "side": "betterend:block/%name%_bricks", - "top": "betterend:block/%name%_bricks" - } +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "betterend:block/%name%_bricks", + "side": "betterend:block/%name%_bricks", + "top": "betterend:block/%name%_bricks" + } } \ No newline at end of file diff --git a/json/block/%name%_brick_stairs.json b/json/block/%name%_brick_stairs.json index 938c1cb5..ee695265 100644 --- a/json/block/%name%_brick_stairs.json +++ b/json/block/%name%_brick_stairs.json @@ -1,8 +1,8 @@ -{ - "parent": "block/stairs", - "textures": { - "bottom": "betterend:block/%name%_bricks", - "side": "betterend:block/%name%_bricks", - "top": "betterend:block/%name%_bricks" - } +{ + "parent": "block/stairs", + "textures": { + "bottom": "betterend:block/%name%_bricks", + "side": "betterend:block/%name%_bricks", + "top": "betterend:block/%name%_bricks" + } } \ No newline at end of file diff --git a/json/block/%name%_brick_wall_inventory.json b/json/block/%name%_brick_wall_inventory.json index 2bd3956f..f5616dc9 100644 --- a/json/block/%name%_brick_wall_inventory.json +++ b/json/block/%name%_brick_wall_inventory.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "betterend:block/%name%_bricks" - } +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "betterend:block/%name%_bricks" + } } \ No newline at end of file diff --git a/json/block/%name%_brick_wall_post.json b/json/block/%name%_brick_wall_post.json index 5816f7ae..3e23f8a3 100644 --- a/json/block/%name%_brick_wall_post.json +++ b/json/block/%name%_brick_wall_post.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "betterend:block/%name%_bricks" - } +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "betterend:block/%name%_bricks" + } } \ No newline at end of file diff --git a/json/block/%name%_brick_wall_side.json b/json/block/%name%_brick_wall_side.json index f9da149c..e95d0502 100644 --- a/json/block/%name%_brick_wall_side.json +++ b/json/block/%name%_brick_wall_side.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "betterend:block/%name%_bricks" - } +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "betterend:block/%name%_bricks" + } } \ No newline at end of file diff --git a/json/block/%name%_brick_wall_side_tall.json b/json/block/%name%_brick_wall_side_tall.json index dc1b0743..7323cbfb 100644 --- a/json/block/%name%_brick_wall_side_tall.json +++ b/json/block/%name%_brick_wall_side_tall.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "betterend:block/%name%_bricks" - } +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "betterend:block/%name%_bricks" + } } \ No newline at end of file diff --git a/json/block/%name%_bricks.json b/json/block/%name%_bricks.json index f218c0fe..5f68cf77 100644 --- a/json/block/%name%_bricks.json +++ b/json/block/%name%_bricks.json @@ -1,6 +1,6 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "betterend:block/%name%_bricks" - } +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/%name%_bricks" + } } \ No newline at end of file diff --git a/json/block/%name%_button.json b/json/block/%name%_button.json index a2e8c3ce..4a465cf5 100644 --- a/json/block/%name%_button.json +++ b/json/block/%name%_button.json @@ -1,6 +1,6 @@ -{ - "parent": "block/button", - "textures": { - "texture": "betterend:block/%name%" - } +{ + "parent": "block/button", + "textures": { + "texture": "betterend:block/%name%" + } } \ No newline at end of file diff --git a/json/block/%name%_button_inventory.json b/json/block/%name%_button_inventory.json index 42b61783..e04a286b 100644 --- a/json/block/%name%_button_inventory.json +++ b/json/block/%name%_button_inventory.json @@ -1,6 +1,6 @@ -{ - "parent": "block/button_inventory", - "textures": { - "texture": "betterend:block/%name%" - } +{ + "parent": "block/button_inventory", + "textures": { + "texture": "betterend:block/%name%" + } } \ No newline at end of file diff --git a/json/block/%name%_button_pressed.json b/json/block/%name%_button_pressed.json index d0094062..5afc1c34 100644 --- a/json/block/%name%_button_pressed.json +++ b/json/block/%name%_button_pressed.json @@ -1,6 +1,6 @@ -{ - "parent": "block/button_pressed", - "textures": { - "texture": "betterend:block/%name%" - } +{ + "parent": "block/button_pressed", + "textures": { + "texture": "betterend:block/%name%" + } } \ No newline at end of file diff --git a/json/block/%name%_half_slab.json b/json/block/%name%_half_slab.json index 9d5489c1..afe17edd 100644 --- a/json/block/%name%_half_slab.json +++ b/json/block/%name%_half_slab.json @@ -1,8 +1,8 @@ -{ - "parent": "block/slab", - "textures": { - "bottom": "betterend:block/%name%", - "side": "betterend:block/%name%", - "top": "betterend:block/%name%" - } +{ + "parent": "block/slab", + "textures": { + "bottom": "betterend:block/%name%", + "side": "betterend:block/%name%", + "top": "betterend:block/%name%" + } } \ No newline at end of file diff --git a/json/block/%name%_inner_stairs.json b/json/block/%name%_inner_stairs.json index e95454c6..f7f22430 100644 --- a/json/block/%name%_inner_stairs.json +++ b/json/block/%name%_inner_stairs.json @@ -1,8 +1,8 @@ -{ - "parent": "block/inner_stairs", - "textures": { - "bottom": "betterend:block/%name%", - "side": "betterend:block/%name%", - "top": "betterend:block/%name%" - } +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "betterend:block/%name%", + "side": "betterend:block/%name%", + "top": "betterend:block/%name%" + } } \ No newline at end of file diff --git a/json/block/%name%_outer_stairs.json b/json/block/%name%_outer_stairs.json index 670e267d..2c6740d1 100644 --- a/json/block/%name%_outer_stairs.json +++ b/json/block/%name%_outer_stairs.json @@ -1,8 +1,8 @@ -{ - "parent": "block/outer_stairs", - "textures": { - "bottom": "betterend:block/%name%", - "side": "betterend:block/%name%", - "top": "betterend:block/%name%" - } +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "betterend:block/%name%", + "side": "betterend:block/%name%", + "top": "betterend:block/%name%" + } } \ No newline at end of file diff --git a/json/block/%name%_pillar.json b/json/block/%name%_pillar.json index 837248a3..abb46a9d 100644 --- a/json/block/%name%_pillar.json +++ b/json/block/%name%_pillar.json @@ -1,7 +1,7 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "end": "betterend:block/%name%_pillar_top", - "side": "betterend:block/%name%_pillar_side" - } +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "betterend:block/%name%_pillar_top", + "side": "betterend:block/%name%_pillar_side" + } } \ No newline at end of file diff --git a/json/block/%name%_pressure_plate_down.json b/json/block/%name%_pressure_plate_down.json index ef2fec3b..0836b6f5 100644 --- a/json/block/%name%_pressure_plate_down.json +++ b/json/block/%name%_pressure_plate_down.json @@ -1,6 +1,6 @@ -{ - "parent": "block/pressure_plate_down", - "textures": { - "texture": "betterend:block/%name%" - } +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "betterend:block/%name%" + } } \ No newline at end of file diff --git a/json/block/%name%_pressure_plate_up.json b/json/block/%name%_pressure_plate_up.json index 9fe8a247..655f909b 100644 --- a/json/block/%name%_pressure_plate_up.json +++ b/json/block/%name%_pressure_plate_up.json @@ -1,6 +1,6 @@ -{ - "parent": "block/pressure_plate_up", - "textures": { - "texture": "betterend:block/%name%" - } +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "betterend:block/%name%" + } } \ No newline at end of file diff --git a/json/block/%name%_small_tiles.json b/json/block/%name%_small_tiles.json index a0c1a8eb..b81bf3b0 100644 --- a/json/block/%name%_small_tiles.json +++ b/json/block/%name%_small_tiles.json @@ -1,6 +1,6 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "betterend:block/%name%_small_tiles" - } +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/%name%_small_tiles" + } } \ No newline at end of file diff --git a/json/block/%name%_stairs.json b/json/block/%name%_stairs.json index 61115016..1aee442b 100644 --- a/json/block/%name%_stairs.json +++ b/json/block/%name%_stairs.json @@ -1,8 +1,8 @@ -{ - "parent": "block/stairs", - "textures": { - "bottom": "betterend:block/%name%", - "side": "betterend:block/%name%", - "top": "betterend:block/%name%" - } +{ + "parent": "block/stairs", + "textures": { + "bottom": "betterend:block/%name%", + "side": "betterend:block/%name%", + "top": "betterend:block/%name%" + } } \ No newline at end of file diff --git a/json/block/%name%_tile.json b/json/block/%name%_tile.json index 632959b1..211afd9d 100644 --- a/json/block/%name%_tile.json +++ b/json/block/%name%_tile.json @@ -1,6 +1,6 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "betterend:block/%name%_tile" - } +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/%name%_tile" + } } \ No newline at end of file diff --git a/json/block/%name%_wall_inventory.json b/json/block/%name%_wall_inventory.json index fdb5d169..35d05c72 100644 --- a/json/block/%name%_wall_inventory.json +++ b/json/block/%name%_wall_inventory.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "betterend:block/%name%" - } +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "betterend:block/%name%" + } } \ No newline at end of file diff --git a/json/block/%name%_wall_post.json b/json/block/%name%_wall_post.json index 2c3195b1..f668ca4b 100644 --- a/json/block/%name%_wall_post.json +++ b/json/block/%name%_wall_post.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "betterend:block/%name%" - } +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "betterend:block/%name%" + } } \ No newline at end of file diff --git a/json/block/%name%_wall_side.json b/json/block/%name%_wall_side.json index 2c228e96..6fc8de4b 100644 --- a/json/block/%name%_wall_side.json +++ b/json/block/%name%_wall_side.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "betterend:block/%name%" - } +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "betterend:block/%name%" + } } \ No newline at end of file diff --git a/json/block/%name%_wall_side_tall.json b/json/block/%name%_wall_side_tall.json index 4eeefe22..9570ac1a 100644 --- a/json/block/%name%_wall_side_tall.json +++ b/json/block/%name%_wall_side_tall.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "betterend:block/%name%" - } +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "betterend:block/%name%" + } } \ No newline at end of file diff --git a/json/blockstates/%name%.json b/json/blockstates/%name%.json index 79dd6729..ef978798 100644 --- a/json/blockstates/%name%.json +++ b/json/blockstates/%name%.json @@ -1,7 +1,7 @@ -{ - "variants": { - "": { - "model": "betterend:block/%name%" - } - } +{ + "variants": { + "": { + "model": "betterend:block/%name%" + } + } } \ No newline at end of file diff --git a/json/blockstates/%name%_brick_slab.json b/json/blockstates/%name%_brick_slab.json index 582099a0..d5a6bf3e 100644 --- a/json/blockstates/%name%_brick_slab.json +++ b/json/blockstates/%name%_brick_slab.json @@ -1,15 +1,15 @@ -{ - "variants": { - "type=bottom": { - "model": "betterend:block/%name%_brick_half_slab" - }, - "type=double": { - "model": "betterend:block/%name%_bricks" - }, - "type=top": { - "model": "betterend:block/%name%_brick_half_slab", - "uvlock": true, - "x": 180 - } - } +{ + "variants": { + "type=bottom": { + "model": "betterend:block/%name%_brick_half_slab" + }, + "type=double": { + "model": "betterend:block/%name%_bricks" + }, + "type=top": { + "model": "betterend:block/%name%_brick_half_slab", + "uvlock": true, + "x": 180 + } + } } \ No newline at end of file diff --git a/json/blockstates/%name%_brick_stairs.json b/json/blockstates/%name%_brick_stairs.json index 85e24d01..97fbabb4 100644 --- a/json/blockstates/%name%_brick_stairs.json +++ b/json/blockstates/%name%_brick_stairs.json @@ -1,209 +1,209 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "betterend:block/%name%_brick_inner_stairs", - "uvlock": true, - "y": 270 - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "betterend:block/%name%_brick_inner_stairs" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "betterend:block/%name%_brick_outer_stairs", - "uvlock": true, - "y": 270 - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "betterend:block/%name%_brick_outer_stairs" - }, - "facing=east,half=bottom,shape=straight": { - "model": "betterend:block/%name%_brick_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "betterend:block/%name%_brick_inner_stairs", - "uvlock": true, - "x": 180 - }, - "facing=east,half=top,shape=inner_right": { - "model": "betterend:block/%name%_brick_inner_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=east,half=top,shape=outer_left": { - "model": "betterend:block/%name%_brick_outer_stairs", - "uvlock": true, - "x": 180 - }, - "facing=east,half=top,shape=outer_right": { - "model": "betterend:block/%name%_brick_outer_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=east,half=top,shape=straight": { - "model": "betterend:block/%name%_brick_stairs", - "uvlock": true, - "x": 180 - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "betterend:block/%name%_brick_inner_stairs", - "uvlock": true, - "y": 180 - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "betterend:block/%name%_brick_inner_stairs", - "uvlock": true, - "y": 270 - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "betterend:block/%name%_brick_outer_stairs", - "uvlock": true, - "y": 180 - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "betterend:block/%name%_brick_outer_stairs", - "uvlock": true, - "y": 270 - }, - "facing=north,half=bottom,shape=straight": { - "model": "betterend:block/%name%_brick_stairs", - "uvlock": true, - "y": 270 - }, - "facing=north,half=top,shape=inner_left": { - "model": "betterend:block/%name%_brick_inner_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=north,half=top,shape=inner_right": { - "model": "betterend:block/%name%_brick_inner_stairs", - "uvlock": true, - "x": 180 - }, - "facing=north,half=top,shape=outer_left": { - "model": "betterend:block/%name%_brick_outer_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=north,half=top,shape=outer_right": { - "model": "betterend:block/%name%_brick_outer_stairs", - "uvlock": true, - "x": 180 - }, - "facing=north,half=top,shape=straight": { - "model": "betterend:block/%name%_brick_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "betterend:block/%name%_brick_inner_stairs" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "betterend:block/%name%_brick_inner_stairs", - "uvlock": true, - "y": 90 - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "betterend:block/%name%_brick_outer_stairs" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "betterend:block/%name%_brick_outer_stairs", - "uvlock": true, - "y": 90 - }, - "facing=south,half=bottom,shape=straight": { - "model": "betterend:block/%name%_brick_stairs", - "uvlock": true, - "y": 90 - }, - "facing=south,half=top,shape=inner_left": { - "model": "betterend:block/%name%_brick_inner_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=south,half=top,shape=inner_right": { - "model": "betterend:block/%name%_brick_inner_stairs", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=south,half=top,shape=outer_left": { - "model": "betterend:block/%name%_brick_outer_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=south,half=top,shape=outer_right": { - "model": "betterend:block/%name%_brick_outer_stairs", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=south,half=top,shape=straight": { - "model": "betterend:block/%name%_brick_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "betterend:block/%name%_brick_inner_stairs", - "uvlock": true, - "y": 90 - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "betterend:block/%name%_brick_inner_stairs", - "uvlock": true, - "y": 180 - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "betterend:block/%name%_brick_outer_stairs", - "uvlock": true, - "y": 90 - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "betterend:block/%name%_brick_outer_stairs", - "uvlock": true, - "y": 180 - }, - "facing=west,half=bottom,shape=straight": { - "model": "betterend:block/%name%_brick_stairs", - "uvlock": true, - "y": 180 - }, - "facing=west,half=top,shape=inner_left": { - "model": "betterend:block/%name%_brick_inner_stairs", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=west,half=top,shape=inner_right": { - "model": "betterend:block/%name%_brick_inner_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=west,half=top,shape=outer_left": { - "model": "betterend:block/%name%_brick_outer_stairs", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=west,half=top,shape=outer_right": { - "model": "betterend:block/%name%_brick_outer_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=west,half=top,shape=straight": { - "model": "betterend:block/%name%_brick_stairs", - "uvlock": true, - "x": 180, - "y": 180 - } - } +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_brick_inner_stairs" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_brick_outer_stairs" + }, + "facing=east,half=bottom,shape=straight": { + "model": "betterend:block/%name%_brick_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "betterend:block/%name%_brick_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "betterend:block/%name%_brick_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "betterend:block/%name%_brick_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_brick_inner_stairs" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_brick_outer_stairs" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "betterend:block/%name%_brick_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "betterend:block/%name%_brick_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "betterend:block/%name%_brick_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "betterend:block/%name%_brick_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } } \ No newline at end of file diff --git a/json/blockstates/%name%_brick_wall.json b/json/blockstates/%name%_brick_wall.json index a3e02377..17f3910d 100644 --- a/json/blockstates/%name%_brick_wall.json +++ b/json/blockstates/%name%_brick_wall.json @@ -1,90 +1,90 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "betterend:block/%name%_brick_wall_post" - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "betterend:block/%name%_brick_wall_side", - "uvlock": true - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "betterend:block/%name%_brick_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "betterend:block/%name%_brick_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "betterend:block/%name%_brick_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "betterend:block/%name%_brick_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "betterend:block/%name%_brick_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "betterend:block/%name%_brick_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "betterend:block/%name%_brick_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] } \ No newline at end of file diff --git a/json/blockstates/%name%_bricks.json b/json/blockstates/%name%_bricks.json index 59171c16..d55de86c 100644 --- a/json/blockstates/%name%_bricks.json +++ b/json/blockstates/%name%_bricks.json @@ -1,7 +1,7 @@ -{ - "variants": { - "": { - "model": "betterend:block/%name%_bricks" - } - } +{ + "variants": { + "": { + "model": "betterend:block/%name%_bricks" + } + } } \ No newline at end of file diff --git a/json/blockstates/%name%_button.json b/json/blockstates/%name%_button.json index a65801cf..f0a946f9 100644 --- a/json/blockstates/%name%_button.json +++ b/json/blockstates/%name%_button.json @@ -1,118 +1,118 @@ -{ - "variants": { - "face=ceiling,facing=east,powered=false": { - "model": "betterend:block/%name%_button", - "x": 180, - "y": 270 - }, - "face=ceiling,facing=east,powered=true": { - "model": "betterend:block/%name%_button_pressed", - "x": 180, - "y": 270 - }, - "face=ceiling,facing=north,powered=false": { - "model": "betterend:block/%name%_button", - "x": 180, - "y": 180 - }, - "face=ceiling,facing=north,powered=true": { - "model": "betterend:block/%name%_button_pressed", - "x": 180, - "y": 180 - }, - "face=ceiling,facing=south,powered=false": { - "model": "betterend:block/%name%_button", - "x": 180 - }, - "face=ceiling,facing=south,powered=true": { - "model": "betterend:block/%name%_button_pressed", - "x": 180 - }, - "face=ceiling,facing=west,powered=false": { - "model": "betterend:block/%name%_button", - "x": 180, - "y": 90 - }, - "face=ceiling,facing=west,powered=true": { - "model": "betterend:block/%name%_button_pressed", - "x": 180, - "y": 90 - }, - "face=floor,facing=east,powered=false": { - "model": "betterend:block/%name%_button", - "y": 90 - }, - "face=floor,facing=east,powered=true": { - "model": "betterend:block/%name%_button_pressed", - "y": 90 - }, - "face=floor,facing=north,powered=false": { - "model": "betterend:block/%name%_button" - }, - "face=floor,facing=north,powered=true": { - "model": "betterend:block/%name%_button_pressed" - }, - "face=floor,facing=south,powered=false": { - "model": "betterend:block/%name%_button", - "y": 180 - }, - "face=floor,facing=south,powered=true": { - "model": "betterend:block/%name%_button_pressed", - "y": 180 - }, - "face=floor,facing=west,powered=false": { - "model": "betterend:block/%name%_button", - "y": 270 - }, - "face=floor,facing=west,powered=true": { - "model": "betterend:block/%name%_button_pressed", - "y": 270 - }, - "face=wall,facing=east,powered=false": { - "model": "betterend:block/%name%_button", - "uvlock": true, - "x": 90, - "y": 90 - }, - "face=wall,facing=east,powered=true": { - "model": "betterend:block/%name%_button_pressed", - "uvlock": true, - "x": 90, - "y": 90 - }, - "face=wall,facing=north,powered=false": { - "model": "betterend:block/%name%_button", - "uvlock": true, - "x": 90 - }, - "face=wall,facing=north,powered=true": { - "model": "betterend:block/%name%_button_pressed", - "uvlock": true, - "x": 90 - }, - "face=wall,facing=south,powered=false": { - "model": "betterend:block/%name%_button", - "uvlock": true, - "x": 90, - "y": 180 - }, - "face=wall,facing=south,powered=true": { - "model": "betterend:block/%name%_button_pressed", - "uvlock": true, - "x": 90, - "y": 180 - }, - "face=wall,facing=west,powered=false": { - "model": "betterend:block/%name%_button", - "uvlock": true, - "x": 90, - "y": 270 - }, - "face=wall,facing=west,powered=true": { - "model": "betterend:block/%name%_button_pressed", - "uvlock": true, - "x": 90, - "y": 270 - } - } +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "betterend:block/%name%_button", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=east,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=north,powered=false": { + "model": "betterend:block/%name%_button", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "betterend:block/%name%_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "betterend:block/%name%_button", + "x": 180, + "y": 90 + }, + "face=ceiling,facing=west,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "x": 180, + "y": 90 + }, + "face=floor,facing=east,powered=false": { + "model": "betterend:block/%name%_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "betterend:block/%name%_button" + }, + "face=floor,facing=north,powered=true": { + "model": "betterend:block/%name%_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "betterend:block/%name%_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "betterend:block/%name%_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "betterend:block/%name%_button", + "uvlock": true, + "x": 90, + "y": 90 + }, + "face=wall,facing=east,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "uvlock": true, + "x": 90, + "y": 90 + }, + "face=wall,facing=north,powered=false": { + "model": "betterend:block/%name%_button", + "uvlock": true, + "x": 90 + }, + "face=wall,facing=north,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "uvlock": true, + "x": 90 + }, + "face=wall,facing=south,powered=false": { + "model": "betterend:block/%name%_button", + "uvlock": true, + "x": 90, + "y": 180 + }, + "face=wall,facing=south,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "uvlock": true, + "x": 90, + "y": 180 + }, + "face=wall,facing=west,powered=false": { + "model": "betterend:block/%name%_button", + "uvlock": true, + "x": 90, + "y": 270 + }, + "face=wall,facing=west,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "uvlock": true, + "x": 90, + "y": 270 + } + } } \ No newline at end of file diff --git a/json/blockstates/%name%_pillar.json b/json/blockstates/%name%_pillar.json index fddcfc6c..27ec0347 100644 --- a/json/blockstates/%name%_pillar.json +++ b/json/blockstates/%name%_pillar.json @@ -1,7 +1,7 @@ -{ - "variants": { - "axis=x": { "model": "betterend:block/%name%_pillar", "x": 90, "y": 90 }, - "axis=y": { "model": "betterend:block/%name%_pillar" }, - "axis=z": { "model": "betterend:block/%name%_pillar", "x": 90 } - } +{ + "variants": { + "axis=x": { "model": "betterend:block/%name%_pillar", "x": 90, "y": 90 }, + "axis=y": { "model": "betterend:block/%name%_pillar" }, + "axis=z": { "model": "betterend:block/%name%_pillar", "x": 90 } + } } \ No newline at end of file diff --git a/json/blockstates/%name%_plate.json b/json/blockstates/%name%_plate.json index f8ad4900..4060f8da 100644 --- a/json/blockstates/%name%_plate.json +++ b/json/blockstates/%name%_plate.json @@ -1,10 +1,10 @@ -{ - "variants": { - "powered=false": { - "model": "betterend:block/%name%_pressure_plate_up" - }, - "powered=true": { - "model": "betterend:block/%name%_pressure_plate_down" - } - } +{ + "variants": { + "powered=false": { + "model": "betterend:block/%name%_pressure_plate_up" + }, + "powered=true": { + "model": "betterend:block/%name%_pressure_plate_down" + } + } } \ No newline at end of file diff --git a/json/blockstates/%name%_slab.json b/json/blockstates/%name%_slab.json index 5eafe1bc..17875e4c 100644 --- a/json/blockstates/%name%_slab.json +++ b/json/blockstates/%name%_slab.json @@ -1,15 +1,15 @@ -{ - "variants": { - "type=bottom": { - "model": "betterend:block/%name%_half_slab" - }, - "type=double": { - "model": "betterend:block/%name%" - }, - "type=top": { - "model": "betterend:block/%name%_half_slab", - "uvlock": true, - "x": 180 - } - } +{ + "variants": { + "type=bottom": { + "model": "betterend:block/%name%_half_slab" + }, + "type=double": { + "model": "betterend:block/%name%" + }, + "type=top": { + "model": "betterend:block/%name%_half_slab", + "uvlock": true, + "x": 180 + } + } } \ No newline at end of file diff --git a/json/blockstates/%name%_small_tiles.json b/json/blockstates/%name%_small_tiles.json index 5913e0d4..5a84411b 100644 --- a/json/blockstates/%name%_small_tiles.json +++ b/json/blockstates/%name%_small_tiles.json @@ -1,7 +1,7 @@ -{ - "variants": { - "": { - "model": "betterend:block/%name%_small_tiles" - } - } +{ + "variants": { + "": { + "model": "betterend:block/%name%_small_tiles" + } + } } \ No newline at end of file diff --git a/json/blockstates/%name%_stairs.json b/json/blockstates/%name%_stairs.json index e0a17faf..685e1861 100644 --- a/json/blockstates/%name%_stairs.json +++ b/json/blockstates/%name%_stairs.json @@ -1,209 +1,209 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "betterend:block/%name%_inner_stairs", - "uvlock": true, - "y": 270 - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "betterend:block/%name%_inner_stairs" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "betterend:block/%name%_outer_stairs", - "uvlock": true, - "y": 270 - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "betterend:block/%name%_outer_stairs" - }, - "facing=east,half=bottom,shape=straight": { - "model": "betterend:block/%name%_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "betterend:block/%name%_inner_stairs", - "uvlock": true, - "x": 180 - }, - "facing=east,half=top,shape=inner_right": { - "model": "betterend:block/%name%_inner_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=east,half=top,shape=outer_left": { - "model": "betterend:block/%name%_outer_stairs", - "uvlock": true, - "x": 180 - }, - "facing=east,half=top,shape=outer_right": { - "model": "betterend:block/%name%_outer_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=east,half=top,shape=straight": { - "model": "betterend:block/%name%_stairs", - "uvlock": true, - "x": 180 - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "betterend:block/%name%_inner_stairs", - "uvlock": true, - "y": 180 - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "betterend:block/%name%_inner_stairs", - "uvlock": true, - "y": 270 - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "betterend:block/%name%_outer_stairs", - "uvlock": true, - "y": 180 - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "betterend:block/%name%_outer_stairs", - "uvlock": true, - "y": 270 - }, - "facing=north,half=bottom,shape=straight": { - "model": "betterend:block/%name%_stairs", - "uvlock": true, - "y": 270 - }, - "facing=north,half=top,shape=inner_left": { - "model": "betterend:block/%name%_inner_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=north,half=top,shape=inner_right": { - "model": "betterend:block/%name%_inner_stairs", - "uvlock": true, - "x": 180 - }, - "facing=north,half=top,shape=outer_left": { - "model": "betterend:block/%name%_outer_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=north,half=top,shape=outer_right": { - "model": "betterend:block/%name%_outer_stairs", - "uvlock": true, - "x": 180 - }, - "facing=north,half=top,shape=straight": { - "model": "betterend:block/%name%_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "betterend:block/%name%_inner_stairs" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "betterend:block/%name%_inner_stairs", - "uvlock": true, - "y": 90 - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "betterend:block/%name%_outer_stairs" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "betterend:block/%name%_outer_stairs", - "uvlock": true, - "y": 90 - }, - "facing=south,half=bottom,shape=straight": { - "model": "betterend:block/%name%_stairs", - "uvlock": true, - "y": 90 - }, - "facing=south,half=top,shape=inner_left": { - "model": "betterend:block/%name%_inner_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=south,half=top,shape=inner_right": { - "model": "betterend:block/%name%_inner_stairs", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=south,half=top,shape=outer_left": { - "model": "betterend:block/%name%_outer_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=south,half=top,shape=outer_right": { - "model": "betterend:block/%name%_outer_stairs", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=south,half=top,shape=straight": { - "model": "betterend:block/%name%_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "betterend:block/%name%_inner_stairs", - "uvlock": true, - "y": 90 - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "betterend:block/%name%_inner_stairs", - "uvlock": true, - "y": 180 - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "betterend:block/%name%_outer_stairs", - "uvlock": true, - "y": 90 - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "betterend:block/%name%_outer_stairs", - "uvlock": true, - "y": 180 - }, - "facing=west,half=bottom,shape=straight": { - "model": "betterend:block/%name%_stairs", - "uvlock": true, - "y": 180 - }, - "facing=west,half=top,shape=inner_left": { - "model": "betterend:block/%name%_inner_stairs", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=west,half=top,shape=inner_right": { - "model": "betterend:block/%name%_inner_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=west,half=top,shape=outer_left": { - "model": "betterend:block/%name%_outer_stairs", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=west,half=top,shape=outer_right": { - "model": "betterend:block/%name%_outer_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=west,half=top,shape=straight": { - "model": "betterend:block/%name%_stairs", - "uvlock": true, - "x": 180, - "y": 180 - } - } +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs" + }, + "facing=east,half=bottom,shape=straight": { + "model": "betterend:block/%name%_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } } \ No newline at end of file diff --git a/json/blockstates/%name%_tile.json b/json/blockstates/%name%_tile.json index 4dc91e5e..b9f56911 100644 --- a/json/blockstates/%name%_tile.json +++ b/json/blockstates/%name%_tile.json @@ -1,7 +1,7 @@ -{ - "variants": { - "": { - "model": "betterend:block/%name%_tile" - } - } +{ + "variants": { + "": { + "model": "betterend:block/%name%_tile" + } + } } \ No newline at end of file diff --git a/json/blockstates/%name%_wall.json b/json/blockstates/%name%_wall.json index 115da727..3d81eb45 100644 --- a/json/blockstates/%name%_wall.json +++ b/json/blockstates/%name%_wall.json @@ -1,90 +1,90 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "betterend:block/%name%_wall_post" - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "betterend:block/%name%_wall_side", - "uvlock": true - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "betterend:block/%name%_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "betterend:block/%name%_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "betterend:block/%name%_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "betterend:block/%name%_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "betterend:block/%name%_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "betterend:block/%name%_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "betterend:block/%name%_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "betterend:block/%name%_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "betterend:block/%name%_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "betterend:block/%name%_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "betterend:block/%name%_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "betterend:block/%name%_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "betterend:block/%name%_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "betterend:block/%name%_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "betterend:block/%name%_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "betterend:block/%name%_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] } \ No newline at end of file diff --git a/json/blockstates/a.txt b/json/blockstates/a.txt index 1a56d0c8..a21008f5 100644 --- a/json/blockstates/a.txt +++ b/json/blockstates/a.txt @@ -1,23 +1,23 @@ - ’®¬ ¢ ãáâனá⢥ D ¨¬¥¥â ¬¥âªã Data - ‘¥à¨©­ë© ­®¬¥à ⮬ : C7B5-F673 - - ‘®¤¥à¦¨¬®¥ ¯ ¯ª¨ D:\BetterEnd\Utilities\src\data\stone\blockstates - -11.10.2020 15:54 . -11.10.2020 15:54 .. -11.10.2020 15:50 103 %name%.json -11.10.2020 15:51 110 %name%_bricks.json -11.10.2020 15:54 382 %name%_brick_slab.json -11.10.2020 15:53 7ÿ540 %name%_brick_stairs.json -11.10.2020 15:52 1ÿ635 %name%_brick_wall.json -26.09.2020 20:35 4ÿ006 %name%_button.json -11.10.2020 15:50 253 %name%_pillar.json -26.09.2020 20:35 241 %name%_plate.json -26.09.2020 20:35 364 %name%_slab.json -11.10.2020 15:50 115 %name%_small_tiles.json -26.09.2020 20:35 7ÿ300 %name%_stairs.json -11.10.2020 15:50 108 %name%_tile.json -11.10.2020 15:52 1ÿ581 %name%_wall.json -11.10.2020 15:58 0 a.txt - 14 ä ©«®¢ 23ÿ738 ¡ ©â - 2 ¯ ¯®ª 785ÿ301ÿ614ÿ592 ¡ ©â ᢮¡®¤­® + ’®¬ ¢ ãáâனá⢥ D ¨¬¥¥â ¬¥âªã Data + ‘¥à¨©­ë© ­®¬¥à ⮬ : C7B5-F673 + + ‘®¤¥à¦¨¬®¥ ¯ ¯ª¨ D:\BetterEnd\Utilities\src\data\stone\blockstates + +11.10.2020 15:54 . +11.10.2020 15:54 .. +11.10.2020 15:50 103 %name%.json +11.10.2020 15:51 110 %name%_bricks.json +11.10.2020 15:54 382 %name%_brick_slab.json +11.10.2020 15:53 7ÿ540 %name%_brick_stairs.json +11.10.2020 15:52 1ÿ635 %name%_brick_wall.json +26.09.2020 20:35 4ÿ006 %name%_button.json +11.10.2020 15:50 253 %name%_pillar.json +26.09.2020 20:35 241 %name%_plate.json +26.09.2020 20:35 364 %name%_slab.json +11.10.2020 15:50 115 %name%_small_tiles.json +26.09.2020 20:35 7ÿ300 %name%_stairs.json +11.10.2020 15:50 108 %name%_tile.json +11.10.2020 15:52 1ÿ581 %name%_wall.json +11.10.2020 15:58 0 a.txt + 14 ä ©«®¢ 23ÿ738 ¡ ©â + 2 ¯ ¯®ª 785ÿ301ÿ614ÿ592 ¡ ©â ᢮¡®¤­® diff --git a/json/item/%name%.json b/json/item/%name%.json index 92b1fef5..82508cd3 100644 --- a/json/item/%name%.json +++ b/json/item/%name%.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/%name%" +{ + "parent": "betterend:block/%name%" } \ No newline at end of file diff --git a/json/item/%name%_brick_slab.json b/json/item/%name%_brick_slab.json index 32c1d293..c148cf65 100644 --- a/json/item/%name%_brick_slab.json +++ b/json/item/%name%_brick_slab.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/%name%_brick_half_slab" +{ + "parent": "betterend:block/%name%_brick_half_slab" } \ No newline at end of file diff --git a/json/item/%name%_brick_stairs.json b/json/item/%name%_brick_stairs.json index 89ecaa54..24b61896 100644 --- a/json/item/%name%_brick_stairs.json +++ b/json/item/%name%_brick_stairs.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/%name%_brick_stairs" +{ + "parent": "betterend:block/%name%_brick_stairs" } \ No newline at end of file diff --git a/json/item/%name%_brick_wall.json b/json/item/%name%_brick_wall.json index 8719d7c1..1e902ec4 100644 --- a/json/item/%name%_brick_wall.json +++ b/json/item/%name%_brick_wall.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/%name%_brick_wall_inventory" +{ + "parent": "betterend:block/%name%_brick_wall_inventory" } \ No newline at end of file diff --git a/json/item/%name%_bricks.json b/json/item/%name%_bricks.json index 14d8a30b..56ce6003 100644 --- a/json/item/%name%_bricks.json +++ b/json/item/%name%_bricks.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/%name%_bricks" +{ + "parent": "betterend:block/%name%_bricks" } \ No newline at end of file diff --git a/json/item/%name%_button.json b/json/item/%name%_button.json index 3dc32368..240fb2d7 100644 --- a/json/item/%name%_button.json +++ b/json/item/%name%_button.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/%name%_button_inventory" +{ + "parent": "betterend:block/%name%_button_inventory" } \ No newline at end of file diff --git a/json/item/%name%_pillar.json b/json/item/%name%_pillar.json index 0f7de019..a6257b38 100644 --- a/json/item/%name%_pillar.json +++ b/json/item/%name%_pillar.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/%name%_pillar" +{ + "parent": "betterend:block/%name%_pillar" } \ No newline at end of file diff --git a/json/item/%name%_plate.json b/json/item/%name%_plate.json index 484a02f9..d774f9bc 100644 --- a/json/item/%name%_plate.json +++ b/json/item/%name%_plate.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/%name%_pressure_plate_up" +{ + "parent": "betterend:block/%name%_pressure_plate_up" } \ No newline at end of file diff --git a/json/item/%name%_slab.json b/json/item/%name%_slab.json index f6853e03..1c83dcd9 100644 --- a/json/item/%name%_slab.json +++ b/json/item/%name%_slab.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/%name%_half_slab" +{ + "parent": "betterend:block/%name%_half_slab" } \ No newline at end of file diff --git a/json/item/%name%_small_tiles.json b/json/item/%name%_small_tiles.json index 2d8006df..46e284e5 100644 --- a/json/item/%name%_small_tiles.json +++ b/json/item/%name%_small_tiles.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/%name%_small_tiles" +{ + "parent": "betterend:block/%name%_small_tiles" } \ No newline at end of file diff --git a/json/item/%name%_stairs.json b/json/item/%name%_stairs.json index 0f51c6ec..c4871532 100644 --- a/json/item/%name%_stairs.json +++ b/json/item/%name%_stairs.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/%name%_stairs" +{ + "parent": "betterend:block/%name%_stairs" } \ No newline at end of file diff --git a/json/item/%name%_tile.json b/json/item/%name%_tile.json index 4b981468..ad863533 100644 --- a/json/item/%name%_tile.json +++ b/json/item/%name%_tile.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/%name%_tile" +{ + "parent": "betterend:block/%name%_tile" } \ No newline at end of file diff --git a/json/item/%name%_wall.json b/json/item/%name%_wall.json index eee0e6ae..59b31173 100644 --- a/json/item/%name%_wall.json +++ b/json/item/%name%_wall.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/%name%_wall_inventory" +{ + "parent": "betterend:block/%name%_wall_inventory" } \ No newline at end of file diff --git a/json/item/a.txt b/json/item/a.txt index 3a43dcf5..2cbe5c81 100644 --- a/json/item/a.txt +++ b/json/item/a.txt @@ -1,23 +1,23 @@ - ’®¬ ¢ ãáâனá⢥ D ¨¬¥¥â ¬¥âªã Data - ‘¥à¨©­ë© ­®¬¥à ⮬ : C7B5-F673 - - ‘®¤¥à¦¨¬®¥ ¯ ¯ª¨ D:\BetterEnd\Utilities\src\data\stone\item - -11.10.2020 15:55 . -11.10.2020 15:55 .. -11.10.2020 15:42 44 %name%.json -11.10.2020 15:46 51 %name%_bricks.json -11.10.2020 15:47 55 %name%_brick_slab.json -11.10.2020 15:46 57 %name%_brick_stairs.json -11.10.2020 15:47 65 %name%_brick_wall.json -11.10.2020 15:48 61 %name%_button.json -11.10.2020 15:43 51 %name%_pillar.json -26.09.2020 20:36 62 %name%_plate.json -11.10.2020 15:43 49 %name%_slab.json -11.10.2020 15:43 56 %name%_small_tiles.json -11.10.2020 15:43 51 %name%_stairs.json -11.10.2020 15:43 49 %name%_tile.json -11.10.2020 15:47 59 %name%_wall.json -11.10.2020 15:55 0 a.txt - 14 ä ©«®¢ 710 ¡ ©â - 2 ¯ ¯®ª 785ÿ301ÿ659ÿ648 ¡ ©â ᢮¡®¤­® + ’®¬ ¢ ãáâனá⢥ D ¨¬¥¥â ¬¥âªã Data + ‘¥à¨©­ë© ­®¬¥à ⮬ : C7B5-F673 + + ‘®¤¥à¦¨¬®¥ ¯ ¯ª¨ D:\BetterEnd\Utilities\src\data\stone\item + +11.10.2020 15:55 . +11.10.2020 15:55 .. +11.10.2020 15:42 44 %name%.json +11.10.2020 15:46 51 %name%_bricks.json +11.10.2020 15:47 55 %name%_brick_slab.json +11.10.2020 15:46 57 %name%_brick_stairs.json +11.10.2020 15:47 65 %name%_brick_wall.json +11.10.2020 15:48 61 %name%_button.json +11.10.2020 15:43 51 %name%_pillar.json +26.09.2020 20:36 62 %name%_plate.json +11.10.2020 15:43 49 %name%_slab.json +11.10.2020 15:43 56 %name%_small_tiles.json +11.10.2020 15:43 51 %name%_stairs.json +11.10.2020 15:43 49 %name%_tile.json +11.10.2020 15:47 59 %name%_wall.json +11.10.2020 15:55 0 a.txt + 14 ä ©«®¢ 710 ¡ ©â + 2 ¯ ¯®ª 785ÿ301ÿ659ÿ648 ¡ ©â ᢮¡®¤­® diff --git a/settings.gradle b/settings.gradle index 5b60df3d..c1d85e97 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,10 +1,10 @@ -pluginManagement { - repositories { - jcenter() - maven { - name = 'Fabric' - url = 'https://maven.fabricmc.net/' - } - gradlePluginPortal() - } -} +pluginManagement { + repositories { + jcenter() + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } + gradlePluginPortal() + } +} diff --git a/src/main/java/ru/betterend/BetterEnd.java b/src/main/java/ru/betterend/BetterEnd.java index 5cc7ef8c..bb2f54e9 100644 --- a/src/main/java/ru/betterend/BetterEnd.java +++ b/src/main/java/ru/betterend/BetterEnd.java @@ -1,64 +1,64 @@ -package ru.betterend; - -import net.fabricmc.api.ModInitializer; -import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.util.Identifier; -import ru.betterend.api.BetterEndPlugin; -import ru.betterend.config.MainConfig; -import ru.betterend.effects.EndEnchantments; -import ru.betterend.effects.EndPotions; -import ru.betterend.recipe.AlloyingRecipes; -import ru.betterend.recipe.CraftingRecipes; -import ru.betterend.recipe.FurnaceRecipes; -import ru.betterend.recipe.SmithingRecipes; -import ru.betterend.registry.EndBiomes; -import ru.betterend.registry.EndBlockEntities; -import ru.betterend.registry.EndBlocks; -import ru.betterend.registry.EndEntities; -import ru.betterend.registry.EndFeatures; -import ru.betterend.registry.EndItems; -import ru.betterend.registry.EndSounds; -import ru.betterend.registry.EndStructures; -import ru.betterend.registry.EndTags; -import ru.betterend.util.Logger; -import ru.betterend.world.generator.BetterEndBiomeSource; - -public class BetterEnd implements ModInitializer { - public static final String MOD_ID = "betterend"; - public static final Logger LOGGER = Logger.get(); - public static final MainConfig CONFIG = MainConfig.getInstance(); - - @Override - public void onInitialize() { - EndSounds.register(); - EndItems.register(); - EndBlocks.register(); - EndBlockEntities.register(); - EndFeatures.register(); - EndEntities.register(); - EndBiomes.register(); - BetterEndBiomeSource.register(); - EndTags.register(); - EndEnchantments.register(); - EndPotions.register(); - CraftingRecipes.register(); - FurnaceRecipes.register(); - AlloyingRecipes.register(); - SmithingRecipes.register(); - EndStructures.register(); - - FabricLoader.getInstance().getEntrypoints("betterend", BetterEndPlugin.class).forEach(BetterEndPlugin::register); - } - - public static Identifier makeID(String path) { - return new Identifier(MOD_ID, path); - } - - public static String getStringId(String id) { - return String.format("%s:%s", MOD_ID, id); - } - - public static boolean isDevEnvironment() { - return FabricLoader.getInstance().isDevelopmentEnvironment(); - } -} +package ru.betterend; + +import net.fabricmc.api.ModInitializer; +import net.fabricmc.loader.api.FabricLoader; +import net.minecraft.util.Identifier; +import ru.betterend.api.BetterEndPlugin; +import ru.betterend.config.MainConfig; +import ru.betterend.effects.EndEnchantments; +import ru.betterend.effects.EndPotions; +import ru.betterend.recipe.AlloyingRecipes; +import ru.betterend.recipe.CraftingRecipes; +import ru.betterend.recipe.FurnaceRecipes; +import ru.betterend.recipe.SmithingRecipes; +import ru.betterend.registry.EndBiomes; +import ru.betterend.registry.EndBlockEntities; +import ru.betterend.registry.EndBlocks; +import ru.betterend.registry.EndEntities; +import ru.betterend.registry.EndFeatures; +import ru.betterend.registry.EndItems; +import ru.betterend.registry.EndSounds; +import ru.betterend.registry.EndStructures; +import ru.betterend.registry.EndTags; +import ru.betterend.util.Logger; +import ru.betterend.world.generator.BetterEndBiomeSource; + +public class BetterEnd implements ModInitializer { + public static final String MOD_ID = "betterend"; + public static final Logger LOGGER = Logger.get(); + public static final MainConfig CONFIG = MainConfig.getInstance(); + + @Override + public void onInitialize() { + EndSounds.register(); + EndItems.register(); + EndBlocks.register(); + EndBlockEntities.register(); + EndFeatures.register(); + EndEntities.register(); + EndBiomes.register(); + BetterEndBiomeSource.register(); + EndTags.register(); + EndEnchantments.register(); + EndPotions.register(); + CraftingRecipes.register(); + FurnaceRecipes.register(); + AlloyingRecipes.register(); + SmithingRecipes.register(); + EndStructures.register(); + + FabricLoader.getInstance().getEntrypoints("betterend", BetterEndPlugin.class).forEach(BetterEndPlugin::register); + } + + public static Identifier makeID(String path) { + return new Identifier(MOD_ID, path); + } + + public static String getStringId(String id) { + return String.format("%s:%s", MOD_ID, id); + } + + public static boolean isDevEnvironment() { + return FabricLoader.getInstance().isDevelopmentEnvironment(); + } +} diff --git a/src/main/java/ru/betterend/api/BetterEndPlugin.java b/src/main/java/ru/betterend/api/BetterEndPlugin.java index b1817141..4b278aec 100644 --- a/src/main/java/ru/betterend/api/BetterEndPlugin.java +++ b/src/main/java/ru/betterend/api/BetterEndPlugin.java @@ -1,34 +1,34 @@ -package ru.betterend.api; - -public interface BetterEndPlugin { - /** - * Alloying recipes registration. - * See AlloyingRecipe.Builder for details. - */ - default void registerAlloyingRecipes() {} - - /** - * Smithing recipes registration. - * See AnvilSmithingRecipe.Builder for details. - */ - default void registerSmithingRecipes() {} - - /** - * Additional biomes registration. - * See BiomeRegistry.registerBiome for details. - */ - default void registerEndBiomes() {} - - /** - * Register other mod stuff, for example, EndHammers. - */ - default void registerOthers() {} - - - public static void register(BetterEndPlugin plugin) { - plugin.registerAlloyingRecipes(); - plugin.registerSmithingRecipes(); - plugin.registerEndBiomes(); - plugin.registerOthers(); - } -} +package ru.betterend.api; + +public interface BetterEndPlugin { + /** + * Alloying recipes registration. + * See AlloyingRecipe.Builder for details. + */ + default void registerAlloyingRecipes() {} + + /** + * Smithing recipes registration. + * See AnvilSmithingRecipe.Builder for details. + */ + default void registerSmithingRecipes() {} + + /** + * Additional biomes registration. + * See BiomeRegistry.registerBiome for details. + */ + default void registerEndBiomes() {} + + /** + * Register other mod stuff, for example, EndHammers. + */ + default void registerOthers() {} + + + public static void register(BetterEndPlugin plugin) { + plugin.registerAlloyingRecipes(); + plugin.registerSmithingRecipes(); + plugin.registerEndBiomes(); + plugin.registerOthers(); + } +} diff --git a/src/main/java/ru/betterend/blocks/AeterniumBlock.java b/src/main/java/ru/betterend/blocks/AeterniumBlock.java index 11711a35..e5e11578 100644 --- a/src/main/java/ru/betterend/blocks/AeterniumBlock.java +++ b/src/main/java/ru/betterend/blocks/AeterniumBlock.java @@ -1,28 +1,28 @@ -package ru.betterend.blocks; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.block.BlockState; -import net.minecraft.block.Material; -import net.minecraft.block.MaterialColor; -import net.minecraft.sound.BlockSoundGroup; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.BlockView; -import ru.betterend.blocks.basis.BlockBase; - -public class AeterniumBlock extends BlockBase { - - public AeterniumBlock() { - super(FabricBlockSettings.of(Material.METAL, MaterialColor.GRAY) - .hardness(65F) - .resistance(1200F) - .requiresTool() - .sounds(BlockSoundGroup.NETHERITE)); - } - - @Environment(EnvType.CLIENT) - public int getColor(BlockState state, BlockView world, BlockPos pos) { - return 0xFF657A7A; - } -} +package ru.betterend.blocks; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.BlockState; +import net.minecraft.block.Material; +import net.minecraft.block.MaterialColor; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.BlockView; +import ru.betterend.blocks.basis.BlockBase; + +public class AeterniumBlock extends BlockBase { + + public AeterniumBlock() { + super(FabricBlockSettings.of(Material.METAL, MaterialColor.GRAY) + .hardness(65F) + .resistance(1200F) + .requiresTool() + .sounds(BlockSoundGroup.NETHERITE)); + } + + @Environment(EnvType.CLIENT) + public int getColor(BlockState state, BlockView world, BlockPos pos) { + return 0xFF657A7A; + } +} diff --git a/src/main/java/ru/betterend/blocks/BlockStone.java b/src/main/java/ru/betterend/blocks/BlockStone.java index 305cf219..d8b9dd53 100644 --- a/src/main/java/ru/betterend/blocks/BlockStone.java +++ b/src/main/java/ru/betterend/blocks/BlockStone.java @@ -1,14 +1,14 @@ -package ru.betterend.blocks; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.block.Blocks; -import net.minecraft.block.MaterialColor; -import net.minecraft.sound.BlockSoundGroup; -import ru.betterend.blocks.basis.BlockBase; - -public class BlockStone extends BlockBase { - - public BlockStone(MaterialColor color) { - super(FabricBlockSettings.copyOf(Blocks.END_STONE).materialColor(color).sounds(BlockSoundGroup.STONE)); - } -} +package ru.betterend.blocks; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.Blocks; +import net.minecraft.block.MaterialColor; +import net.minecraft.sound.BlockSoundGroup; +import ru.betterend.blocks.basis.BlockBase; + +public class BlockStone extends BlockBase { + + public BlockStone(MaterialColor color) { + super(FabricBlockSettings.copyOf(Blocks.END_STONE).materialColor(color).sounds(BlockSoundGroup.STONE)); + } +} diff --git a/src/main/java/ru/betterend/blocks/EndPortalBlock.java b/src/main/java/ru/betterend/blocks/EndPortalBlock.java index 1e48fd9e..cd894741 100644 --- a/src/main/java/ru/betterend/blocks/EndPortalBlock.java +++ b/src/main/java/ru/betterend/blocks/EndPortalBlock.java @@ -1,119 +1,119 @@ -package ru.betterend.blocks; - -import java.util.Random; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.NetherPortalBlock; -import net.minecraft.entity.Entity; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.sound.SoundCategory; -import net.minecraft.sound.SoundEvents; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.util.registry.Registry; -import net.minecraft.world.World; -import net.minecraft.world.WorldAccess; -import net.minecraft.world.dimension.DimensionType; -import ru.betterend.client.render.ERenderLayer; -import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.interfaces.TeleportingEntity; -import ru.betterend.registry.EndParticles; - -public class EndPortalBlock extends NetherPortalBlock implements IRenderTypeable { - public EndPortalBlock() { - super(FabricBlockSettings.copyOf(Blocks.NETHER_PORTAL).resistance(Blocks.BEDROCK.getBlastResistance()).luminance(state -> { - return 12; - })); - } - - @Override - @Environment(EnvType.CLIENT) - public void randomDisplayTick(BlockState state, World world, BlockPos pos, Random random) { - if (random.nextInt(100) == 0) { - world.playSound(pos.getX() + 0.5D, pos.getY() + 0.5D, pos.getZ() + 0.5D, SoundEvents.BLOCK_PORTAL_AMBIENT, SoundCategory.BLOCKS, 0.5F, random.nextFloat() * 0.4F + 0.8F, false); - } - - double x = pos.getX() + random.nextDouble(); - double y = pos.getY() + random.nextDouble(); - double z = pos.getZ() + random.nextDouble(); - int k = random.nextInt(2) * 2 - 1; - if (!world.getBlockState(pos.west()).isOf(this) && !world.getBlockState(pos.east()).isOf(this)) { - x = pos.getX() + 0.5D + 0.25D * k; - } else { - z = pos.getZ() + 0.5D + 0.25D * k; - } - - world.addParticle(EndParticles.PORTAL_SPHERE, x, y, z, 0, 0, 0); - } - - @Override - public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random) {} - - @Override - public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState newState, WorldAccess world, BlockPos pos, BlockPos posFrom) { - return state; - } - - @Override - public void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity) { - if (world instanceof ServerWorld && !entity.hasVehicle() && !entity.hasPassengers() && entity.canUsePortals()) { - TeleportingEntity teleEntity = TeleportingEntity.class.cast(entity); - if (teleEntity.hasCooldown()) return; - boolean isOverworld = world.getRegistryKey().equals(World.OVERWORLD); - ServerWorld destination = ((ServerWorld) world).getServer().getWorld(isOverworld ? World.END : World.OVERWORLD); - BlockPos exitPos = this.findExitPos(destination, pos, entity); - if (exitPos == null) return; - if (entity instanceof ServerPlayerEntity) { - ServerPlayerEntity player = (ServerPlayerEntity) entity; - player.teleport(destination, exitPos.getX(), exitPos.getY(), exitPos.getZ(), entity.yaw, entity.pitch); - teleEntity.beSetCooldown(player.isCreative() ? 50 : 300); - } else { - teleEntity.beSetExitPos(exitPos); - entity.moveToWorld(destination); - teleEntity.beSetCooldown(300); - } - } - } - - @Override - public ERenderLayer getRenderLayer() { - return ERenderLayer.TRANSLUCENT; - } - - private BlockPos findExitPos(ServerWorld world, BlockPos pos, Entity entity) { - Registry registry = world.getRegistryManager().getDimensionTypes(); - double mult = registry.get(DimensionType.THE_END_ID).getCoordinateScale(); - BlockPos.Mutable basePos; - if (world.getRegistryKey().equals(World.OVERWORLD)) { - basePos = pos.mutableCopy().set(pos.getX() / mult, pos.getY(), pos.getZ() / mult); - } else { - basePos = pos.mutableCopy().set(pos.getX() * mult, pos.getY(), pos.getZ() * mult); - } - Direction direction = Direction.EAST; - BlockPos.Mutable checkPos = basePos.mutableCopy(); - for (int step = 1; step < 64; step++) { - for (int i = 0; i < step; i++) { - checkPos.setY(5); - while(checkPos.getY() < world.getHeight()) { - BlockState state = world.getBlockState(checkPos); - if(state.isOf(this)) { - if (state.get(AXIS).equals(Direction.Axis.X)) { - return checkPos.add(0, 0, 1); - } else { - return checkPos.add(1, 0, 0); - } - } - checkPos.move(Direction.UP); - } - checkPos.move(direction); - } - direction = direction.rotateYClockwise(); - } - return null; - } -} +package ru.betterend.blocks; + +import java.util.Random; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.NetherPortalBlock; +import net.minecraft.entity.Entity; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.World; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.dimension.DimensionType; +import ru.betterend.client.render.ERenderLayer; +import ru.betterend.interfaces.IRenderTypeable; +import ru.betterend.interfaces.TeleportingEntity; +import ru.betterend.registry.EndParticles; + +public class EndPortalBlock extends NetherPortalBlock implements IRenderTypeable { + public EndPortalBlock() { + super(FabricBlockSettings.copyOf(Blocks.NETHER_PORTAL).resistance(Blocks.BEDROCK.getBlastResistance()).luminance(state -> { + return 12; + })); + } + + @Override + @Environment(EnvType.CLIENT) + public void randomDisplayTick(BlockState state, World world, BlockPos pos, Random random) { + if (random.nextInt(100) == 0) { + world.playSound(pos.getX() + 0.5D, pos.getY() + 0.5D, pos.getZ() + 0.5D, SoundEvents.BLOCK_PORTAL_AMBIENT, SoundCategory.BLOCKS, 0.5F, random.nextFloat() * 0.4F + 0.8F, false); + } + + double x = pos.getX() + random.nextDouble(); + double y = pos.getY() + random.nextDouble(); + double z = pos.getZ() + random.nextDouble(); + int k = random.nextInt(2) * 2 - 1; + if (!world.getBlockState(pos.west()).isOf(this) && !world.getBlockState(pos.east()).isOf(this)) { + x = pos.getX() + 0.5D + 0.25D * k; + } else { + z = pos.getZ() + 0.5D + 0.25D * k; + } + + world.addParticle(EndParticles.PORTAL_SPHERE, x, y, z, 0, 0, 0); + } + + @Override + public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random) {} + + @Override + public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState newState, WorldAccess world, BlockPos pos, BlockPos posFrom) { + return state; + } + + @Override + public void onEntityCollision(BlockState state, World world, BlockPos pos, Entity entity) { + if (world instanceof ServerWorld && !entity.hasVehicle() && !entity.hasPassengers() && entity.canUsePortals()) { + TeleportingEntity teleEntity = TeleportingEntity.class.cast(entity); + if (teleEntity.hasCooldown()) return; + boolean isOverworld = world.getRegistryKey().equals(World.OVERWORLD); + ServerWorld destination = ((ServerWorld) world).getServer().getWorld(isOverworld ? World.END : World.OVERWORLD); + BlockPos exitPos = this.findExitPos(destination, pos, entity); + if (exitPos == null) return; + if (entity instanceof ServerPlayerEntity) { + ServerPlayerEntity player = (ServerPlayerEntity) entity; + player.teleport(destination, exitPos.getX(), exitPos.getY(), exitPos.getZ(), entity.yaw, entity.pitch); + teleEntity.beSetCooldown(player.isCreative() ? 50 : 300); + } else { + teleEntity.beSetExitPos(exitPos); + entity.moveToWorld(destination); + teleEntity.beSetCooldown(300); + } + } + } + + @Override + public ERenderLayer getRenderLayer() { + return ERenderLayer.TRANSLUCENT; + } + + private BlockPos findExitPos(ServerWorld world, BlockPos pos, Entity entity) { + Registry registry = world.getRegistryManager().getDimensionTypes(); + double mult = registry.get(DimensionType.THE_END_ID).getCoordinateScale(); + BlockPos.Mutable basePos; + if (world.getRegistryKey().equals(World.OVERWORLD)) { + basePos = pos.mutableCopy().set(pos.getX() / mult, pos.getY(), pos.getZ() / mult); + } else { + basePos = pos.mutableCopy().set(pos.getX() * mult, pos.getY(), pos.getZ() * mult); + } + Direction direction = Direction.EAST; + BlockPos.Mutable checkPos = basePos.mutableCopy(); + for (int step = 1; step < 64; step++) { + for (int i = 0; i < step; i++) { + checkPos.setY(5); + while(checkPos.getY() < world.getHeight()) { + BlockState state = world.getBlockState(checkPos); + if(state.isOf(this)) { + if (state.get(AXIS).equals(Direction.Axis.X)) { + return checkPos.add(0, 0, 1); + } else { + return checkPos.add(1, 0, 0); + } + } + checkPos.move(Direction.UP); + } + checkPos.move(direction); + } + direction = direction.rotateYClockwise(); + } + return null; + } +} diff --git a/src/main/java/ru/betterend/blocks/EndStoneSmelter.java b/src/main/java/ru/betterend/blocks/EndStoneSmelter.java index 27315e60..99251885 100644 --- a/src/main/java/ru/betterend/blocks/EndStoneSmelter.java +++ b/src/main/java/ru/betterend/blocks/EndStoneSmelter.java @@ -1,140 +1,140 @@ -package ru.betterend.blocks; - -import java.util.Collections; -import java.util.List; -import java.util.Random; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.block.Block; -import net.minecraft.block.BlockRenderType; -import net.minecraft.block.BlockState; -import net.minecraft.block.HorizontalFacingBlock; -import net.minecraft.block.Material; -import net.minecraft.block.MaterialColor; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemPlacementContext; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContext; -import net.minecraft.particle.ParticleTypes; -import net.minecraft.screen.NamedScreenHandlerFactory; -import net.minecraft.screen.ScreenHandler; -import net.minecraft.sound.BlockSoundGroup; -import net.minecraft.sound.SoundCategory; -import net.minecraft.sound.SoundEvents; -import net.minecraft.state.StateManager; -import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; -import net.minecraft.state.property.Properties; -import net.minecraft.util.ActionResult; -import net.minecraft.util.BlockMirror; -import net.minecraft.util.BlockRotation; -import net.minecraft.util.Hand; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.world.BlockView; -import net.minecraft.world.World; -import ru.betterend.blocks.basis.BaseBlockWithEntity; -import ru.betterend.blocks.entities.EndStoneSmelterBlockEntity; - -public class EndStoneSmelter extends BaseBlockWithEntity { - public static final DirectionProperty FACING = HorizontalFacingBlock.FACING; - public static final BooleanProperty LIT = Properties.LIT; - public static final String ID = "end_stone_smelter"; - - public EndStoneSmelter() { - super(FabricBlockSettings.of(Material.STONE, MaterialColor.GRAY) - .hardness(4F) - .resistance(100F) - .requiresTool() - .sounds(BlockSoundGroup.STONE)); - this.setDefaultState(this.stateManager.getDefaultState() - .with(FACING, Direction.NORTH) - .with(LIT, false)); - } - - public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { - if (world.isClient) { - return ActionResult.SUCCESS; - } else { - this.openScreen(world, pos, player); - return ActionResult.CONSUME; - } - } - - private void openScreen(World world, BlockPos pos, PlayerEntity player) { - BlockEntity blockEntity = world.getBlockEntity(pos); - if (blockEntity instanceof EndStoneSmelterBlockEntity) { - player.openHandledScreen((NamedScreenHandlerFactory) blockEntity); - } - } - - @Override - public BlockState getPlacementState(ItemPlacementContext ctx) { - return this.getDefaultState().with(FACING, ctx.getPlayerFacing().getOpposite()); - } - - @Override - public BlockEntity createBlockEntity(BlockView world) { - return new EndStoneSmelterBlockEntity(); - } - - @Override - public List getDroppedStacks(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } - - @Override - public boolean hasComparatorOutput(BlockState state) { - return true; - } - - @Override - public int getComparatorOutput(BlockState state, World world, BlockPos pos) { - //TODO - return ScreenHandler.calculateComparatorOutput(world.getBlockEntity(pos)); - } - - @Override - public BlockRenderType getRenderType(BlockState state) { - return BlockRenderType.MODEL; - } - - @Override - public BlockState rotate(BlockState state, BlockRotation rotation) { - return (BlockState)state.with(FACING, rotation.rotate((Direction)state.get(FACING))); - } - - @Override - public BlockState mirror(BlockState state, BlockMirror mirror) { - return state.rotate(mirror.getRotation((Direction)state.get(FACING))); - } - - @Override - protected void appendProperties(StateManager.Builder builder) { - builder.add(FACING, LIT); - } - - @Environment(EnvType.CLIENT) - public void randomDisplayTick(BlockState state, World world, BlockPos pos, Random random) { - if (state.get(LIT)) { - double x = pos.getX() + 0.5D; - double y = pos.getY(); - double z = pos.getZ() + 0.5D; - if (random.nextDouble() < 0.1D) { - world.playSound(x, y, z, SoundEvents.BLOCK_BLASTFURNACE_FIRE_CRACKLE, SoundCategory.BLOCKS, 1.0F, 1.0F, false); - } - - Direction direction = (Direction)state.get(FACING); - Direction.Axis axis = direction.getAxis(); - double defOffset = random.nextDouble() * 0.6D - 0.3D; - double offX = axis == Direction.Axis.X ? direction.getOffsetX() * 0.52D : defOffset; - double offY = random.nextDouble() * 9.0D / 16.0D; - double offZ = axis == Direction.Axis.Z ? direction.getOffsetZ() * 0.52D : defOffset; - world.addParticle(ParticleTypes.SMOKE, x + offX, y + offY, z + offZ, 0.0D, 0.0D, 0.0D); - } - } -} +package ru.betterend.blocks; + +import java.util.Collections; +import java.util.List; +import java.util.Random; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.Block; +import net.minecraft.block.BlockRenderType; +import net.minecraft.block.BlockState; +import net.minecraft.block.HorizontalFacingBlock; +import net.minecraft.block.Material; +import net.minecraft.block.MaterialColor; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContext; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.screen.NamedScreenHandlerFactory; +import net.minecraft.screen.ScreenHandler; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.Properties; +import net.minecraft.util.ActionResult; +import net.minecraft.util.BlockMirror; +import net.minecraft.util.BlockRotation; +import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import ru.betterend.blocks.basis.BaseBlockWithEntity; +import ru.betterend.blocks.entities.EndStoneSmelterBlockEntity; + +public class EndStoneSmelter extends BaseBlockWithEntity { + public static final DirectionProperty FACING = HorizontalFacingBlock.FACING; + public static final BooleanProperty LIT = Properties.LIT; + public static final String ID = "end_stone_smelter"; + + public EndStoneSmelter() { + super(FabricBlockSettings.of(Material.STONE, MaterialColor.GRAY) + .hardness(4F) + .resistance(100F) + .requiresTool() + .sounds(BlockSoundGroup.STONE)); + this.setDefaultState(this.stateManager.getDefaultState() + .with(FACING, Direction.NORTH) + .with(LIT, false)); + } + + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + if (world.isClient) { + return ActionResult.SUCCESS; + } else { + this.openScreen(world, pos, player); + return ActionResult.CONSUME; + } + } + + private void openScreen(World world, BlockPos pos, PlayerEntity player) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity instanceof EndStoneSmelterBlockEntity) { + player.openHandledScreen((NamedScreenHandlerFactory) blockEntity); + } + } + + @Override + public BlockState getPlacementState(ItemPlacementContext ctx) { + return this.getDefaultState().with(FACING, ctx.getPlayerFacing().getOpposite()); + } + + @Override + public BlockEntity createBlockEntity(BlockView world) { + return new EndStoneSmelterBlockEntity(); + } + + @Override + public List getDroppedStacks(BlockState state, LootContext.Builder builder) { + return Collections.singletonList(new ItemStack(this)); + } + + @Override + public boolean hasComparatorOutput(BlockState state) { + return true; + } + + @Override + public int getComparatorOutput(BlockState state, World world, BlockPos pos) { + //TODO + return ScreenHandler.calculateComparatorOutput(world.getBlockEntity(pos)); + } + + @Override + public BlockRenderType getRenderType(BlockState state) { + return BlockRenderType.MODEL; + } + + @Override + public BlockState rotate(BlockState state, BlockRotation rotation) { + return (BlockState)state.with(FACING, rotation.rotate((Direction)state.get(FACING))); + } + + @Override + public BlockState mirror(BlockState state, BlockMirror mirror) { + return state.rotate(mirror.getRotation((Direction)state.get(FACING))); + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(FACING, LIT); + } + + @Environment(EnvType.CLIENT) + public void randomDisplayTick(BlockState state, World world, BlockPos pos, Random random) { + if (state.get(LIT)) { + double x = pos.getX() + 0.5D; + double y = pos.getY(); + double z = pos.getZ() + 0.5D; + if (random.nextDouble() < 0.1D) { + world.playSound(x, y, z, SoundEvents.BLOCK_BLASTFURNACE_FIRE_CRACKLE, SoundCategory.BLOCKS, 1.0F, 1.0F, false); + } + + Direction direction = (Direction)state.get(FACING); + Direction.Axis axis = direction.getAxis(); + double defOffset = random.nextDouble() * 0.6D - 0.3D; + double offX = axis == Direction.Axis.X ? direction.getOffsetX() * 0.52D : defOffset; + double offY = random.nextDouble() * 9.0D / 16.0D; + double offZ = axis == Direction.Axis.Z ? direction.getOffsetZ() * 0.52D : defOffset; + world.addParticle(ParticleTypes.SMOKE, x + offX, y + offY, z + offZ, 0.0D, 0.0D, 0.0D); + } + } +} diff --git a/src/main/java/ru/betterend/blocks/EnderBlock.java b/src/main/java/ru/betterend/blocks/EnderBlock.java index 57516d94..1b80fabd 100644 --- a/src/main/java/ru/betterend/blocks/EnderBlock.java +++ b/src/main/java/ru/betterend/blocks/EnderBlock.java @@ -1,28 +1,28 @@ -package ru.betterend.blocks; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.block.BlockState; -import net.minecraft.block.Material; -import net.minecraft.block.MaterialColor; -import net.minecraft.sound.BlockSoundGroup; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.BlockView; -import ru.betterend.blocks.basis.BlockBase; - -public class EnderBlock extends BlockBase { - - public EnderBlock() { - super(FabricBlockSettings.of(Material.STONE, MaterialColor.field_25708) - .hardness(5F) - .resistance(6F) - .requiresTool() - .sounds(BlockSoundGroup.STONE)); - } - - @Environment(EnvType.CLIENT) - public int getColor(BlockState state, BlockView world, BlockPos pos) { - return 0xFF005548; - } -} +package ru.betterend.blocks; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.BlockState; +import net.minecraft.block.Material; +import net.minecraft.block.MaterialColor; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.BlockView; +import ru.betterend.blocks.basis.BlockBase; + +public class EnderBlock extends BlockBase { + + public EnderBlock() { + super(FabricBlockSettings.of(Material.STONE, MaterialColor.field_25708) + .hardness(5F) + .resistance(6F) + .requiresTool() + .sounds(BlockSoundGroup.STONE)); + } + + @Environment(EnvType.CLIENT) + public int getColor(BlockState state, BlockView world, BlockPos pos) { + return 0xFF005548; + } +} diff --git a/src/main/java/ru/betterend/blocks/EternalPedestal.java b/src/main/java/ru/betterend/blocks/EternalPedestal.java index b03bdcae..72818195 100644 --- a/src/main/java/ru/betterend/blocks/EternalPedestal.java +++ b/src/main/java/ru/betterend/blocks/EternalPedestal.java @@ -1,125 +1,125 @@ -package ru.betterend.blocks; - -import java.util.List; - -import com.google.common.collect.Lists; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContext; -import net.minecraft.loot.context.LootContextParameters; -import net.minecraft.state.StateManager; -import net.minecraft.state.property.BooleanProperty; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.world.BlockView; -import net.minecraft.world.World; -import net.minecraft.world.WorldAccess; -import net.minecraft.world.explosion.Explosion; -import ru.betterend.blocks.basis.BlockPedestal; -import ru.betterend.blocks.entities.EternalPedestalEntity; -import ru.betterend.registry.EndBlocks; -import ru.betterend.registry.EndItems; -import ru.betterend.rituals.EternalRitual; - -public class EternalPedestal extends BlockPedestal { - public static final BooleanProperty ACTIVATED = BlockProperties.ACTIVATED; - - public EternalPedestal() { - super(EndBlocks.FLAVOLITE_RUNED_ETERNAL); - this.setDefaultState(this.getDefaultState().with(ACTIVATED, false)); - } - - @Override - public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { - ActionResult result = super.onUse(state, world, pos, player, hand, hit); - if (result.equals(ActionResult.SUCCESS)) { - BlockEntity blockEntity = world.getBlockEntity(pos); - if (blockEntity instanceof EternalPedestalEntity) { - EternalPedestalEntity pedestal = (EternalPedestalEntity) blockEntity; - BlockState updatedState = world.getBlockState(pos); - if (pedestal.isEmpty() && updatedState.get(ACTIVATED)) { - if (pedestal.hasRitual()) { - EternalRitual ritual = pedestal.getRitual(); - ritual.removePortal(); - } - world.setBlockState(pos, updatedState.with(ACTIVATED, false)); - } else { - ItemStack itemStack = pedestal.getStack(0); - if (itemStack.getItem() == EndItems.ETERNAL_CRYSTAL) { - world.setBlockState(pos, updatedState.with(ACTIVATED, true)); - if (pedestal.hasRitual()) { - pedestal.getRitual().checkStructure(); - } else { - EternalRitual ritual = new EternalRitual(world, pos); - ritual.checkStructure(); - } - } - } - } - } - return result; - } - - @Override - public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState newState, WorldAccess world, BlockPos pos, BlockPos posFrom) { - BlockState updated = super.getStateForNeighborUpdate(state, direction, newState, world, pos, posFrom); - if (!updated.isOf(this)) return updated; - if (!this.isPlaceable(updated)) { - return updated.with(ACTIVATED, false); - } - return updated; - } - - @Override - public float calcBlockBreakingDelta(BlockState state, PlayerEntity player, BlockView world, BlockPos pos) { - return 0.0F; - } - - @Override - public float getBlastResistance() { - return Blocks.BEDROCK.getBlastResistance(); - } - - @Override - public boolean shouldDropItemsOnExplosion(Explosion explosion) { - return false; - } - - @Override - public List getDroppedStacks(BlockState state, LootContext.Builder builder) { - if (state.isOf(this)) { - BlockProperties.PedestalState currentState = state.get(BlockProperties.PEDESTAL_STATE); - if (currentState.equals(BlockProperties.PedestalState.BOTTOM) || currentState.equals(BlockProperties.PedestalState.PILLAR)) { - return Lists.newArrayList(); - } - } - List drop = Lists.newArrayList(); - BlockEntity blockEntity = builder.getNullable(LootContextParameters.BLOCK_ENTITY); - if (blockEntity != null && blockEntity instanceof EternalPedestalEntity) { - EternalPedestalEntity pedestal = (EternalPedestalEntity) blockEntity; - if (!pedestal.isEmpty()) { - drop.add(pedestal.getStack(0)); - } - } - return drop; - } - - @Override - protected void appendProperties(StateManager.Builder stateManager) { - super.appendProperties(stateManager); - stateManager.add(ACTIVATED); - } - - @Override - public BlockEntity createBlockEntity(BlockView world) { - return new EternalPedestalEntity(); - } -} +package ru.betterend.blocks; + +import java.util.List; + +import com.google.common.collect.Lists; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContext; +import net.minecraft.loot.context.LootContextParameters; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.explosion.Explosion; +import ru.betterend.blocks.basis.BlockPedestal; +import ru.betterend.blocks.entities.EternalPedestalEntity; +import ru.betterend.registry.EndBlocks; +import ru.betterend.registry.EndItems; +import ru.betterend.rituals.EternalRitual; + +public class EternalPedestal extends BlockPedestal { + public static final BooleanProperty ACTIVATED = BlockProperties.ACTIVATED; + + public EternalPedestal() { + super(EndBlocks.FLAVOLITE_RUNED_ETERNAL); + this.setDefaultState(this.getDefaultState().with(ACTIVATED, false)); + } + + @Override + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + ActionResult result = super.onUse(state, world, pos, player, hand, hit); + if (result.equals(ActionResult.SUCCESS)) { + BlockEntity blockEntity = world.getBlockEntity(pos); + if (blockEntity instanceof EternalPedestalEntity) { + EternalPedestalEntity pedestal = (EternalPedestalEntity) blockEntity; + BlockState updatedState = world.getBlockState(pos); + if (pedestal.isEmpty() && updatedState.get(ACTIVATED)) { + if (pedestal.hasRitual()) { + EternalRitual ritual = pedestal.getRitual(); + ritual.removePortal(); + } + world.setBlockState(pos, updatedState.with(ACTIVATED, false)); + } else { + ItemStack itemStack = pedestal.getStack(0); + if (itemStack.getItem() == EndItems.ETERNAL_CRYSTAL) { + world.setBlockState(pos, updatedState.with(ACTIVATED, true)); + if (pedestal.hasRitual()) { + pedestal.getRitual().checkStructure(); + } else { + EternalRitual ritual = new EternalRitual(world, pos); + ritual.checkStructure(); + } + } + } + } + } + return result; + } + + @Override + public BlockState getStateForNeighborUpdate(BlockState state, Direction direction, BlockState newState, WorldAccess world, BlockPos pos, BlockPos posFrom) { + BlockState updated = super.getStateForNeighborUpdate(state, direction, newState, world, pos, posFrom); + if (!updated.isOf(this)) return updated; + if (!this.isPlaceable(updated)) { + return updated.with(ACTIVATED, false); + } + return updated; + } + + @Override + public float calcBlockBreakingDelta(BlockState state, PlayerEntity player, BlockView world, BlockPos pos) { + return 0.0F; + } + + @Override + public float getBlastResistance() { + return Blocks.BEDROCK.getBlastResistance(); + } + + @Override + public boolean shouldDropItemsOnExplosion(Explosion explosion) { + return false; + } + + @Override + public List getDroppedStacks(BlockState state, LootContext.Builder builder) { + if (state.isOf(this)) { + BlockProperties.PedestalState currentState = state.get(BlockProperties.PEDESTAL_STATE); + if (currentState.equals(BlockProperties.PedestalState.BOTTOM) || currentState.equals(BlockProperties.PedestalState.PILLAR)) { + return Lists.newArrayList(); + } + } + List drop = Lists.newArrayList(); + BlockEntity blockEntity = builder.getNullable(LootContextParameters.BLOCK_ENTITY); + if (blockEntity != null && blockEntity instanceof EternalPedestalEntity) { + EternalPedestalEntity pedestal = (EternalPedestalEntity) blockEntity; + if (!pedestal.isEmpty()) { + drop.add(pedestal.getStack(0)); + } + } + return drop; + } + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + super.appendProperties(stateManager); + stateManager.add(ACTIVATED); + } + + @Override + public BlockEntity createBlockEntity(BlockView world) { + return new EternalPedestalEntity(); + } +} diff --git a/src/main/java/ru/betterend/blocks/EternalRunedFlavolite.java b/src/main/java/ru/betterend/blocks/EternalRunedFlavolite.java index 69be444f..e8fd7644 100644 --- a/src/main/java/ru/betterend/blocks/EternalRunedFlavolite.java +++ b/src/main/java/ru/betterend/blocks/EternalRunedFlavolite.java @@ -1,37 +1,37 @@ -package ru.betterend.blocks; - -import java.util.List; - -import com.google.common.collect.Lists; - -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContext; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.BlockView; -import net.minecraft.world.explosion.Explosion; - -public class EternalRunedFlavolite extends RunedFlavolite { - - @Override - public float calcBlockBreakingDelta(BlockState state, PlayerEntity player, BlockView world, BlockPos pos) { - return 0.0F; - } - - @Override - public float getBlastResistance() { - return Blocks.BEDROCK.getBlastResistance(); - } - - @Override - public boolean shouldDropItemsOnExplosion(Explosion explosion) { - return false; - } - - @Override - public List getDroppedStacks(BlockState state, LootContext.Builder builder) { - return Lists.newArrayList(); - } -} +package ru.betterend.blocks; + +import java.util.List; + +import com.google.common.collect.Lists; + +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContext; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.BlockView; +import net.minecraft.world.explosion.Explosion; + +public class EternalRunedFlavolite extends RunedFlavolite { + + @Override + public float calcBlockBreakingDelta(BlockState state, PlayerEntity player, BlockView world, BlockPos pos) { + return 0.0F; + } + + @Override + public float getBlastResistance() { + return Blocks.BEDROCK.getBlastResistance(); + } + + @Override + public boolean shouldDropItemsOnExplosion(Explosion explosion) { + return false; + } + + @Override + public List getDroppedStacks(BlockState state, LootContext.Builder builder) { + return Lists.newArrayList(); + } +} diff --git a/src/main/java/ru/betterend/blocks/InfusionPedestal.java b/src/main/java/ru/betterend/blocks/InfusionPedestal.java index fa510931..53add7e6 100644 --- a/src/main/java/ru/betterend/blocks/InfusionPedestal.java +++ b/src/main/java/ru/betterend/blocks/InfusionPedestal.java @@ -1,71 +1,71 @@ -package ru.betterend.blocks; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.ShapeContext; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; -import net.minecraft.util.hit.BlockHitResult; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.shape.VoxelShape; -import net.minecraft.util.shape.VoxelShapes; -import net.minecraft.world.BlockView; -import net.minecraft.world.World; -import ru.betterend.blocks.basis.BlockPedestal; -import ru.betterend.blocks.entities.InfusionPedestalEntity; - -public class InfusionPedestal extends BlockPedestal { - private static final VoxelShape SHAPE_DEFAULT; - private static final VoxelShape SHAPE_PEDESTAL_TOP; - - public InfusionPedestal() { - super(Blocks.OBSIDIAN); - this.height = 1.08F; - } - - @Override - public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { - ActionResult result = super.onUse(state, world, pos, player, hand, hit); - return result; - } - - @Override - public BlockEntity createBlockEntity(BlockView world) { - return new InfusionPedestalEntity(); - } - - @Override - public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { - if (state.isOf(this)) { - switch(state.get(STATE)) { - case PEDESTAL_TOP: { - return SHAPE_PEDESTAL_TOP; - } - case DEFAULT: { - return SHAPE_DEFAULT; - } - default: { - return super.getOutlineShape(state, world, pos, context); - } - } - } - return super.getOutlineShape(state, world, pos, context); - } - - static { - VoxelShape basinUp = Block.createCuboidShape(2, 3, 2, 14, 4, 14); - VoxelShape basinDown = Block.createCuboidShape(0, 0, 0, 16, 3, 16); - VoxelShape pedestalTop = Block.createCuboidShape(1, 9, 1, 15, 11, 15); - VoxelShape pedestalDefault = Block.createCuboidShape(1, 13, 1, 15, 15, 15); - VoxelShape pillar = Block.createCuboidShape(3, 0, 3, 13, 9, 13); - VoxelShape pillarDefault = Block.createCuboidShape(3, 4, 3, 13, 13, 13); - VoxelShape eyeDefault = Block.createCuboidShape(4, 15, 4, 12, 16, 12); - VoxelShape eyeTop = Block.createCuboidShape(4, 11, 4, 12, 12, 12); - VoxelShape basin = VoxelShapes.union(basinDown, basinUp); - SHAPE_DEFAULT = VoxelShapes.union(basin, pillarDefault, pedestalDefault, eyeDefault); - SHAPE_PEDESTAL_TOP = VoxelShapes.union(pillar, pedestalTop, eyeTop); - } -} +package ru.betterend.blocks; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.ShapeContext; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import ru.betterend.blocks.basis.BlockPedestal; +import ru.betterend.blocks.entities.InfusionPedestalEntity; + +public class InfusionPedestal extends BlockPedestal { + private static final VoxelShape SHAPE_DEFAULT; + private static final VoxelShape SHAPE_PEDESTAL_TOP; + + public InfusionPedestal() { + super(Blocks.OBSIDIAN); + this.height = 1.08F; + } + + @Override + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + ActionResult result = super.onUse(state, world, pos, player, hand, hit); + return result; + } + + @Override + public BlockEntity createBlockEntity(BlockView world) { + return new InfusionPedestalEntity(); + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { + if (state.isOf(this)) { + switch(state.get(STATE)) { + case PEDESTAL_TOP: { + return SHAPE_PEDESTAL_TOP; + } + case DEFAULT: { + return SHAPE_DEFAULT; + } + default: { + return super.getOutlineShape(state, world, pos, context); + } + } + } + return super.getOutlineShape(state, world, pos, context); + } + + static { + VoxelShape basinUp = Block.createCuboidShape(2, 3, 2, 14, 4, 14); + VoxelShape basinDown = Block.createCuboidShape(0, 0, 0, 16, 3, 16); + VoxelShape pedestalTop = Block.createCuboidShape(1, 9, 1, 15, 11, 15); + VoxelShape pedestalDefault = Block.createCuboidShape(1, 13, 1, 15, 15, 15); + VoxelShape pillar = Block.createCuboidShape(3, 0, 3, 13, 9, 13); + VoxelShape pillarDefault = Block.createCuboidShape(3, 4, 3, 13, 13, 13); + VoxelShape eyeDefault = Block.createCuboidShape(4, 15, 4, 12, 16, 12); + VoxelShape eyeTop = Block.createCuboidShape(4, 11, 4, 12, 12, 12); + VoxelShape basin = VoxelShapes.union(basinDown, basinUp); + SHAPE_DEFAULT = VoxelShapes.union(basin, pillarDefault, pedestalDefault, eyeDefault); + SHAPE_PEDESTAL_TOP = VoxelShapes.union(pillar, pedestalTop, eyeTop); + } +} diff --git a/src/main/java/ru/betterend/blocks/RunedFlavolite.java b/src/main/java/ru/betterend/blocks/RunedFlavolite.java index e49d9e21..47e207a8 100644 --- a/src/main/java/ru/betterend/blocks/RunedFlavolite.java +++ b/src/main/java/ru/betterend/blocks/RunedFlavolite.java @@ -1,26 +1,26 @@ -package ru.betterend.blocks; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.state.StateManager; -import net.minecraft.state.property.BooleanProperty; -import ru.betterend.blocks.basis.BlockBase; -import ru.betterend.registry.EndBlocks; - -public class RunedFlavolite extends BlockBase { - public static final BooleanProperty ACTIVATED = BlockProperties.ACTIVATED; - - public RunedFlavolite() { - super(FabricBlockSettings.copyOf(EndBlocks.FLAVOLITE.polished).resistance(Blocks.OBSIDIAN.getBlastResistance()).luminance(state -> { - return state.get(ACTIVATED) ? 8 : 0; - })); - this.setDefaultState(stateManager.getDefaultState().with(ACTIVATED, false)); - } - - @Override - protected void appendProperties(StateManager.Builder stateManager) { - stateManager.add(ACTIVATED); - } -} +package ru.betterend.blocks; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import ru.betterend.blocks.basis.BlockBase; +import ru.betterend.registry.EndBlocks; + +public class RunedFlavolite extends BlockBase { + public static final BooleanProperty ACTIVATED = BlockProperties.ACTIVATED; + + public RunedFlavolite() { + super(FabricBlockSettings.copyOf(EndBlocks.FLAVOLITE.polished).resistance(Blocks.OBSIDIAN.getBlastResistance()).luminance(state -> { + return state.get(ACTIVATED) ? 8 : 0; + })); + this.setDefaultState(stateManager.getDefaultState().with(ACTIVATED, false)); + } + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + stateManager.add(ACTIVATED); + } +} diff --git a/src/main/java/ru/betterend/blocks/TerminiteBlock.java b/src/main/java/ru/betterend/blocks/TerminiteBlock.java index 4270e3a8..204a2e55 100644 --- a/src/main/java/ru/betterend/blocks/TerminiteBlock.java +++ b/src/main/java/ru/betterend/blocks/TerminiteBlock.java @@ -1,17 +1,17 @@ -package ru.betterend.blocks; - -import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; -import net.minecraft.block.Material; -import net.minecraft.block.MaterialColor; -import net.minecraft.sound.BlockSoundGroup; -import ru.betterend.blocks.basis.BlockBase; - -public class TerminiteBlock extends BlockBase { - public TerminiteBlock() { - super(FabricBlockSettings.of(Material.METAL, MaterialColor.field_25708) - .hardness(7F) - .resistance(9F) - .requiresTool() - .sounds(BlockSoundGroup.METAL)); - } -} +package ru.betterend.blocks; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.Material; +import net.minecraft.block.MaterialColor; +import net.minecraft.sound.BlockSoundGroup; +import ru.betterend.blocks.basis.BlockBase; + +public class TerminiteBlock extends BlockBase { + public TerminiteBlock() { + super(FabricBlockSettings.of(Material.METAL, MaterialColor.field_25708) + .hardness(7F) + .resistance(9F) + .requiresTool() + .sounds(BlockSoundGroup.METAL)); + } +} diff --git a/src/main/java/ru/betterend/blocks/basis/BaseBlockWithEntity.java b/src/main/java/ru/betterend/blocks/basis/BaseBlockWithEntity.java index 05bbad65..4442e05d 100644 --- a/src/main/java/ru/betterend/blocks/basis/BaseBlockWithEntity.java +++ b/src/main/java/ru/betterend/blocks/basis/BaseBlockWithEntity.java @@ -1,28 +1,28 @@ -package ru.betterend.blocks.basis; - -import java.util.Collections; -import java.util.List; - -import net.minecraft.block.BlockState; -import net.minecraft.block.BlockWithEntity; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.context.LootContext; -import net.minecraft.world.BlockView; - -public class BaseBlockWithEntity extends BlockWithEntity { - - public BaseBlockWithEntity(Settings settings) { - super(settings); - } - - @Override - public BlockEntity createBlockEntity(BlockView world) { - return null; - } - - @Override - public List getDroppedStacks(BlockState state, LootContext.Builder builder) { - return Collections.singletonList(new ItemStack(this)); - } -} +package ru.betterend.blocks.basis; + +import java.util.Collections; +import java.util.List; + +import net.minecraft.block.BlockState; +import net.minecraft.block.BlockWithEntity; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContext; +import net.minecraft.world.BlockView; + +public class BaseBlockWithEntity extends BlockWithEntity { + + public BaseBlockWithEntity(Settings settings) { + super(settings); + } + + @Override + public BlockEntity createBlockEntity(BlockView world) { + return null; + } + + @Override + public List getDroppedStacks(BlockState state, LootContext.Builder builder) { + return Collections.singletonList(new ItemStack(this)); + } +} diff --git a/src/main/java/ru/betterend/blocks/basis/BlockStoneLantern.java b/src/main/java/ru/betterend/blocks/basis/BlockStoneLantern.java new file mode 100644 index 00000000..be5a6b9b --- /dev/null +++ b/src/main/java/ru/betterend/blocks/basis/BlockStoneLantern.java @@ -0,0 +1,146 @@ +package ru.betterend.blocks.basis; + +import java.io.Reader; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.ShapeContext; +import net.minecraft.block.Waterloggable; +import net.minecraft.client.color.block.BlockColorProvider; +import net.minecraft.client.color.item.ItemColorProvider; +import net.minecraft.fluid.Fluids; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.state.property.Properties; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Vec3i; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.world.BlockView; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.WorldView; +import ru.betterend.blocks.AuroraCrystalBlock; +import ru.betterend.interfaces.IColorProvider; +import ru.betterend.interfaces.Patterned; +import ru.betterend.util.MHelper; + +public class BlockStoneLantern extends BlockBaseNotFull implements IColorProvider, Waterloggable { + public static final BooleanProperty IS_FLOOR = BooleanProperty.of("is_floor"); + public static final BooleanProperty WATERLOGGED = Properties.WATERLOGGED; + + private static final VoxelShape SHAPE_CEIL = Block.createCuboidShape(3, 1, 3, 13, 16, 13); + private static final VoxelShape SHAPE_FLOOR = Block.createCuboidShape(3, 0, 3, 13, 15, 13); + private static final Vec3i[] COLORS = AuroraCrystalBlock.COLORS; + + public BlockStoneLantern(Block source) { + super(FabricBlockSettings.copyOf(source).luminance(15)); + } + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + stateManager.add(IS_FLOOR, WATERLOGGED); + } + + @Override + public BlockState getPlacementState(ItemPlacementContext ctx) { + WorldView worldView = ctx.getWorld(); + BlockPos blockPos = ctx.getBlockPos(); + Direction dir = ctx.getSide(); + if (dir == Direction.DOWN) { + if (sideCoversSmallSquare(worldView, blockPos.up(), Direction.DOWN)) { + boolean water = worldView.getFluidState(blockPos).getFluid() == Fluids.WATER; + return getDefaultState().with(IS_FLOOR, false).with(WATERLOGGED, water); + } + } + else { + if (sideCoversSmallSquare(worldView, blockPos.down(), Direction.UP)) { + boolean water = worldView.getFluidState(blockPos).getFluid() == Fluids.WATER; + return getDefaultState().with(IS_FLOOR, true).with(WATERLOGGED, water); + } + } + return null; + } + + @Override + public BlockColorProvider getProvider() { + return (state, world, pos, tintIndex) -> { + long i = (long) pos.getX() + (long) pos.getY() + (long) pos.getZ(); + double delta = i * 0.1; + int index = MHelper.floor(delta); + int index2 = (index + 1) & 3; + delta -= index; + index &= 3; + + Vec3i color1 = COLORS[index]; + Vec3i color2 = COLORS[index2]; + + int r = MHelper.floor(MathHelper.lerp(delta, color1.getX(), color2.getX())); + int g = MHelper.floor(MathHelper.lerp(delta, color1.getY(), color2.getY())); + int b = MHelper.floor(MathHelper.lerp(delta, color1.getZ(), color2.getZ())); + + return MHelper.color(r, g, b); + }; + } + + @Override + public ItemColorProvider getItemProvider() { + return (stack, tintIndex) -> { + return MHelper.color(COLORS[3].getX(), COLORS[3].getY(), COLORS[3].getZ()); + }; + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext ePos) { + return state.get(IS_FLOOR) ? SHAPE_FLOOR : SHAPE_CEIL; + } + + @Override + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + if (state.get(IS_FLOOR)) { + return sideCoversSmallSquare(world, pos.down(), Direction.UP); + } + else { + return sideCoversSmallSquare(world, pos.up(), Direction.DOWN); + } + } + + @Override + public BlockState getStateForNeighborUpdate(BlockState state, Direction facing, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) { + Boolean water = state.get(WATERLOGGED); + if (water) { + world.getFluidTickScheduler().schedule(pos, Fluids.WATER, Fluids.WATER.getTickRate(world)); + } + if (!canPlaceAt(state, world, pos)) { + return water ? Blocks.WATER.getDefaultState() : Blocks.AIR.getDefaultState(); + } + else { + return state; + } + } + + @Override + public Identifier statePatternId() { + return Patterned.STATE_STONE_LANTERN; + } + + @Override + public String getModelPattern(String block) { + Identifier blockId = Registry.BLOCK.getId(this); + if (block.contains("ceil")) { + return Patterned.createJson(Patterned.BLOCK_STONE_LANTERN_CEIL, blockId, blockId.getPath()); + } + return Patterned.createJson(Patterned.BLOCK_STONE_LANTERN_FLOOR, blockId, blockId.getPath()); + } + + @Override + public String getStatesPattern(Reader data) { + Identifier blockId = Registry.BLOCK.getId(this); + return Patterned.createJson(data, blockId, blockId.getPath()); + } +} diff --git a/src/main/java/ru/betterend/blocks/entities/EternalPedestalEntity.java b/src/main/java/ru/betterend/blocks/entities/EternalPedestalEntity.java index 0d15041f..27f1132a 100644 --- a/src/main/java/ru/betterend/blocks/entities/EternalPedestalEntity.java +++ b/src/main/java/ru/betterend/blocks/entities/EternalPedestalEntity.java @@ -1,48 +1,48 @@ -package ru.betterend.blocks.entities; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import ru.betterend.rituals.EternalRitual; - -public class EternalPedestalEntity extends PedestalBlockEntity { - private EternalRitual linkedRitual; - - public boolean hasRitual() { - return this.linkedRitual != null; - } - - public void linkRitual(EternalRitual ritual) { - this.linkedRitual = ritual; - } - - public EternalRitual getRitual() { - return this.linkedRitual; - } - - @Override - public void setLocation(World world, BlockPos pos) { - super.setLocation(world, pos); - if (hasRitual()) { - this.linkedRitual.setWorld(world); - } - } - - @Override - public void fromTag(BlockState state, CompoundTag tag) { - super.fromTag(state, tag); - if (tag.contains("ritual")) { - this.linkedRitual = new EternalRitual(world); - this.linkedRitual.fromTag(tag.getCompound("ritual")); - } - } - - @Override - public CompoundTag toTag(CompoundTag tag) { - if (this.hasRitual()) { - tag.put("ritual", linkedRitual.toTag(new CompoundTag())); - } - return super.toTag(tag); - } -} +package ru.betterend.blocks.entities; + +import net.minecraft.block.BlockState; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import ru.betterend.rituals.EternalRitual; + +public class EternalPedestalEntity extends PedestalBlockEntity { + private EternalRitual linkedRitual; + + public boolean hasRitual() { + return this.linkedRitual != null; + } + + public void linkRitual(EternalRitual ritual) { + this.linkedRitual = ritual; + } + + public EternalRitual getRitual() { + return this.linkedRitual; + } + + @Override + public void setLocation(World world, BlockPos pos) { + super.setLocation(world, pos); + if (hasRitual()) { + this.linkedRitual.setWorld(world); + } + } + + @Override + public void fromTag(BlockState state, CompoundTag tag) { + super.fromTag(state, tag); + if (tag.contains("ritual")) { + this.linkedRitual = new EternalRitual(world); + this.linkedRitual.fromTag(tag.getCompound("ritual")); + } + } + + @Override + public CompoundTag toTag(CompoundTag tag) { + if (this.hasRitual()) { + tag.put("ritual", linkedRitual.toTag(new CompoundTag())); + } + return super.toTag(tag); + } +} diff --git a/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java b/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java index a0447214..cb22b342 100644 --- a/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java +++ b/src/main/java/ru/betterend/blocks/entities/InfusionPedestalEntity.java @@ -1,24 +1,24 @@ -package ru.betterend.blocks.entities; - -import net.minecraft.block.BlockState; -import net.minecraft.nbt.CompoundTag; -import ru.betterend.rituals.InfusionRitual; - -public class InfusionPedestalEntity extends PedestalBlockEntity { - - private InfusionRitual activeRitual; - - public boolean hasRitual() { - return this.activeRitual != null; - } - - @Override - public void fromTag(BlockState state, CompoundTag tag) { - super.fromTag(state, tag); - } - - @Override - public CompoundTag toTag(CompoundTag tag) { - return super.toTag(tag); - } -} +package ru.betterend.blocks.entities; + +import net.minecraft.block.BlockState; +import net.minecraft.nbt.CompoundTag; +import ru.betterend.rituals.InfusionRitual; + +public class InfusionPedestalEntity extends PedestalBlockEntity { + + private InfusionRitual activeRitual; + + public boolean hasRitual() { + return this.activeRitual != null; + } + + @Override + public void fromTag(BlockState state, CompoundTag tag) { + super.fromTag(state, tag); + } + + @Override + public CompoundTag toTag(CompoundTag tag) { + return super.toTag(tag); + } +} diff --git a/src/main/java/ru/betterend/blocks/entities/PedestalBlockEntity.java b/src/main/java/ru/betterend/blocks/entities/PedestalBlockEntity.java index c21e3a42..423f29c6 100644 --- a/src/main/java/ru/betterend/blocks/entities/PedestalBlockEntity.java +++ b/src/main/java/ru/betterend/blocks/entities/PedestalBlockEntity.java @@ -1,105 +1,105 @@ -package ru.betterend.blocks.entities; - -import net.minecraft.block.BlockState; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.Inventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.packet.s2c.play.BlockEntityUpdateS2CPacket; -import net.minecraft.util.Tickable; -import ru.betterend.registry.EndBlockEntities; - -public class PedestalBlockEntity extends BlockEntity implements Inventory, Tickable { - private ItemStack activeItem = ItemStack.EMPTY; - - private final int maxAge = 314; - private int age; - - public PedestalBlockEntity() { - super(EndBlockEntities.PEDESTAL); - } - - public int getAge() { - return this.age; - } - - public int getMaxAge() { - return this.maxAge; - } - - @Override - public void clear() { - this.activeItem = ItemStack.EMPTY; - } - - @Override - public int size() { - return 1; - } - - @Override - public boolean isEmpty() { - return this.activeItem.isEmpty(); - } - - @Override - public ItemStack getStack(int slot) { - return this.activeItem; - } - - @Override - public ItemStack removeStack(int slot, int amount) { - return this.removeStack(slot); - } - - @Override - public ItemStack removeStack(int slot) { - return this.activeItem = ItemStack.EMPTY; - } - - @Override - public void setStack(int slot, ItemStack stack) { - this.activeItem = stack; - } - - @Override - public boolean canPlayerUse(PlayerEntity player) { - return true; - } - - @Override - public BlockEntityUpdateS2CPacket toUpdatePacket() { - return new BlockEntityUpdateS2CPacket(pos, 32, this.toInitialChunkDataTag()); - } - - @Override - public CompoundTag toInitialChunkDataTag() { - return this.toTag(new CompoundTag()); - } - - @Override - public void fromTag(BlockState state, CompoundTag tag) { - super.fromTag(state, tag); - if (tag.contains("active_item")) { - CompoundTag itemTag = tag.getCompound("active_item"); - this.activeItem = ItemStack.fromTag(itemTag); - } - } - - @Override - public CompoundTag toTag(CompoundTag tag) { - tag.put("active_item", activeItem.toTag(new CompoundTag())); - return super.toTag(tag); - } - - @Override - public void tick() { - if (!isEmpty()) { - this.age++; - if (age > maxAge) { - this.age = 0; - } - } - } -} +package ru.betterend.blocks.entities; + +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.Inventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.packet.s2c.play.BlockEntityUpdateS2CPacket; +import net.minecraft.util.Tickable; +import ru.betterend.registry.EndBlockEntities; + +public class PedestalBlockEntity extends BlockEntity implements Inventory, Tickable { + private ItemStack activeItem = ItemStack.EMPTY; + + private final int maxAge = 314; + private int age; + + public PedestalBlockEntity() { + super(EndBlockEntities.PEDESTAL); + } + + public int getAge() { + return this.age; + } + + public int getMaxAge() { + return this.maxAge; + } + + @Override + public void clear() { + this.activeItem = ItemStack.EMPTY; + } + + @Override + public int size() { + return 1; + } + + @Override + public boolean isEmpty() { + return this.activeItem.isEmpty(); + } + + @Override + public ItemStack getStack(int slot) { + return this.activeItem; + } + + @Override + public ItemStack removeStack(int slot, int amount) { + return this.removeStack(slot); + } + + @Override + public ItemStack removeStack(int slot) { + return this.activeItem = ItemStack.EMPTY; + } + + @Override + public void setStack(int slot, ItemStack stack) { + this.activeItem = stack; + } + + @Override + public boolean canPlayerUse(PlayerEntity player) { + return true; + } + + @Override + public BlockEntityUpdateS2CPacket toUpdatePacket() { + return new BlockEntityUpdateS2CPacket(pos, 32, this.toInitialChunkDataTag()); + } + + @Override + public CompoundTag toInitialChunkDataTag() { + return this.toTag(new CompoundTag()); + } + + @Override + public void fromTag(BlockState state, CompoundTag tag) { + super.fromTag(state, tag); + if (tag.contains("active_item")) { + CompoundTag itemTag = tag.getCompound("active_item"); + this.activeItem = ItemStack.fromTag(itemTag); + } + } + + @Override + public CompoundTag toTag(CompoundTag tag) { + tag.put("active_item", activeItem.toTag(new CompoundTag())); + return super.toTag(tag); + } + + @Override + public void tick() { + if (!isEmpty()) { + this.age++; + if (age > maxAge) { + this.age = 0; + } + } + } +} diff --git a/src/main/java/ru/betterend/blocks/entities/render/EndCrystalRenderer.java b/src/main/java/ru/betterend/blocks/entities/render/EndCrystalRenderer.java index 7179aa88..2ff24d70 100644 --- a/src/main/java/ru/betterend/blocks/entities/render/EndCrystalRenderer.java +++ b/src/main/java/ru/betterend/blocks/entities/render/EndCrystalRenderer.java @@ -1,94 +1,94 @@ -package ru.betterend.blocks.entities.render; - -import net.minecraft.client.model.ModelPart; -import net.minecraft.client.render.OverlayTexture; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.render.VertexConsumerProvider; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.client.util.math.Vector3f; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.Matrix3f; -import net.minecraft.util.math.Matrix4f; -import net.minecraft.util.math.Quaternion; - -public class EndCrystalRenderer { - private static final Identifier CRYSTAL_TEXTURE = new Identifier("textures/entity/end_crystal/end_crystal.png"); - private static final Identifier CRYSTAL_BEAM_TEXTURE = new Identifier("textures/entity/end_crystal/end_crystal_beam.png"); - private static final RenderLayer CRYSTAL_BEAM_LAYER; - private static final RenderLayer END_CRYSTAL; - private static final ModelPart CORE; - private static final ModelPart FRAME; - private static final int AGE_CYCLE = 240; - private static final float SINE_45_DEGREES; - - public static void render(int age, int maxAge, float tickDelta, MatrixStack matrices, VertexConsumerProvider vertexConsumerProvider, int light) { - float k = (float) AGE_CYCLE / maxAge; - float rotation = (age * k + tickDelta) * 3.0F; - VertexConsumer vertexConsumer = vertexConsumerProvider.getBuffer(END_CRYSTAL); - matrices.push(); - matrices.scale(0.8F, 0.8F, 0.8F); - matrices.translate(0.0D, -0.5D, 0.0D); - matrices.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(rotation)); - matrices.translate(0.0D, 0.8F, 0.0D); - matrices.multiply(new Quaternion(new Vector3f(SINE_45_DEGREES, 0.0F, SINE_45_DEGREES), 60.0F, true)); - FRAME.render(matrices, vertexConsumer, light, OverlayTexture.DEFAULT_UV); - matrices.scale(0.875F, 0.875F, 0.875F); - matrices.multiply(new Quaternion(new Vector3f(SINE_45_DEGREES, 0.0F, SINE_45_DEGREES), 60.0F, true)); - matrices.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(rotation)); - FRAME.render(matrices, vertexConsumer, light, OverlayTexture.DEFAULT_UV); - matrices.scale(0.875F, 0.875F, 0.875F); - matrices.multiply(new Quaternion(new Vector3f(SINE_45_DEGREES, 0.0F, SINE_45_DEGREES), 60.0F, true)); - matrices.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(rotation)); - CORE.render(matrices, vertexConsumer, light, OverlayTexture.DEFAULT_UV); - matrices.pop(); - } - - public static void renderBeam(BlockPos start, BlockPos end, float tickDelta, int age, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light) { - float dx = start.getX() - end.getX() + 1.0F; - float dy = start.getY() - end.getY() + 1.0F; - float dz = start.getZ() - end.getZ() + 1.0F; - float f = MathHelper.sqrt(dx * dx + dz * dz); - float g = MathHelper.sqrt(dx * dx + dy * dy + dz * dz); - matrices.push(); - matrices.translate(0.0D, 2.0D, 0.0D); - matrices.multiply(Vector3f.POSITIVE_Y.getRadialQuaternion((float)(-Math.atan2((double)dz, (double)dx)) - 1.5707964F)); - matrices.multiply(Vector3f.POSITIVE_X.getRadialQuaternion((float)(-Math.atan2((double)f, (double)dy)) - 1.5707964F)); - VertexConsumer vertexConsumer = vertexConsumers.getBuffer(CRYSTAL_BEAM_LAYER); - float h = 0.0F - ((float)age + tickDelta) * 0.01F; - float i = MathHelper.sqrt(dx * dx + dy * dy + dz * dz) / 32.0F - ((float)age + tickDelta) * 0.01F; - float k = 0.0F; - float l = 0.75F; - float m = 0.0F; - MatrixStack.Entry entry = matrices.peek(); - Matrix4f matrix4f = entry.getModel(); - Matrix3f matrix3f = entry.getNormal(); - - for(int n = 1; n <= 8; ++n) { - float o = MathHelper.sin((float)n * 6.2831855F / 8.0F) * 0.75F; - float p = MathHelper.cos((float)n * 6.2831855F / 8.0F) * 0.75F; - float q = (float)n / 8.0F; - vertexConsumer.vertex(matrix4f, k * 0.2F, l * 0.2F, 0.0F).color(0, 0, 0, 255).texture(m, h).overlay(OverlayTexture.DEFAULT_UV).light(light).normal(matrix3f, 0.0F, -1.0F, 0.0F).next(); - vertexConsumer.vertex(matrix4f, k, l, g).color(255, 255, 255, 255).texture(m, i).overlay(OverlayTexture.DEFAULT_UV).light(light).normal(matrix3f, 0.0F, -1.0F, 0.0F).next(); - vertexConsumer.vertex(matrix4f, o, p, g).color(255, 255, 255, 255).texture(q, i).overlay(OverlayTexture.DEFAULT_UV).light(light).normal(matrix3f, 0.0F, -1.0F, 0.0F).next(); - vertexConsumer.vertex(matrix4f, o * 0.2F, p * 0.2F, 0.0F).color(0, 0, 0, 255).texture(q, h).overlay(OverlayTexture.DEFAULT_UV).light(light).normal(matrix3f, 0.0F, -1.0F, 0.0F).next(); - k = o; - l = p; - m = q; - } - - matrices.pop(); - } - - static { - END_CRYSTAL = RenderLayer.getEntityCutoutNoCull(CRYSTAL_TEXTURE); - CRYSTAL_BEAM_LAYER = RenderLayer.getEntitySmoothCutout(CRYSTAL_BEAM_TEXTURE); - SINE_45_DEGREES = (float) Math.sin(0.7853981633974483D); - FRAME = new ModelPart(64, 32, 0, 0); - FRAME.addCuboid(-4.0F, -4.0F, -4.0F, 8.0F, 8.0F, 8.0F); - CORE = new ModelPart(64, 32, 32, 0); - CORE.addCuboid(-4.0F, -4.0F, -4.0F, 8.0F, 8.0F, 8.0F); - } -} +package ru.betterend.blocks.entities.render; + +import net.minecraft.client.model.ModelPart; +import net.minecraft.client.render.OverlayTexture; +import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.util.math.Vector3f; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Matrix3f; +import net.minecraft.util.math.Matrix4f; +import net.minecraft.util.math.Quaternion; + +public class EndCrystalRenderer { + private static final Identifier CRYSTAL_TEXTURE = new Identifier("textures/entity/end_crystal/end_crystal.png"); + private static final Identifier CRYSTAL_BEAM_TEXTURE = new Identifier("textures/entity/end_crystal/end_crystal_beam.png"); + private static final RenderLayer CRYSTAL_BEAM_LAYER; + private static final RenderLayer END_CRYSTAL; + private static final ModelPart CORE; + private static final ModelPart FRAME; + private static final int AGE_CYCLE = 240; + private static final float SINE_45_DEGREES; + + public static void render(int age, int maxAge, float tickDelta, MatrixStack matrices, VertexConsumerProvider vertexConsumerProvider, int light) { + float k = (float) AGE_CYCLE / maxAge; + float rotation = (age * k + tickDelta) * 3.0F; + VertexConsumer vertexConsumer = vertexConsumerProvider.getBuffer(END_CRYSTAL); + matrices.push(); + matrices.scale(0.8F, 0.8F, 0.8F); + matrices.translate(0.0D, -0.5D, 0.0D); + matrices.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(rotation)); + matrices.translate(0.0D, 0.8F, 0.0D); + matrices.multiply(new Quaternion(new Vector3f(SINE_45_DEGREES, 0.0F, SINE_45_DEGREES), 60.0F, true)); + FRAME.render(matrices, vertexConsumer, light, OverlayTexture.DEFAULT_UV); + matrices.scale(0.875F, 0.875F, 0.875F); + matrices.multiply(new Quaternion(new Vector3f(SINE_45_DEGREES, 0.0F, SINE_45_DEGREES), 60.0F, true)); + matrices.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(rotation)); + FRAME.render(matrices, vertexConsumer, light, OverlayTexture.DEFAULT_UV); + matrices.scale(0.875F, 0.875F, 0.875F); + matrices.multiply(new Quaternion(new Vector3f(SINE_45_DEGREES, 0.0F, SINE_45_DEGREES), 60.0F, true)); + matrices.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(rotation)); + CORE.render(matrices, vertexConsumer, light, OverlayTexture.DEFAULT_UV); + matrices.pop(); + } + + public static void renderBeam(BlockPos start, BlockPos end, float tickDelta, int age, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light) { + float dx = start.getX() - end.getX() + 1.0F; + float dy = start.getY() - end.getY() + 1.0F; + float dz = start.getZ() - end.getZ() + 1.0F; + float f = MathHelper.sqrt(dx * dx + dz * dz); + float g = MathHelper.sqrt(dx * dx + dy * dy + dz * dz); + matrices.push(); + matrices.translate(0.0D, 2.0D, 0.0D); + matrices.multiply(Vector3f.POSITIVE_Y.getRadialQuaternion((float)(-Math.atan2((double)dz, (double)dx)) - 1.5707964F)); + matrices.multiply(Vector3f.POSITIVE_X.getRadialQuaternion((float)(-Math.atan2((double)f, (double)dy)) - 1.5707964F)); + VertexConsumer vertexConsumer = vertexConsumers.getBuffer(CRYSTAL_BEAM_LAYER); + float h = 0.0F - ((float)age + tickDelta) * 0.01F; + float i = MathHelper.sqrt(dx * dx + dy * dy + dz * dz) / 32.0F - ((float)age + tickDelta) * 0.01F; + float k = 0.0F; + float l = 0.75F; + float m = 0.0F; + MatrixStack.Entry entry = matrices.peek(); + Matrix4f matrix4f = entry.getModel(); + Matrix3f matrix3f = entry.getNormal(); + + for(int n = 1; n <= 8; ++n) { + float o = MathHelper.sin((float)n * 6.2831855F / 8.0F) * 0.75F; + float p = MathHelper.cos((float)n * 6.2831855F / 8.0F) * 0.75F; + float q = (float)n / 8.0F; + vertexConsumer.vertex(matrix4f, k * 0.2F, l * 0.2F, 0.0F).color(0, 0, 0, 255).texture(m, h).overlay(OverlayTexture.DEFAULT_UV).light(light).normal(matrix3f, 0.0F, -1.0F, 0.0F).next(); + vertexConsumer.vertex(matrix4f, k, l, g).color(255, 255, 255, 255).texture(m, i).overlay(OverlayTexture.DEFAULT_UV).light(light).normal(matrix3f, 0.0F, -1.0F, 0.0F).next(); + vertexConsumer.vertex(matrix4f, o, p, g).color(255, 255, 255, 255).texture(q, i).overlay(OverlayTexture.DEFAULT_UV).light(light).normal(matrix3f, 0.0F, -1.0F, 0.0F).next(); + vertexConsumer.vertex(matrix4f, o * 0.2F, p * 0.2F, 0.0F).color(0, 0, 0, 255).texture(q, h).overlay(OverlayTexture.DEFAULT_UV).light(light).normal(matrix3f, 0.0F, -1.0F, 0.0F).next(); + k = o; + l = p; + m = q; + } + + matrices.pop(); + } + + static { + END_CRYSTAL = RenderLayer.getEntityCutoutNoCull(CRYSTAL_TEXTURE); + CRYSTAL_BEAM_LAYER = RenderLayer.getEntitySmoothCutout(CRYSTAL_BEAM_TEXTURE); + SINE_45_DEGREES = (float) Math.sin(0.7853981633974483D); + FRAME = new ModelPart(64, 32, 0, 0); + FRAME.addCuboid(-4.0F, -4.0F, -4.0F, 8.0F, 8.0F, 8.0F); + CORE = new ModelPart(64, 32, 32, 0); + CORE.addCuboid(-4.0F, -4.0F, -4.0F, 8.0F, 8.0F, 8.0F); + } +} diff --git a/src/main/java/ru/betterend/blocks/entities/render/PedestalItemRenderer.java b/src/main/java/ru/betterend/blocks/entities/render/PedestalItemRenderer.java index 67f78c17..e3dc9a03 100644 --- a/src/main/java/ru/betterend/blocks/entities/render/PedestalItemRenderer.java +++ b/src/main/java/ru/betterend/blocks/entities/render/PedestalItemRenderer.java @@ -1,75 +1,75 @@ -package ru.betterend.blocks.entities.render; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.block.BlockState; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.render.RenderLayer; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.render.VertexConsumerProvider; -import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher; -import net.minecraft.client.render.block.entity.BlockEntityRenderer; -import net.minecraft.client.render.model.BakedModel; -import net.minecraft.client.render.model.json.ModelTransformation; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.client.util.math.Vector3f; -import net.minecraft.item.BlockItem; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.DyeColor; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.MathHelper; -import ru.betterend.blocks.EternalPedestal; -import ru.betterend.blocks.basis.BlockPedestal; -import ru.betterend.blocks.entities.PedestalBlockEntity; -import ru.betterend.client.render.BeamRenderer; -import ru.betterend.registry.EndBlocks; - -@Environment(EnvType.CLIENT) -public class PedestalItemRenderer extends BlockEntityRenderer { - private static final Identifier BEAM_TEXTURE = new Identifier("textures/entity/end_gateway_beam.png"); - - public PedestalItemRenderer(BlockEntityRenderDispatcher dispatcher) { - super(dispatcher); - } - - @Override - public void render(PedestalBlockEntity blockEntity, float tickDelta, MatrixStack matrices, - VertexConsumerProvider vertexConsumers, int light, int overlay) { - - if (blockEntity.isEmpty()) return; - - BlockState state = blockEntity.getWorld().getBlockState(blockEntity.getPos()); - ItemStack activeItem = blockEntity.getStack(0); - matrices.push(); - MinecraftClient minecraft = MinecraftClient.getInstance(); - BakedModel model = minecraft.getItemRenderer().getHeldItemModel(activeItem, blockEntity.getWorld(), null); - Vector3f translate = model.getTransformation().ground.translation; - BlockPedestal pedestal = (BlockPedestal) state.getBlock(); - matrices.translate(translate.getX(), translate.getY(), translate.getZ()); - matrices.translate(0.5, pedestal.getHeight(state), 0.5); - if (activeItem.getItem() instanceof BlockItem) { - matrices.scale(1.5F, 1.5F, 1.5F); - } else { - matrices.scale(1.25F, 1.25F, 1.25F); - } - - float rotation = (blockEntity.getAge() + tickDelta) / 25.0F + 6.0F; - matrices.multiply(Vector3f.POSITIVE_Y.getRadialQuaternion(rotation)); - if (state.isOf(EndBlocks.ETERNAL_PEDESTAL) && state.get(EternalPedestal.ACTIVATED)) { - float altitude = MathHelper.sin((blockEntity.getAge() + tickDelta) / 10.0F) * 0.1F + 0.1F; - matrices.translate(0.0D, altitude, 0.0D); - float[] colors = DyeColor.MAGENTA.getColorComponents(); - int y = blockEntity.getPos().getY(); - VertexConsumer vertexConsumer = vertexConsumers.getBuffer(RenderLayer.getBeaconBeam(BEAM_TEXTURE, true)); - BeamRenderer.renderLightBeam(matrices, vertexConsumer, tickDelta, -y, 1024 - y, colors, 0.25F, 0.15F, 0.2F); - } - - if (activeItem.getItem() == Items.END_CRYSTAL) { - EndCrystalRenderer.render(blockEntity.getAge(), blockEntity.getMaxAge(), tickDelta, matrices, vertexConsumers, light); - } else { - minecraft.getItemRenderer().renderItem(activeItem, ModelTransformation.Mode.GROUND, false, matrices, vertexConsumers, light, overlay, model); - } - matrices.pop(); - } -} +package ru.betterend.blocks.entities.render; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.block.BlockState; +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.RenderLayer; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher; +import net.minecraft.client.render.block.entity.BlockEntityRenderer; +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.client.render.model.json.ModelTransformation; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.util.math.Vector3f; +import net.minecraft.item.BlockItem; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.DyeColor; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.MathHelper; +import ru.betterend.blocks.EternalPedestal; +import ru.betterend.blocks.basis.BlockPedestal; +import ru.betterend.blocks.entities.PedestalBlockEntity; +import ru.betterend.client.render.BeamRenderer; +import ru.betterend.registry.EndBlocks; + +@Environment(EnvType.CLIENT) +public class PedestalItemRenderer extends BlockEntityRenderer { + private static final Identifier BEAM_TEXTURE = new Identifier("textures/entity/end_gateway_beam.png"); + + public PedestalItemRenderer(BlockEntityRenderDispatcher dispatcher) { + super(dispatcher); + } + + @Override + public void render(PedestalBlockEntity blockEntity, float tickDelta, MatrixStack matrices, + VertexConsumerProvider vertexConsumers, int light, int overlay) { + + if (blockEntity.isEmpty()) return; + + BlockState state = blockEntity.getWorld().getBlockState(blockEntity.getPos()); + ItemStack activeItem = blockEntity.getStack(0); + matrices.push(); + MinecraftClient minecraft = MinecraftClient.getInstance(); + BakedModel model = minecraft.getItemRenderer().getHeldItemModel(activeItem, blockEntity.getWorld(), null); + Vector3f translate = model.getTransformation().ground.translation; + BlockPedestal pedestal = (BlockPedestal) state.getBlock(); + matrices.translate(translate.getX(), translate.getY(), translate.getZ()); + matrices.translate(0.5, pedestal.getHeight(state), 0.5); + if (activeItem.getItem() instanceof BlockItem) { + matrices.scale(1.5F, 1.5F, 1.5F); + } else { + matrices.scale(1.25F, 1.25F, 1.25F); + } + + float rotation = (blockEntity.getAge() + tickDelta) / 25.0F + 6.0F; + matrices.multiply(Vector3f.POSITIVE_Y.getRadialQuaternion(rotation)); + if (state.isOf(EndBlocks.ETERNAL_PEDESTAL) && state.get(EternalPedestal.ACTIVATED)) { + float altitude = MathHelper.sin((blockEntity.getAge() + tickDelta) / 10.0F) * 0.1F + 0.1F; + matrices.translate(0.0D, altitude, 0.0D); + float[] colors = DyeColor.MAGENTA.getColorComponents(); + int y = blockEntity.getPos().getY(); + VertexConsumer vertexConsumer = vertexConsumers.getBuffer(RenderLayer.getBeaconBeam(BEAM_TEXTURE, true)); + BeamRenderer.renderLightBeam(matrices, vertexConsumer, tickDelta, -y, 1024 - y, colors, 0.25F, 0.15F, 0.2F); + } + + if (activeItem.getItem() == Items.END_CRYSTAL) { + EndCrystalRenderer.render(blockEntity.getAge(), blockEntity.getMaxAge(), tickDelta, matrices, vertexConsumers, light); + } else { + minecraft.getItemRenderer().renderItem(activeItem, ModelTransformation.Mode.GROUND, false, matrices, vertexConsumers, light, overlay, model); + } + matrices.pop(); + } +} diff --git a/src/main/java/ru/betterend/client/gui/EndStoneSmelterRecipeBookScreen.java b/src/main/java/ru/betterend/client/gui/EndStoneSmelterRecipeBookScreen.java index 5f17e7a7..3339920f 100644 --- a/src/main/java/ru/betterend/client/gui/EndStoneSmelterRecipeBookScreen.java +++ b/src/main/java/ru/betterend/client/gui/EndStoneSmelterRecipeBookScreen.java @@ -1,102 +1,102 @@ -package ru.betterend.client.gui; - -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import com.mojang.blaze3d.systems.RenderSystem; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.gui.DrawableHelper; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.screen.recipebook.BlastFurnaceRecipeBookScreen; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.recipe.Ingredient; -import net.minecraft.recipe.Recipe; -import net.minecraft.screen.slot.Slot; -import net.minecraft.util.collection.DefaultedList; -import ru.betterend.blocks.entities.EndStoneSmelterBlockEntity; - -@Environment(EnvType.CLIENT) -public class EndStoneSmelterRecipeBookScreen extends BlastFurnaceRecipeBookScreen { - private Iterator fuelIterator; - private Set fuels; - private Slot fuelSlot; - private Item currentItem; - private float frameTime; - - @Override - protected Set getAllowedFuels() { - return EndStoneSmelterBlockEntity.availableFuels().keySet(); - } - - @Override - public void slotClicked(Slot slot) { - super.slotClicked(slot); - if (slot != null && slot.id < this.craftingScreenHandler.getCraftingSlotCount()) { - this.fuelSlot = null; - } - } - - @Override - public void showGhostRecipe(Recipe recipe, List slots) { - this.ghostSlots.reset(); - ItemStack result = recipe.getOutput(); - this.ghostSlots.setRecipe(recipe); - this.ghostSlots.addSlot(Ingredient.ofStacks(result), (slots.get(3)).x, (slots.get(3)).y); - DefaultedList inputs = recipe.getPreviewInputs(); - Iterator iterator = inputs.iterator(); - for(int i = 0; i < 2; i++) { - if (!iterator.hasNext()) { - return; - } - Ingredient ingredient = iterator.next(); - if (!ingredient.isEmpty()) { - Slot slot = slots.get(i); - this.ghostSlots.addSlot(ingredient, slot.x, slot.y); - } - } - this.fuelSlot = slots.get(2); - if (this.fuels == null) { - this.fuels = this.getAllowedFuels(); - } - - this.fuelIterator = this.fuels.iterator(); - this.currentItem = null; - } - - @Override - public void drawGhostSlots(MatrixStack matrices, int x, int y, boolean bl, float f) { - this.ghostSlots.draw(matrices, client, x, y, bl, f); - if (fuelSlot != null) { - if (!Screen.hasControlDown()) { - this.frameTime += f; - } - - int slotX = this.fuelSlot.x + x; - int slotY = this.fuelSlot.y + y; - DrawableHelper.fill(matrices, slotX, slotY, slotX + 16, slotY + 16, 822018048); - this.client.getItemRenderer().renderInGuiWithOverrides(client.player, this.getItem().getDefaultStack(), slotX, slotY); - RenderSystem.depthFunc(516); - DrawableHelper.fill(matrices, slotX, slotY, slotX + 16, slotY + 16, 822083583); - RenderSystem.depthFunc(515); - } - } - - private Item getItem() { - if (this.currentItem == null || this.frameTime > 30.0F) { - this.frameTime = 0.0F; - if (this.fuelIterator == null || !this.fuelIterator.hasNext()) { - if (this.fuels == null) { - this.fuels = this.getAllowedFuels(); - } - this.fuelIterator = this.fuels.iterator(); - } - this.currentItem = this.fuelIterator.next(); - } - return this.currentItem; - } -} +package ru.betterend.client.gui; + +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import com.mojang.blaze3d.systems.RenderSystem; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screen.recipebook.BlastFurnaceRecipeBookScreen; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.Recipe; +import net.minecraft.screen.slot.Slot; +import net.minecraft.util.collection.DefaultedList; +import ru.betterend.blocks.entities.EndStoneSmelterBlockEntity; + +@Environment(EnvType.CLIENT) +public class EndStoneSmelterRecipeBookScreen extends BlastFurnaceRecipeBookScreen { + private Iterator fuelIterator; + private Set fuels; + private Slot fuelSlot; + private Item currentItem; + private float frameTime; + + @Override + protected Set getAllowedFuels() { + return EndStoneSmelterBlockEntity.availableFuels().keySet(); + } + + @Override + public void slotClicked(Slot slot) { + super.slotClicked(slot); + if (slot != null && slot.id < this.craftingScreenHandler.getCraftingSlotCount()) { + this.fuelSlot = null; + } + } + + @Override + public void showGhostRecipe(Recipe recipe, List slots) { + this.ghostSlots.reset(); + ItemStack result = recipe.getOutput(); + this.ghostSlots.setRecipe(recipe); + this.ghostSlots.addSlot(Ingredient.ofStacks(result), (slots.get(3)).x, (slots.get(3)).y); + DefaultedList inputs = recipe.getPreviewInputs(); + Iterator iterator = inputs.iterator(); + for(int i = 0; i < 2; i++) { + if (!iterator.hasNext()) { + return; + } + Ingredient ingredient = iterator.next(); + if (!ingredient.isEmpty()) { + Slot slot = slots.get(i); + this.ghostSlots.addSlot(ingredient, slot.x, slot.y); + } + } + this.fuelSlot = slots.get(2); + if (this.fuels == null) { + this.fuels = this.getAllowedFuels(); + } + + this.fuelIterator = this.fuels.iterator(); + this.currentItem = null; + } + + @Override + public void drawGhostSlots(MatrixStack matrices, int x, int y, boolean bl, float f) { + this.ghostSlots.draw(matrices, client, x, y, bl, f); + if (fuelSlot != null) { + if (!Screen.hasControlDown()) { + this.frameTime += f; + } + + int slotX = this.fuelSlot.x + x; + int slotY = this.fuelSlot.y + y; + DrawableHelper.fill(matrices, slotX, slotY, slotX + 16, slotY + 16, 822018048); + this.client.getItemRenderer().renderInGuiWithOverrides(client.player, this.getItem().getDefaultStack(), slotX, slotY); + RenderSystem.depthFunc(516); + DrawableHelper.fill(matrices, slotX, slotY, slotX + 16, slotY + 16, 822083583); + RenderSystem.depthFunc(515); + } + } + + private Item getItem() { + if (this.currentItem == null || this.frameTime > 30.0F) { + this.frameTime = 0.0F; + if (this.fuelIterator == null || !this.fuelIterator.hasNext()) { + if (this.fuels == null) { + this.fuels = this.getAllowedFuels(); + } + this.fuelIterator = this.fuels.iterator(); + } + this.currentItem = this.fuelIterator.next(); + } + return this.currentItem; + } +} diff --git a/src/main/java/ru/betterend/client/gui/EndStoneSmelterScreen.java b/src/main/java/ru/betterend/client/gui/EndStoneSmelterScreen.java index 1bd7e27d..8c81c7ff 100644 --- a/src/main/java/ru/betterend/client/gui/EndStoneSmelterScreen.java +++ b/src/main/java/ru/betterend/client/gui/EndStoneSmelterScreen.java @@ -1,130 +1,130 @@ -package ru.betterend.client.gui; - -import com.mojang.blaze3d.systems.RenderSystem; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.gui.screen.ingame.HandledScreen; -import net.minecraft.client.gui.screen.recipebook.RecipeBookProvider; -import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; -import net.minecraft.client.gui.widget.TexturedButtonWidget; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.screen.slot.Slot; -import net.minecraft.screen.slot.SlotActionType; -import net.minecraft.text.StringVisitable; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; -import ru.betterend.BetterEnd; - -@Environment(EnvType.CLIENT) -public class EndStoneSmelterScreen extends HandledScreen implements RecipeBookProvider { - - private final static Identifier RECIPE_BUTTON_TEXTURE = new Identifier("textures/gui/recipe_button.png"); - private final static Identifier BACKGROUND_TEXTURE = BetterEnd.makeID("textures/gui/smelter_gui.png"); - - public final EndStoneSmelterRecipeBookScreen recipeBook; - private boolean narrow; - - public EndStoneSmelterScreen(EndStoneSmelterScreenHandler handler, PlayerInventory inventory, Text title) { - super(handler, inventory, title); - this.recipeBook = new EndStoneSmelterRecipeBookScreen(); - } - - public void init() { - super.init(); - this.narrow = this.width < 379; - this.recipeBook.initialize(width, height, client, narrow, handler); - this.x = this.recipeBook.findLeftEdge(narrow, width, backgroundWidth); - this.addButton(new TexturedButtonWidget(x + 20, height / 2 - 49, 20, 18, 0, 0, 19, RECIPE_BUTTON_TEXTURE, (buttonWidget) -> { - this.recipeBook.reset(narrow); - this.recipeBook.toggleOpen(); - this.x = this.recipeBook.findLeftEdge(narrow, width, backgroundWidth); - ((TexturedButtonWidget) buttonWidget).setPos(this.x + 20, height / 2 - 49); - })); - this.titleX = (this.backgroundWidth - this.textRenderer.getWidth((StringVisitable)this.title)) / 2; - } - - @Override - public void tick() { - super.tick(); - this.recipeBook.update(); - } - - @Override - public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { - this.renderBackground(matrices); - if (this.recipeBook.isOpen() && this.narrow) { - this.drawBackground(matrices, delta, mouseX, mouseY); - this.recipeBook.render(matrices, mouseX, mouseY, delta); - } else { - this.recipeBook.render(matrices, mouseX, mouseY, delta); - super.render(matrices, mouseX, mouseY, delta); - this.recipeBook.drawGhostSlots(matrices, x, y, true, delta); - } - - this.drawMouseoverTooltip(matrices, mouseX, mouseY); - this.recipeBook.drawTooltip(matrices, x, y, mouseX, mouseY); - } - - @Override - public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (this.recipeBook.mouseClicked(mouseX, mouseY, button)) { - return true; - } else { - return this.narrow && this.recipeBook.isOpen() ? true : super.mouseClicked(mouseX, mouseY, button); - } - } - - @Override - protected void onMouseClick(Slot slot, int invSlot, int clickData, SlotActionType actionType) { - super.onMouseClick(slot, invSlot, clickData, actionType); - this.recipeBook.slotClicked(slot); - } - - @Override - public boolean keyPressed(int keyCode, int scanCode, int modifiers) { - return this.recipeBook.keyPressed(keyCode, scanCode, modifiers) ? false : super.keyPressed(keyCode, scanCode, modifiers); - } - - @Override - protected boolean isClickOutsideBounds(double mouseX, double mouseY, int left, int top, int button) { - boolean isMouseOut = mouseX < left || mouseY < top || mouseX >= (left + backgroundWidth) || mouseY >= (top + backgroundHeight); - return this.recipeBook.isClickOutsideBounds(mouseX, mouseY, x, y, backgroundWidth, backgroundHeight, button) && isMouseOut; - } - - @Override - public boolean charTyped(char chr, int keyCode) { - return this.recipeBook.charTyped(chr, keyCode) ? true : super.charTyped(chr, keyCode); - } - - @Override - public void refreshRecipeBook() { - this.recipeBook.refresh(); - } - - @Override - public RecipeBookWidget getRecipeBookWidget() { - return this.recipeBook; - } - - @Override - protected void drawBackground(MatrixStack matrices, float delta, int mouseX, int mouseY) { - RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); - this.client.getTextureManager().bindTexture(BACKGROUND_TEXTURE); - this.drawTexture(matrices, x, y, 0, 0, backgroundWidth, backgroundHeight); - int p; - if (handler.isBurning()) { - p = handler.getFuelProgress(); - this.drawTexture(matrices, x + 56, y + 36 + 12 - p, 176, 12 - p, 14, p + 1); - } - p = handler.getSmeltProgress(); - this.drawTexture(matrices, x + 92, y + 34, 176, 14, p + 1, 16); - } - - @Override - public void removed() { - this.recipeBook.close(); - super.removed(); - } -} +package ru.betterend.client.gui; + +import com.mojang.blaze3d.systems.RenderSystem; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.gui.screen.ingame.HandledScreen; +import net.minecraft.client.gui.screen.recipebook.RecipeBookProvider; +import net.minecraft.client.gui.screen.recipebook.RecipeBookWidget; +import net.minecraft.client.gui.widget.TexturedButtonWidget; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.screen.slot.Slot; +import net.minecraft.screen.slot.SlotActionType; +import net.minecraft.text.StringVisitable; +import net.minecraft.text.Text; +import net.minecraft.util.Identifier; +import ru.betterend.BetterEnd; + +@Environment(EnvType.CLIENT) +public class EndStoneSmelterScreen extends HandledScreen implements RecipeBookProvider { + + private final static Identifier RECIPE_BUTTON_TEXTURE = new Identifier("textures/gui/recipe_button.png"); + private final static Identifier BACKGROUND_TEXTURE = BetterEnd.makeID("textures/gui/smelter_gui.png"); + + public final EndStoneSmelterRecipeBookScreen recipeBook; + private boolean narrow; + + public EndStoneSmelterScreen(EndStoneSmelterScreenHandler handler, PlayerInventory inventory, Text title) { + super(handler, inventory, title); + this.recipeBook = new EndStoneSmelterRecipeBookScreen(); + } + + public void init() { + super.init(); + this.narrow = this.width < 379; + this.recipeBook.initialize(width, height, client, narrow, handler); + this.x = this.recipeBook.findLeftEdge(narrow, width, backgroundWidth); + this.addButton(new TexturedButtonWidget(x + 20, height / 2 - 49, 20, 18, 0, 0, 19, RECIPE_BUTTON_TEXTURE, (buttonWidget) -> { + this.recipeBook.reset(narrow); + this.recipeBook.toggleOpen(); + this.x = this.recipeBook.findLeftEdge(narrow, width, backgroundWidth); + ((TexturedButtonWidget) buttonWidget).setPos(this.x + 20, height / 2 - 49); + })); + this.titleX = (this.backgroundWidth - this.textRenderer.getWidth((StringVisitable)this.title)) / 2; + } + + @Override + public void tick() { + super.tick(); + this.recipeBook.update(); + } + + @Override + public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { + this.renderBackground(matrices); + if (this.recipeBook.isOpen() && this.narrow) { + this.drawBackground(matrices, delta, mouseX, mouseY); + this.recipeBook.render(matrices, mouseX, mouseY, delta); + } else { + this.recipeBook.render(matrices, mouseX, mouseY, delta); + super.render(matrices, mouseX, mouseY, delta); + this.recipeBook.drawGhostSlots(matrices, x, y, true, delta); + } + + this.drawMouseoverTooltip(matrices, mouseX, mouseY); + this.recipeBook.drawTooltip(matrices, x, y, mouseX, mouseY); + } + + @Override + public boolean mouseClicked(double mouseX, double mouseY, int button) { + if (this.recipeBook.mouseClicked(mouseX, mouseY, button)) { + return true; + } else { + return this.narrow && this.recipeBook.isOpen() ? true : super.mouseClicked(mouseX, mouseY, button); + } + } + + @Override + protected void onMouseClick(Slot slot, int invSlot, int clickData, SlotActionType actionType) { + super.onMouseClick(slot, invSlot, clickData, actionType); + this.recipeBook.slotClicked(slot); + } + + @Override + public boolean keyPressed(int keyCode, int scanCode, int modifiers) { + return this.recipeBook.keyPressed(keyCode, scanCode, modifiers) ? false : super.keyPressed(keyCode, scanCode, modifiers); + } + + @Override + protected boolean isClickOutsideBounds(double mouseX, double mouseY, int left, int top, int button) { + boolean isMouseOut = mouseX < left || mouseY < top || mouseX >= (left + backgroundWidth) || mouseY >= (top + backgroundHeight); + return this.recipeBook.isClickOutsideBounds(mouseX, mouseY, x, y, backgroundWidth, backgroundHeight, button) && isMouseOut; + } + + @Override + public boolean charTyped(char chr, int keyCode) { + return this.recipeBook.charTyped(chr, keyCode) ? true : super.charTyped(chr, keyCode); + } + + @Override + public void refreshRecipeBook() { + this.recipeBook.refresh(); + } + + @Override + public RecipeBookWidget getRecipeBookWidget() { + return this.recipeBook; + } + + @Override + protected void drawBackground(MatrixStack matrices, float delta, int mouseX, int mouseY) { + RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); + this.client.getTextureManager().bindTexture(BACKGROUND_TEXTURE); + this.drawTexture(matrices, x, y, 0, 0, backgroundWidth, backgroundHeight); + int p; + if (handler.isBurning()) { + p = handler.getFuelProgress(); + this.drawTexture(matrices, x + 56, y + 36 + 12 - p, 176, 12 - p, 14, p + 1); + } + p = handler.getSmeltProgress(); + this.drawTexture(matrices, x + 92, y + 34, 176, 14, p + 1, 16); + } + + @Override + public void removed() { + this.recipeBook.close(); + super.removed(); + } +} diff --git a/src/main/java/ru/betterend/client/gui/EndStoneSmelterScreenHandler.java b/src/main/java/ru/betterend/client/gui/EndStoneSmelterScreenHandler.java index 69aaa0f8..3bb71d6f 100644 --- a/src/main/java/ru/betterend/client/gui/EndStoneSmelterScreenHandler.java +++ b/src/main/java/ru/betterend/client/gui/EndStoneSmelterScreenHandler.java @@ -1,186 +1,186 @@ -package ru.betterend.client.gui; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.inventory.Inventory; -import net.minecraft.inventory.SimpleInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeFinder; -import net.minecraft.recipe.RecipeInputProvider; -import net.minecraft.recipe.book.RecipeBookCategory; -import net.minecraft.screen.AbstractRecipeScreenHandler; -import net.minecraft.screen.ArrayPropertyDelegate; -import net.minecraft.screen.PropertyDelegate; -import net.minecraft.screen.ScreenHandlerType; -import net.minecraft.screen.slot.Slot; -import net.minecraft.world.World; -import ru.betterend.BetterEnd; -import ru.betterend.blocks.EndStoneSmelter; -import ru.betterend.blocks.entities.EndStoneSmelterBlockEntity; -import ru.betterend.client.gui.slot.SmelterFuelSlot; -import ru.betterend.client.gui.slot.SmelterOutputSlot; -import ru.betterend.recipe.builders.AlloyingRecipe; - -public class EndStoneSmelterScreenHandler extends AbstractRecipeScreenHandler { - - public final static ScreenHandlerType HANDLER_TYPE = ScreenHandlerRegistry.registerSimple( - BetterEnd.makeID(EndStoneSmelter.ID), EndStoneSmelterScreenHandler::new); - - private final Inventory inventory; - private final PropertyDelegate propertyDelegate; - protected final World world; - - public EndStoneSmelterScreenHandler(int syncId, PlayerInventory playerInventory) { - this(syncId, playerInventory, new SimpleInventory(4), new ArrayPropertyDelegate(4)); - } - - public EndStoneSmelterScreenHandler(int syncId, PlayerInventory playerInventory, Inventory inventory, PropertyDelegate propertyDelegate) { - super(HANDLER_TYPE, syncId); - this.inventory = inventory; - this.propertyDelegate = propertyDelegate; - this.world = playerInventory.player.world; - - this.addProperties(propertyDelegate); - this.addSlot(new Slot(inventory, 0, 45, 17)); - this.addSlot(new Slot(inventory, 1, 67, 17)); - this.addSlot(new SmelterFuelSlot(this, inventory, 2, 56, 53)); - this.addSlot(new SmelterOutputSlot(playerInventory.player, inventory, 3, 129, 35)); - - for(int i = 0; i < 3; ++i) { - for(int j = 0; j < 9; ++j) { - this.addSlot(new Slot(playerInventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); - } - } - for(int i = 0; i < 9; ++i) { - this.addSlot(new Slot(playerInventory, i, 8 + i * 18, 142)); - } - } - - @Override - public void populateRecipeFinder(RecipeFinder finder) { - if (inventory instanceof RecipeInputProvider) { - ((RecipeInputProvider) inventory).provideRecipeInputs(finder); - } - } - - @Override - public void clearCraftingSlots() { - this.inventory.clear(); - } - - @Override - public boolean matches(Recipe recipe) { - return recipe.matches(this.inventory, this.world); - } - - @Override - public int getCraftingResultSlotIndex() { - return 3; - } - - @Override - public int getCraftingWidth() { - return 2; - } - - @Override - public int getCraftingHeight() { - return 1; - } - - @Override - public int getCraftingSlotCount() { - return 4; - } - - @Override - public RecipeBookCategory getCategory() { - return RecipeBookCategory.BLAST_FURNACE; - } - - @Override - public boolean canUse(PlayerEntity player) { - return this.inventory.canPlayerUse(player); - } - - protected boolean isSmeltable(ItemStack itemStack) { - return this.world.getRecipeManager().getFirstMatch(AlloyingRecipe.TYPE, new SimpleInventory(new ItemStack[]{itemStack}), this.world).isPresent(); - } - - public boolean isFuel(ItemStack itemStack) { - return EndStoneSmelterBlockEntity.canUseAsFuel(itemStack); - } - - @Override - public ItemStack transferSlot(PlayerEntity player, int index) { - ItemStack itemStack = ItemStack.EMPTY; - Slot slot = this.slots.get(index); - if (slot != null && slot.hasStack()) { - ItemStack itemStack2 = slot.getStack(); - itemStack = itemStack2.copy(); - if (index == 3) { - if (insertItem(itemStack2, 4, 40, true)) { - return ItemStack.EMPTY; - } - slot.onStackChanged(itemStack2, itemStack); - } else if (index != 2 && index != 1 && index != 0) { - if (isSmeltable(itemStack2)) { - if (!insertItem(itemStack2, 0, 2, false)) { - return ItemStack.EMPTY; - } - } else if (isFuel(itemStack2)) { - if (!this.insertItem(itemStack2, 2, 3, false)) { - return ItemStack.EMPTY; - } - } else if (index >= 4 && index < 31) { - if (!insertItem(itemStack2, 31, 40, false)) { - return ItemStack.EMPTY; - } - } else if (index >= 31 && index < 40 && !insertItem(itemStack2, 4, 31, false)) { - return ItemStack.EMPTY; - } - } else if (!insertItem(itemStack2, 4, 40, false)) { - return ItemStack.EMPTY; - } - - if (itemStack2.isEmpty()) { - slot.setStack(ItemStack.EMPTY); - } else { - slot.markDirty(); - } - - if (itemStack2.getCount() == itemStack.getCount()) { - return ItemStack.EMPTY; - } - - slot.onTakeItem(player, itemStack2); - } - - return itemStack; - } - - @Environment(EnvType.CLIENT) - public int getSmeltProgress() { - int time = this.propertyDelegate.get(2); - int timeTotal = this.propertyDelegate.get(3); - return timeTotal != 0 && time != 0 ? time * 24 / timeTotal : 0; - } - - @Environment(EnvType.CLIENT) - public int getFuelProgress() { - int fuelTime = this.propertyDelegate.get(1); - if (fuelTime == 0) { - fuelTime = 200; - } - return this.propertyDelegate.get(0) * 13 / fuelTime; - } - - @Environment(EnvType.CLIENT) - public boolean isBurning() { - return this.propertyDelegate.get(0) > 0; - } -} +package ru.betterend.client.gui; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.screenhandler.v1.ScreenHandlerRegistry; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.inventory.Inventory; +import net.minecraft.inventory.SimpleInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.RecipeFinder; +import net.minecraft.recipe.RecipeInputProvider; +import net.minecraft.recipe.book.RecipeBookCategory; +import net.minecraft.screen.AbstractRecipeScreenHandler; +import net.minecraft.screen.ArrayPropertyDelegate; +import net.minecraft.screen.PropertyDelegate; +import net.minecraft.screen.ScreenHandlerType; +import net.minecraft.screen.slot.Slot; +import net.minecraft.world.World; +import ru.betterend.BetterEnd; +import ru.betterend.blocks.EndStoneSmelter; +import ru.betterend.blocks.entities.EndStoneSmelterBlockEntity; +import ru.betterend.client.gui.slot.SmelterFuelSlot; +import ru.betterend.client.gui.slot.SmelterOutputSlot; +import ru.betterend.recipe.builders.AlloyingRecipe; + +public class EndStoneSmelterScreenHandler extends AbstractRecipeScreenHandler { + + public final static ScreenHandlerType HANDLER_TYPE = ScreenHandlerRegistry.registerSimple( + BetterEnd.makeID(EndStoneSmelter.ID), EndStoneSmelterScreenHandler::new); + + private final Inventory inventory; + private final PropertyDelegate propertyDelegate; + protected final World world; + + public EndStoneSmelterScreenHandler(int syncId, PlayerInventory playerInventory) { + this(syncId, playerInventory, new SimpleInventory(4), new ArrayPropertyDelegate(4)); + } + + public EndStoneSmelterScreenHandler(int syncId, PlayerInventory playerInventory, Inventory inventory, PropertyDelegate propertyDelegate) { + super(HANDLER_TYPE, syncId); + this.inventory = inventory; + this.propertyDelegate = propertyDelegate; + this.world = playerInventory.player.world; + + this.addProperties(propertyDelegate); + this.addSlot(new Slot(inventory, 0, 45, 17)); + this.addSlot(new Slot(inventory, 1, 67, 17)); + this.addSlot(new SmelterFuelSlot(this, inventory, 2, 56, 53)); + this.addSlot(new SmelterOutputSlot(playerInventory.player, inventory, 3, 129, 35)); + + for(int i = 0; i < 3; ++i) { + for(int j = 0; j < 9; ++j) { + this.addSlot(new Slot(playerInventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + } + } + for(int i = 0; i < 9; ++i) { + this.addSlot(new Slot(playerInventory, i, 8 + i * 18, 142)); + } + } + + @Override + public void populateRecipeFinder(RecipeFinder finder) { + if (inventory instanceof RecipeInputProvider) { + ((RecipeInputProvider) inventory).provideRecipeInputs(finder); + } + } + + @Override + public void clearCraftingSlots() { + this.inventory.clear(); + } + + @Override + public boolean matches(Recipe recipe) { + return recipe.matches(this.inventory, this.world); + } + + @Override + public int getCraftingResultSlotIndex() { + return 3; + } + + @Override + public int getCraftingWidth() { + return 2; + } + + @Override + public int getCraftingHeight() { + return 1; + } + + @Override + public int getCraftingSlotCount() { + return 4; + } + + @Override + public RecipeBookCategory getCategory() { + return RecipeBookCategory.BLAST_FURNACE; + } + + @Override + public boolean canUse(PlayerEntity player) { + return this.inventory.canPlayerUse(player); + } + + protected boolean isSmeltable(ItemStack itemStack) { + return this.world.getRecipeManager().getFirstMatch(AlloyingRecipe.TYPE, new SimpleInventory(new ItemStack[]{itemStack}), this.world).isPresent(); + } + + public boolean isFuel(ItemStack itemStack) { + return EndStoneSmelterBlockEntity.canUseAsFuel(itemStack); + } + + @Override + public ItemStack transferSlot(PlayerEntity player, int index) { + ItemStack itemStack = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + if (slot != null && slot.hasStack()) { + ItemStack itemStack2 = slot.getStack(); + itemStack = itemStack2.copy(); + if (index == 3) { + if (insertItem(itemStack2, 4, 40, true)) { + return ItemStack.EMPTY; + } + slot.onStackChanged(itemStack2, itemStack); + } else if (index != 2 && index != 1 && index != 0) { + if (isSmeltable(itemStack2)) { + if (!insertItem(itemStack2, 0, 2, false)) { + return ItemStack.EMPTY; + } + } else if (isFuel(itemStack2)) { + if (!this.insertItem(itemStack2, 2, 3, false)) { + return ItemStack.EMPTY; + } + } else if (index >= 4 && index < 31) { + if (!insertItem(itemStack2, 31, 40, false)) { + return ItemStack.EMPTY; + } + } else if (index >= 31 && index < 40 && !insertItem(itemStack2, 4, 31, false)) { + return ItemStack.EMPTY; + } + } else if (!insertItem(itemStack2, 4, 40, false)) { + return ItemStack.EMPTY; + } + + if (itemStack2.isEmpty()) { + slot.setStack(ItemStack.EMPTY); + } else { + slot.markDirty(); + } + + if (itemStack2.getCount() == itemStack.getCount()) { + return ItemStack.EMPTY; + } + + slot.onTakeItem(player, itemStack2); + } + + return itemStack; + } + + @Environment(EnvType.CLIENT) + public int getSmeltProgress() { + int time = this.propertyDelegate.get(2); + int timeTotal = this.propertyDelegate.get(3); + return timeTotal != 0 && time != 0 ? time * 24 / timeTotal : 0; + } + + @Environment(EnvType.CLIENT) + public int getFuelProgress() { + int fuelTime = this.propertyDelegate.get(1); + if (fuelTime == 0) { + fuelTime = 200; + } + return this.propertyDelegate.get(0) * 13 / fuelTime; + } + + @Environment(EnvType.CLIENT) + public boolean isBurning() { + return this.propertyDelegate.get(0) > 0; + } +} diff --git a/src/main/java/ru/betterend/client/gui/slot/SmelterFuelSlot.java b/src/main/java/ru/betterend/client/gui/slot/SmelterFuelSlot.java index 3dcd9956..e0381d87 100644 --- a/src/main/java/ru/betterend/client/gui/slot/SmelterFuelSlot.java +++ b/src/main/java/ru/betterend/client/gui/slot/SmelterFuelSlot.java @@ -1,25 +1,25 @@ -package ru.betterend.client.gui.slot; - -import net.minecraft.inventory.Inventory; -import net.minecraft.item.ItemStack; -import net.minecraft.screen.slot.FurnaceFuelSlot; -import net.minecraft.screen.slot.Slot; -import ru.betterend.client.gui.EndStoneSmelterScreenHandler; - -public class SmelterFuelSlot extends Slot { - - private final EndStoneSmelterScreenHandler handler; - - public SmelterFuelSlot(EndStoneSmelterScreenHandler handler, Inventory inventory, int index, int x, int y) { - super(inventory, index, x, y); - this.handler = handler; - } - - public boolean canInsert(ItemStack stack) { - return this.handler.isFuel(stack) || FurnaceFuelSlot.isBucket(stack); - } - - public int getMaxItemCount(ItemStack stack) { - return FurnaceFuelSlot.isBucket(stack) ? 1 : super.getMaxItemCount(stack); - } -} +package ru.betterend.client.gui.slot; + +import net.minecraft.inventory.Inventory; +import net.minecraft.item.ItemStack; +import net.minecraft.screen.slot.FurnaceFuelSlot; +import net.minecraft.screen.slot.Slot; +import ru.betterend.client.gui.EndStoneSmelterScreenHandler; + +public class SmelterFuelSlot extends Slot { + + private final EndStoneSmelterScreenHandler handler; + + public SmelterFuelSlot(EndStoneSmelterScreenHandler handler, Inventory inventory, int index, int x, int y) { + super(inventory, index, x, y); + this.handler = handler; + } + + public boolean canInsert(ItemStack stack) { + return this.handler.isFuel(stack) || FurnaceFuelSlot.isBucket(stack); + } + + public int getMaxItemCount(ItemStack stack) { + return FurnaceFuelSlot.isBucket(stack) ? 1 : super.getMaxItemCount(stack); + } +} diff --git a/src/main/java/ru/betterend/client/gui/slot/SmelterOutputSlot.java b/src/main/java/ru/betterend/client/gui/slot/SmelterOutputSlot.java index 163960c7..dfe85893 100644 --- a/src/main/java/ru/betterend/client/gui/slot/SmelterOutputSlot.java +++ b/src/main/java/ru/betterend/client/gui/slot/SmelterOutputSlot.java @@ -1,49 +1,49 @@ -package ru.betterend.client.gui.slot; - -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.Inventory; -import net.minecraft.item.ItemStack; -import net.minecraft.screen.slot.Slot; -import ru.betterend.blocks.entities.EndStoneSmelterBlockEntity; - -public class SmelterOutputSlot extends Slot { - - private PlayerEntity player; - private int amount; - - public SmelterOutputSlot(PlayerEntity player, Inventory inventory, int index, int x, int y) { - super(inventory, index, x, y); - this.player = player; - } - - public boolean canInsert(ItemStack stack) { - return false; - } - - public ItemStack takeStack(int amount) { - if (this.hasStack()) { - this.amount += Math.min(amount, this.getStack().getCount()); - } - - return super.takeStack(amount); - } - - public ItemStack onTakeItem(PlayerEntity player, ItemStack stack) { - this.onCrafted(stack); - super.onTakeItem(player, stack); - return stack; - } - - protected void onCrafted(ItemStack stack, int amount) { - this.amount += amount; - this.onCrafted(stack); - } - - protected void onCrafted(ItemStack stack) { - stack.onCraft(this.player.world, this.player, this.amount); - if (!this.player.world.isClient && this.inventory instanceof EndStoneSmelterBlockEntity) { - ((EndStoneSmelterBlockEntity) this.inventory).dropExperience(player); - } - this.amount = 0; - } -} +package ru.betterend.client.gui.slot; + +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.Inventory; +import net.minecraft.item.ItemStack; +import net.minecraft.screen.slot.Slot; +import ru.betterend.blocks.entities.EndStoneSmelterBlockEntity; + +public class SmelterOutputSlot extends Slot { + + private PlayerEntity player; + private int amount; + + public SmelterOutputSlot(PlayerEntity player, Inventory inventory, int index, int x, int y) { + super(inventory, index, x, y); + this.player = player; + } + + public boolean canInsert(ItemStack stack) { + return false; + } + + public ItemStack takeStack(int amount) { + if (this.hasStack()) { + this.amount += Math.min(amount, this.getStack().getCount()); + } + + return super.takeStack(amount); + } + + public ItemStack onTakeItem(PlayerEntity player, ItemStack stack) { + this.onCrafted(stack); + super.onTakeItem(player, stack); + return stack; + } + + protected void onCrafted(ItemStack stack, int amount) { + this.amount += amount; + this.onCrafted(stack); + } + + protected void onCrafted(ItemStack stack) { + stack.onCraft(this.player.world, this.player, this.amount); + if (!this.player.world.isClient && this.inventory instanceof EndStoneSmelterBlockEntity) { + ((EndStoneSmelterBlockEntity) this.inventory).dropExperience(player); + } + this.amount = 0; + } +} diff --git a/src/main/java/ru/betterend/client/render/BeamRenderer.java b/src/main/java/ru/betterend/client/render/BeamRenderer.java index edb0b181..894462a7 100644 --- a/src/main/java/ru/betterend/client/render/BeamRenderer.java +++ b/src/main/java/ru/betterend/client/render/BeamRenderer.java @@ -1,62 +1,62 @@ -package ru.betterend.client.render; - -import net.minecraft.client.render.OverlayTexture; -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.client.util.math.Vector3f; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.Matrix3f; -import net.minecraft.util.math.Matrix4f; - -public class BeamRenderer { - public static void renderLightBeam(MatrixStack matrixStack, VertexConsumer vertexConsumer, float tick, int minY, int maxY, float[] colors, float alpha, float h, float k) { - int m = minY + maxY; - - float o = maxY < 0 ? tick : -tick; - float p = MathHelper.fractionalPart(o * 0.2F - (float) MathHelper.floor(o * 0.1F)); - float red = colors[0]; - float green = colors[1]; - float blue = colors[2]; - - matrixStack.push(); - matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(tick * 2.25F - 45.0F)); - float af = 0.0F; - float ai = 0.0F; - float aj = -h; - float aa = -h; - float ap = -1.0F + p; - float aq = (float) maxY * (0.5F / h) + ap; - - renderBeam(matrixStack, vertexConsumer, red, green, blue, alpha, minY, m, 0.0F, h, h, 0.0F, aj, 0.0F, 0.0F, aa, 0.0F, 1.0F, aq, ap); - matrixStack.pop(); - - af = -k; - float ag = -k; - ai = -k; - aj = -k; - ap = -1.0F + p; - aq = (float) maxY + ap; - renderBeam(matrixStack, vertexConsumer, red, green, blue, alpha, minY, m, af, ag, k, ai, aj, k, k, k, 0.0F, 1.0F, aq, ap); - } - - private static void renderBeam(MatrixStack matrixStack, VertexConsumer vertexConsumer, float red, float green, float blue, float alpha, int j, int k, float l, float m, float n, float o, float p, float q, float r, float s, float t, float u, float v, float w) { - MatrixStack.Entry entry = matrixStack.peek(); - Matrix4f matrix4f = entry.getModel(); - Matrix3f matrix3f = entry.getNormal(); - renderBeam(matrix4f, matrix3f, vertexConsumer, red, green, blue, alpha, j, k, l, m, n, o, t, u, v, w); - renderBeam(matrix4f, matrix3f, vertexConsumer, red, green, blue, alpha, j, k, r, s, p, q, t, u, v, w); - renderBeam(matrix4f, matrix3f, vertexConsumer, red, green, blue, alpha, j, k, n, o, r, s, t, u, v, w); - renderBeam(matrix4f, matrix3f, vertexConsumer, red, green, blue, alpha, j, k, p, q, l, m, t, u, v, w); - } - - private static void renderBeam(Matrix4f matrix4f, Matrix3f matrix3f, VertexConsumer vertexConsumer, float red, float green, float blue, float alpha, int j, int k, float l, float m, float n, float o, float p, float q, float r, float s) { - addVertex(matrix4f, matrix3f, vertexConsumer, red, green, blue, alpha, k, l, m, q, r); - addVertex(matrix4f, matrix3f, vertexConsumer, red, green, blue, alpha, j, l, m, q, s); - addVertex(matrix4f, matrix3f, vertexConsumer, red, green, blue, alpha, j, n, o, p, s); - addVertex(matrix4f, matrix3f, vertexConsumer, red, green, blue, alpha, k, n, o, p, r); - } - - private static void addVertex(Matrix4f matrix4f, Matrix3f matrix3f, VertexConsumer vertexConsumer, float red, float green, float blue, float alpha, float y, float x, float l, float m, float n) { - vertexConsumer.vertex(matrix4f, x, y, l).color(red, green, blue, alpha).texture(m, n).overlay(OverlayTexture.DEFAULT_UV).light(15728880).normal(matrix3f, 0.0F, 1.0F, 0.0F).next(); - } -} +package ru.betterend.client.render; + +import net.minecraft.client.render.OverlayTexture; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.client.util.math.Vector3f; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.Matrix3f; +import net.minecraft.util.math.Matrix4f; + +public class BeamRenderer { + public static void renderLightBeam(MatrixStack matrixStack, VertexConsumer vertexConsumer, float tick, int minY, int maxY, float[] colors, float alpha, float h, float k) { + int m = minY + maxY; + + float o = maxY < 0 ? tick : -tick; + float p = MathHelper.fractionalPart(o * 0.2F - (float) MathHelper.floor(o * 0.1F)); + float red = colors[0]; + float green = colors[1]; + float blue = colors[2]; + + matrixStack.push(); + matrixStack.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(tick * 2.25F - 45.0F)); + float af = 0.0F; + float ai = 0.0F; + float aj = -h; + float aa = -h; + float ap = -1.0F + p; + float aq = (float) maxY * (0.5F / h) + ap; + + renderBeam(matrixStack, vertexConsumer, red, green, blue, alpha, minY, m, 0.0F, h, h, 0.0F, aj, 0.0F, 0.0F, aa, 0.0F, 1.0F, aq, ap); + matrixStack.pop(); + + af = -k; + float ag = -k; + ai = -k; + aj = -k; + ap = -1.0F + p; + aq = (float) maxY + ap; + renderBeam(matrixStack, vertexConsumer, red, green, blue, alpha, minY, m, af, ag, k, ai, aj, k, k, k, 0.0F, 1.0F, aq, ap); + } + + private static void renderBeam(MatrixStack matrixStack, VertexConsumer vertexConsumer, float red, float green, float blue, float alpha, int j, int k, float l, float m, float n, float o, float p, float q, float r, float s, float t, float u, float v, float w) { + MatrixStack.Entry entry = matrixStack.peek(); + Matrix4f matrix4f = entry.getModel(); + Matrix3f matrix3f = entry.getNormal(); + renderBeam(matrix4f, matrix3f, vertexConsumer, red, green, blue, alpha, j, k, l, m, n, o, t, u, v, w); + renderBeam(matrix4f, matrix3f, vertexConsumer, red, green, blue, alpha, j, k, r, s, p, q, t, u, v, w); + renderBeam(matrix4f, matrix3f, vertexConsumer, red, green, blue, alpha, j, k, n, o, r, s, t, u, v, w); + renderBeam(matrix4f, matrix3f, vertexConsumer, red, green, blue, alpha, j, k, p, q, l, m, t, u, v, w); + } + + private static void renderBeam(Matrix4f matrix4f, Matrix3f matrix3f, VertexConsumer vertexConsumer, float red, float green, float blue, float alpha, int j, int k, float l, float m, float n, float o, float p, float q, float r, float s) { + addVertex(matrix4f, matrix3f, vertexConsumer, red, green, blue, alpha, k, l, m, q, r); + addVertex(matrix4f, matrix3f, vertexConsumer, red, green, blue, alpha, j, l, m, q, s); + addVertex(matrix4f, matrix3f, vertexConsumer, red, green, blue, alpha, j, n, o, p, s); + addVertex(matrix4f, matrix3f, vertexConsumer, red, green, blue, alpha, k, n, o, p, r); + } + + private static void addVertex(Matrix4f matrix4f, Matrix3f matrix3f, VertexConsumer vertexConsumer, float red, float green, float blue, float alpha, float y, float x, float l, float m, float n) { + vertexConsumer.vertex(matrix4f, x, y, l).color(red, green, blue, alpha).texture(m, n).overlay(OverlayTexture.DEFAULT_UV).light(15728880).normal(matrix3f, 0.0F, 1.0F, 0.0F).next(); + } +} diff --git a/src/main/java/ru/betterend/client/render/ERenderLayer.java b/src/main/java/ru/betterend/client/render/ERenderLayer.java index 0bbf2358..3d18d635 100644 --- a/src/main/java/ru/betterend/client/render/ERenderLayer.java +++ b/src/main/java/ru/betterend/client/render/ERenderLayer.java @@ -1,6 +1,6 @@ -package ru.betterend.client.render; - -public enum ERenderLayer { - CUTOUT, - TRANSLUCENT; -} +package ru.betterend.client.render; + +public enum ERenderLayer { + CUTOUT, + TRANSLUCENT; +} diff --git a/src/main/java/ru/betterend/compat/REIAlloyingDisplay.java b/src/main/java/ru/betterend/compat/REIAlloyingDisplay.java index 3b8e4d6d..09ebbb5f 100644 --- a/src/main/java/ru/betterend/compat/REIAlloyingDisplay.java +++ b/src/main/java/ru/betterend/compat/REIAlloyingDisplay.java @@ -1,111 +1,111 @@ -package ru.betterend.compat; - -import java.util.Collections; -import java.util.List; -import java.util.Optional; -import java.util.stream.Collectors; - -import org.jetbrains.annotations.NotNull; - -import me.shedaniel.rei.api.EntryStack; -import me.shedaniel.rei.api.TransferRecipeDisplay; -import me.shedaniel.rei.server.ContainerInfo; -import net.minecraft.item.Item; -import net.minecraft.recipe.BlastingRecipe; -import net.minecraft.recipe.Recipe; -import net.minecraft.screen.ScreenHandler; -import net.minecraft.text.TranslatableText; -import net.minecraft.util.Formatting; -import net.minecraft.util.Identifier; -import ru.betterend.blocks.entities.EndStoneSmelterBlockEntity; -import ru.betterend.recipe.builders.AlloyingRecipe; - -public class REIAlloyingDisplay implements TransferRecipeDisplay { - - private static List fuel; - - private Recipe recipe; - private List> input; - private List output; - private float xp; - private double smeltTime; - - public REIAlloyingDisplay(AlloyingRecipe recipe) { - this.recipe = recipe; - this.input = EntryStack.ofIngredients(recipe.getPreviewInputs()); - this.output = Collections.singletonList(EntryStack.create(recipe.getOutput())); - this.xp = recipe.getExperience(); - this.smeltTime = recipe.getSmeltTime(); - } - - public REIAlloyingDisplay(BlastingRecipe recipe) { - this.recipe = recipe; - this.input = EntryStack.ofIngredients(recipe.getPreviewInputs()); - this.output = Collections.singletonList(EntryStack.create(recipe.getOutput())); - this.xp = recipe.getExperience(); - this.smeltTime = recipe.getCookTime(); - } - - public static List getFuel() { - return fuel; - } - - @Override - public @NotNull Optional getRecipeLocation() { - return Optional.ofNullable(recipe).map(Recipe::getId); - } - - @Override - public @NotNull List> getInputEntries() { - return this.input; - } - - @Override - public @NotNull List> getResultingEntries() { - return Collections.singletonList(output); - } - - @Override - public @NotNull Identifier getRecipeCategory() { - return AlloyingRecipe.ID; - } - - @Override - public @NotNull List> getRequiredEntries() { - return this.input; - } - - public float getXp() { - return this.xp; - } - - public double getSmeltTime() { - return this.smeltTime; - } - - public Optional> getOptionalRecipe() { - return Optional.ofNullable(recipe); - } - - @Override - public int getWidth() { - return 2; - } - - @Override - public int getHeight() { - return 1; - } - - @Override - public List> getOrganisedInputEntries(ContainerInfo containerInfo, ScreenHandler container) { - return this.input; - } - - static { - fuel = EndStoneSmelterBlockEntity.availableFuels().keySet().stream() - .map(Item::getDefaultStack).map(EntryStack::create) - .map(e -> e.setting(EntryStack.Settings.TOOLTIP_APPEND_EXTRA, stack -> Collections.singletonList(new TranslatableText("category.rei.smelting.fuel") - .formatted(Formatting.YELLOW)))).collect(Collectors.toList()); - } -} +package ru.betterend.compat; + +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import org.jetbrains.annotations.NotNull; + +import me.shedaniel.rei.api.EntryStack; +import me.shedaniel.rei.api.TransferRecipeDisplay; +import me.shedaniel.rei.server.ContainerInfo; +import net.minecraft.item.Item; +import net.minecraft.recipe.BlastingRecipe; +import net.minecraft.recipe.Recipe; +import net.minecraft.screen.ScreenHandler; +import net.minecraft.text.TranslatableText; +import net.minecraft.util.Formatting; +import net.minecraft.util.Identifier; +import ru.betterend.blocks.entities.EndStoneSmelterBlockEntity; +import ru.betterend.recipe.builders.AlloyingRecipe; + +public class REIAlloyingDisplay implements TransferRecipeDisplay { + + private static List fuel; + + private Recipe recipe; + private List> input; + private List output; + private float xp; + private double smeltTime; + + public REIAlloyingDisplay(AlloyingRecipe recipe) { + this.recipe = recipe; + this.input = EntryStack.ofIngredients(recipe.getPreviewInputs()); + this.output = Collections.singletonList(EntryStack.create(recipe.getOutput())); + this.xp = recipe.getExperience(); + this.smeltTime = recipe.getSmeltTime(); + } + + public REIAlloyingDisplay(BlastingRecipe recipe) { + this.recipe = recipe; + this.input = EntryStack.ofIngredients(recipe.getPreviewInputs()); + this.output = Collections.singletonList(EntryStack.create(recipe.getOutput())); + this.xp = recipe.getExperience(); + this.smeltTime = recipe.getCookTime(); + } + + public static List getFuel() { + return fuel; + } + + @Override + public @NotNull Optional getRecipeLocation() { + return Optional.ofNullable(recipe).map(Recipe::getId); + } + + @Override + public @NotNull List> getInputEntries() { + return this.input; + } + + @Override + public @NotNull List> getResultingEntries() { + return Collections.singletonList(output); + } + + @Override + public @NotNull Identifier getRecipeCategory() { + return AlloyingRecipe.ID; + } + + @Override + public @NotNull List> getRequiredEntries() { + return this.input; + } + + public float getXp() { + return this.xp; + } + + public double getSmeltTime() { + return this.smeltTime; + } + + public Optional> getOptionalRecipe() { + return Optional.ofNullable(recipe); + } + + @Override + public int getWidth() { + return 2; + } + + @Override + public int getHeight() { + return 1; + } + + @Override + public List> getOrganisedInputEntries(ContainerInfo containerInfo, ScreenHandler container) { + return this.input; + } + + static { + fuel = EndStoneSmelterBlockEntity.availableFuels().keySet().stream() + .map(Item::getDefaultStack).map(EntryStack::create) + .map(e -> e.setting(EntryStack.Settings.TOOLTIP_APPEND_EXTRA, stack -> Collections.singletonList(new TranslatableText("category.rei.smelting.fuel") + .formatted(Formatting.YELLOW)))).collect(Collectors.toList()); + } +} diff --git a/src/main/java/ru/betterend/compat/REIAnvilCategory.java b/src/main/java/ru/betterend/compat/REIAnvilCategory.java index 65175ebb..87f12de9 100644 --- a/src/main/java/ru/betterend/compat/REIAnvilCategory.java +++ b/src/main/java/ru/betterend/compat/REIAnvilCategory.java @@ -1,84 +1,84 @@ -package ru.betterend.compat; - -import java.util.Collections; -import java.util.List; - -import org.jetbrains.annotations.NotNull; - -import com.google.common.collect.Lists; - -import it.unimi.dsi.fastutil.ints.IntList; -import me.shedaniel.math.Point; -import me.shedaniel.math.Rectangle; -import me.shedaniel.rei.api.EntryStack; -import me.shedaniel.rei.api.TransferRecipeCategory; -import me.shedaniel.rei.api.widgets.Widgets; -import me.shedaniel.rei.gui.entries.RecipeEntry; -import me.shedaniel.rei.gui.entries.SimpleRecipeEntry; -import me.shedaniel.rei.gui.widget.Widget; -import net.minecraft.block.Blocks; -import net.minecraft.client.gui.DrawableHelper; -import net.minecraft.client.util.math.MatrixStack; -import net.minecraft.text.TranslatableText; -import net.minecraft.util.Identifier; -import ru.betterend.util.LangUtil; - -public class REIAnvilCategory implements TransferRecipeCategory { - - @Override - public @NotNull Identifier getIdentifier() { - return REIPlugin.SMITHING; - } - - @Override - public @NotNull String getCategoryName() { - return LangUtil.translate(Blocks.ANVIL.getTranslationKey()); - } - - @Override - public @NotNull EntryStack getLogo() { - return REIPlugin.ANVIL; - } - - @Override - public @NotNull List setupDisplay(REIAnvilDisplay display, Rectangle bounds) { - Point startPoint = new Point(bounds.getCenterX() - 41, bounds.y + 10); - List widgets = Lists.newArrayList(); - widgets.add(Widgets.createRecipeBase(bounds)); - int x = startPoint.x + 10; - int y = startPoint.y; - widgets.add(Widgets.createResultSlotBackground(new Point(x + 61, y + 4))); - List> inputEntries = display.getInputEntries(); - widgets.add(Widgets.createArrow(new Point(x + 24, y + 3))); - widgets.add(Widgets.createLabel(new Point(bounds.x + bounds.width - 5, bounds.y + bounds.height - 12), - new TranslatableText("category.rei.damage.amount&dmg", display.getDamage())).noShadow().rightAligned().color(0xFF404040, 0xFFBBBBBB)); - widgets.add(Widgets.createSlot(new Point(x - 20, y + 3)).entries(inputEntries.get(0)).markInput()); - widgets.add(Widgets.createSlot(new Point(x + 1, y + 3)).entries(inputEntries.get(1)).markInput()); - widgets.add(Widgets.createSlot(new Point(x + 61, y + 4)).entries(display.getResultingEntries().get(0)).disableBackground().markOutput()); - return widgets; - } - - @Override - public void renderRedSlots(MatrixStack matrices, List widgets, Rectangle bounds, REIAnvilDisplay display, - IntList redSlots) { - Point startPoint = new Point(bounds.getCenterX() - 41, bounds.getCenterY() - 27); - matrices.push(); - matrices.translate(0, 0, 400); - if (redSlots.contains(0)) { - DrawableHelper.fill(matrices, startPoint.x - 20, startPoint.y + 3, startPoint.x - 20 + 16, startPoint.y + 3 + 16, 1090453504); - DrawableHelper.fill(matrices, startPoint.x + 1, startPoint.y + 3, startPoint.x + 1 + 16, startPoint.y + 3 + 16, 1090453504); - } - matrices.pop(); - } - - @Override - public @NotNull RecipeEntry getSimpleRenderer(REIAnvilDisplay recipe) { - return SimpleRecipeEntry.from(Collections.singletonList(recipe.getInputEntries().get(0)), recipe.getResultingEntries()); - } - - @Override - public int getDisplayHeight() { - return 49; - } - -} +package ru.betterend.compat; + +import java.util.Collections; +import java.util.List; + +import org.jetbrains.annotations.NotNull; + +import com.google.common.collect.Lists; + +import it.unimi.dsi.fastutil.ints.IntList; +import me.shedaniel.math.Point; +import me.shedaniel.math.Rectangle; +import me.shedaniel.rei.api.EntryStack; +import me.shedaniel.rei.api.TransferRecipeCategory; +import me.shedaniel.rei.api.widgets.Widgets; +import me.shedaniel.rei.gui.entries.RecipeEntry; +import me.shedaniel.rei.gui.entries.SimpleRecipeEntry; +import me.shedaniel.rei.gui.widget.Widget; +import net.minecraft.block.Blocks; +import net.minecraft.client.gui.DrawableHelper; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.text.TranslatableText; +import net.minecraft.util.Identifier; +import ru.betterend.util.LangUtil; + +public class REIAnvilCategory implements TransferRecipeCategory { + + @Override + public @NotNull Identifier getIdentifier() { + return REIPlugin.SMITHING; + } + + @Override + public @NotNull String getCategoryName() { + return LangUtil.translate(Blocks.ANVIL.getTranslationKey()); + } + + @Override + public @NotNull EntryStack getLogo() { + return REIPlugin.ANVIL; + } + + @Override + public @NotNull List setupDisplay(REIAnvilDisplay display, Rectangle bounds) { + Point startPoint = new Point(bounds.getCenterX() - 41, bounds.y + 10); + List widgets = Lists.newArrayList(); + widgets.add(Widgets.createRecipeBase(bounds)); + int x = startPoint.x + 10; + int y = startPoint.y; + widgets.add(Widgets.createResultSlotBackground(new Point(x + 61, y + 4))); + List> inputEntries = display.getInputEntries(); + widgets.add(Widgets.createArrow(new Point(x + 24, y + 3))); + widgets.add(Widgets.createLabel(new Point(bounds.x + bounds.width - 5, bounds.y + bounds.height - 12), + new TranslatableText("category.rei.damage.amount&dmg", display.getDamage())).noShadow().rightAligned().color(0xFF404040, 0xFFBBBBBB)); + widgets.add(Widgets.createSlot(new Point(x - 20, y + 3)).entries(inputEntries.get(0)).markInput()); + widgets.add(Widgets.createSlot(new Point(x + 1, y + 3)).entries(inputEntries.get(1)).markInput()); + widgets.add(Widgets.createSlot(new Point(x + 61, y + 4)).entries(display.getResultingEntries().get(0)).disableBackground().markOutput()); + return widgets; + } + + @Override + public void renderRedSlots(MatrixStack matrices, List widgets, Rectangle bounds, REIAnvilDisplay display, + IntList redSlots) { + Point startPoint = new Point(bounds.getCenterX() - 41, bounds.getCenterY() - 27); + matrices.push(); + matrices.translate(0, 0, 400); + if (redSlots.contains(0)) { + DrawableHelper.fill(matrices, startPoint.x - 20, startPoint.y + 3, startPoint.x - 20 + 16, startPoint.y + 3 + 16, 1090453504); + DrawableHelper.fill(matrices, startPoint.x + 1, startPoint.y + 3, startPoint.x + 1 + 16, startPoint.y + 3 + 16, 1090453504); + } + matrices.pop(); + } + + @Override + public @NotNull RecipeEntry getSimpleRenderer(REIAnvilDisplay recipe) { + return SimpleRecipeEntry.from(Collections.singletonList(recipe.getInputEntries().get(0)), recipe.getResultingEntries()); + } + + @Override + public int getDisplayHeight() { + return 49; + } + +} diff --git a/src/main/java/ru/betterend/compat/REIAnvilDisplay.java b/src/main/java/ru/betterend/compat/REIAnvilDisplay.java index f554b8d9..ddca40b1 100644 --- a/src/main/java/ru/betterend/compat/REIAnvilDisplay.java +++ b/src/main/java/ru/betterend/compat/REIAnvilDisplay.java @@ -1,73 +1,73 @@ -package ru.betterend.compat; - -import java.util.Collections; -import java.util.List; -import java.util.Optional; - -import org.jetbrains.annotations.NotNull; - -import me.shedaniel.rei.api.EntryStack; -import me.shedaniel.rei.api.TransferRecipeDisplay; -import me.shedaniel.rei.server.ContainerInfo; -import net.minecraft.recipe.Recipe; -import net.minecraft.screen.ScreenHandler; -import net.minecraft.util.Identifier; -import ru.betterend.recipe.builders.AnvilSmithingRecipe; - -public class REIAnvilDisplay implements TransferRecipeDisplay { - - private AnvilSmithingRecipe recipe; - private List> input; - private List output; - - public REIAnvilDisplay(AnvilSmithingRecipe recipe) { - this.recipe = recipe; - this.input = EntryStack.ofIngredients(recipe.getPreviewInputs()); - this.output = Collections.singletonList(EntryStack.create(recipe.getOutput())); - } - - public int getDamage() { - return this.recipe.getDamage(); - } - - @Override - public @NotNull Optional getRecipeLocation() { - return Optional.ofNullable(recipe).map(Recipe::getId); - } - - @Override - public @NotNull List> getInputEntries() { - return this.input; - } - - @Override - public @NotNull List> getResultingEntries() { - return Collections.singletonList(output); - } - - @Override - public @NotNull Identifier getRecipeCategory() { - return REIPlugin.SMITHING; - } - - @Override - public @NotNull List> getRequiredEntries() { - return this.input; - } - - @Override - public int getWidth() { - return 2; - } - - @Override - public int getHeight() { - return 1; - } - - @Override - public List> getOrganisedInputEntries(ContainerInfo containerInfo, - ScreenHandler container) { - return this.input; - } -} +package ru.betterend.compat; + +import java.util.Collections; +import java.util.List; +import java.util.Optional; + +import org.jetbrains.annotations.NotNull; + +import me.shedaniel.rei.api.EntryStack; +import me.shedaniel.rei.api.TransferRecipeDisplay; +import me.shedaniel.rei.server.ContainerInfo; +import net.minecraft.recipe.Recipe; +import net.minecraft.screen.ScreenHandler; +import net.minecraft.util.Identifier; +import ru.betterend.recipe.builders.AnvilSmithingRecipe; + +public class REIAnvilDisplay implements TransferRecipeDisplay { + + private AnvilSmithingRecipe recipe; + private List> input; + private List output; + + public REIAnvilDisplay(AnvilSmithingRecipe recipe) { + this.recipe = recipe; + this.input = EntryStack.ofIngredients(recipe.getPreviewInputs()); + this.output = Collections.singletonList(EntryStack.create(recipe.getOutput())); + } + + public int getDamage() { + return this.recipe.getDamage(); + } + + @Override + public @NotNull Optional getRecipeLocation() { + return Optional.ofNullable(recipe).map(Recipe::getId); + } + + @Override + public @NotNull List> getInputEntries() { + return this.input; + } + + @Override + public @NotNull List> getResultingEntries() { + return Collections.singletonList(output); + } + + @Override + public @NotNull Identifier getRecipeCategory() { + return REIPlugin.SMITHING; + } + + @Override + public @NotNull List> getRequiredEntries() { + return this.input; + } + + @Override + public int getWidth() { + return 2; + } + + @Override + public int getHeight() { + return 1; + } + + @Override + public List> getOrganisedInputEntries(ContainerInfo containerInfo, + ScreenHandler container) { + return this.input; + } +} diff --git a/src/main/java/ru/betterend/compat/REIContainer.java b/src/main/java/ru/betterend/compat/REIContainer.java index ec5f4946..9c6f242e 100644 --- a/src/main/java/ru/betterend/compat/REIContainer.java +++ b/src/main/java/ru/betterend/compat/REIContainer.java @@ -1,14 +1,14 @@ -package ru.betterend.compat; - -import me.shedaniel.rei.plugin.containers.CraftingContainerInfoWrapper; -import me.shedaniel.rei.server.ContainerInfoHandler; -import ru.betterend.client.gui.EndStoneSmelterScreenHandler; -import ru.betterend.recipe.builders.AlloyingRecipe; - -public class REIContainer implements Runnable { - - @Override - public void run() { - ContainerInfoHandler.registerContainerInfo(AlloyingRecipe.ID, CraftingContainerInfoWrapper.create(EndStoneSmelterScreenHandler.class)); - } -} +package ru.betterend.compat; + +import me.shedaniel.rei.plugin.containers.CraftingContainerInfoWrapper; +import me.shedaniel.rei.server.ContainerInfoHandler; +import ru.betterend.client.gui.EndStoneSmelterScreenHandler; +import ru.betterend.recipe.builders.AlloyingRecipe; + +public class REIContainer implements Runnable { + + @Override + public void run() { + ContainerInfoHandler.registerContainerInfo(AlloyingRecipe.ID, CraftingContainerInfoWrapper.create(EndStoneSmelterScreenHandler.class)); + } +} diff --git a/src/main/java/ru/betterend/config/Config.java b/src/main/java/ru/betterend/config/Config.java index c30533c1..52354aed 100644 --- a/src/main/java/ru/betterend/config/Config.java +++ b/src/main/java/ru/betterend/config/Config.java @@ -1,115 +1,115 @@ -package ru.betterend.config; - -import ru.betterend.BetterEnd; -import ru.betterend.config.ConfigKeeper.BooleanEntry; -import ru.betterend.config.ConfigKeeper.Entry; -import ru.betterend.config.ConfigKeeper.FloatEntry; -import ru.betterend.config.ConfigKeeper.IntegerEntry; -import ru.betterend.config.ConfigKeeper.RangeEntry; -import ru.betterend.config.ConfigKeeper.StringEntry; - -public abstract class Config { - - protected final ConfigKeeper configKeeper = new ConfigKeeper(); - - public abstract void saveChanges(); - - public > E getEntry(String key) { - return this.configKeeper.getEntry(key); - } - - public T getDefault(String key) { - Entry entry = configKeeper.getEntry(key); - return entry != null ? entry.getDefault() : null; - } - - public String getString(String key) { - String str = configKeeper.getValue(key); - return str != null ? str : ""; - } - - public boolean setString(String key, String value) { - try { - StringEntry entry = configKeeper.getEntry(key); - entry.setValue(value); - this.configKeeper.set(key, entry); - - return true; - } catch (NullPointerException ex) { - BetterEnd.LOGGER.catching(ex); - } - - return false; - } - - public int getInt(String key) { - Integer val = configKeeper.getValue(key); - return val != null ? val : 0; - } - - public boolean setInt(String key, int value) { - try { - IntegerEntry entry = configKeeper.getEntry(key); - entry.setValue(value); - this.configKeeper.set(key, entry); - - return true; - } catch (NullPointerException ex) { - BetterEnd.LOGGER.catching(ex); - } - - return false; - } - - public > boolean setRanged(String key, T value) { - try { - RangeEntry entry = configKeeper.getEntry(key); - entry.setValue(value); - this.configKeeper.set(key, entry); - - return true; - } catch (NullPointerException | ClassCastException ex) { - BetterEnd.LOGGER.catching(ex); - } - - return false; - } - - public float getFloat(String key) { - Float val = configKeeper.getValue(key); - return val != null ? val : 0.0F; - } - - public boolean setFloat(String key, float value) { - try { - FloatEntry entry = configKeeper.getEntry(key); - entry.setValue(value); - this.configKeeper.set(key, entry); - - return true; - } catch (NullPointerException ex) { - BetterEnd.LOGGER.catching(ex); - } - - return false; - } - - public boolean getBoolean(String key) { - Boolean val = configKeeper.getValue(key); - return val != null ? val : false; - } - - public boolean setBoolean(String key, boolean value) { - try { - BooleanEntry entry = configKeeper.getEntry(key); - entry.setValue(value); - this.configKeeper.set(key, entry); - - return true; - } catch (NullPointerException ex) { - BetterEnd.LOGGER.catching(ex); - } - - return false; - } -} +package ru.betterend.config; + +import ru.betterend.BetterEnd; +import ru.betterend.config.ConfigKeeper.BooleanEntry; +import ru.betterend.config.ConfigKeeper.Entry; +import ru.betterend.config.ConfigKeeper.FloatEntry; +import ru.betterend.config.ConfigKeeper.IntegerEntry; +import ru.betterend.config.ConfigKeeper.RangeEntry; +import ru.betterend.config.ConfigKeeper.StringEntry; + +public abstract class Config { + + protected final ConfigKeeper configKeeper = new ConfigKeeper(); + + public abstract void saveChanges(); + + public > E getEntry(String key) { + return this.configKeeper.getEntry(key); + } + + public T getDefault(String key) { + Entry entry = configKeeper.getEntry(key); + return entry != null ? entry.getDefault() : null; + } + + public String getString(String key) { + String str = configKeeper.getValue(key); + return str != null ? str : ""; + } + + public boolean setString(String key, String value) { + try { + StringEntry entry = configKeeper.getEntry(key); + entry.setValue(value); + this.configKeeper.set(key, entry); + + return true; + } catch (NullPointerException ex) { + BetterEnd.LOGGER.catching(ex); + } + + return false; + } + + public int getInt(String key) { + Integer val = configKeeper.getValue(key); + return val != null ? val : 0; + } + + public boolean setInt(String key, int value) { + try { + IntegerEntry entry = configKeeper.getEntry(key); + entry.setValue(value); + this.configKeeper.set(key, entry); + + return true; + } catch (NullPointerException ex) { + BetterEnd.LOGGER.catching(ex); + } + + return false; + } + + public > boolean setRanged(String key, T value) { + try { + RangeEntry entry = configKeeper.getEntry(key); + entry.setValue(value); + this.configKeeper.set(key, entry); + + return true; + } catch (NullPointerException | ClassCastException ex) { + BetterEnd.LOGGER.catching(ex); + } + + return false; + } + + public float getFloat(String key) { + Float val = configKeeper.getValue(key); + return val != null ? val : 0.0F; + } + + public boolean setFloat(String key, float value) { + try { + FloatEntry entry = configKeeper.getEntry(key); + entry.setValue(value); + this.configKeeper.set(key, entry); + + return true; + } catch (NullPointerException ex) { + BetterEnd.LOGGER.catching(ex); + } + + return false; + } + + public boolean getBoolean(String key) { + Boolean val = configKeeper.getValue(key); + return val != null ? val : false; + } + + public boolean setBoolean(String key, boolean value) { + try { + BooleanEntry entry = configKeeper.getEntry(key); + entry.setValue(value); + this.configKeeper.set(key, entry); + + return true; + } catch (NullPointerException ex) { + BetterEnd.LOGGER.catching(ex); + } + + return false; + } +} diff --git a/src/main/java/ru/betterend/config/ConfigKeeper.java b/src/main/java/ru/betterend/config/ConfigKeeper.java index 0ad9043b..df05b8c7 100644 --- a/src/main/java/ru/betterend/config/ConfigKeeper.java +++ b/src/main/java/ru/betterend/config/ConfigKeeper.java @@ -1,342 +1,342 @@ -package ru.betterend.config; - -import java.util.HashMap; -import java.util.Map; -import java.util.function.Consumer; -import java.util.function.Supplier; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; - -import net.minecraft.util.JsonHelper; -import ru.betterend.BetterEnd; - -public final class ConfigKeeper { - - private Map> configEntries = new HashMap<>(); - - public JsonElement toJson(JsonObject jsonObject) { - for (String param : configEntries.keySet()) { - jsonObject.addProperty(param, configEntries.get(param).asString()); - } - - return jsonObject; - } - - public void fromJson(JsonObject jsonObject) { - for (String param : configEntries.keySet()) { - if (jsonObject.has(param)) { - Entry entry = configEntries.get(param); - entry.fromString(JsonHelper.getString(jsonObject, param)); - } - } - } - - @SuppressWarnings("unchecked") - public > E getEntry(String key) { - Entry entry = this.configEntries.get(key); - if (entry == null) { - BetterEnd.LOGGER.warning(String.format("Entry '%s' doesn't exists.", key)); - return null; - } - return (E) entry; - } - - public T getValue(String key) { - Entry entry = this.getEntry(key); - if (entry == null) { - BetterEnd.LOGGER.warning("Empty value will be returned."); - return null; - } - return entry.getValue(); - } - - public void set(String key, Entry entry) { - configEntries.put(key, entry); - } - - public > void registerEntry(String key, T entry) { - configEntries.put(key, entry); - } - - public static class BooleanEntry extends Entry { - - public BooleanEntry(Boolean defaultValue, Consumer consumer, Supplier supplier) { - super(defaultValue, consumer, supplier); - } - - @Override - public Boolean getValue() { - return this.getter.get(); - } - - @Override - public void setValue(Boolean value) { - this.setter.accept(value); - } - - @Override - public Boolean getDefault() { - return this.defaultValue; - } - - @Override - public String asString() { - return this.getValue() ? "true" : "false"; - } - - @Override - public void fromString(String value) { - this.setValue(value.equals("true") ? true : false); - } - - } - - public static class FloatEntry extends Entry { - - public FloatEntry(Float defaultValue, Consumer consumer, Supplier supplier) { - super(defaultValue, consumer, supplier); - } - - @Override - public Float getValue() { - return this.getter.get(); - } - - @Override - public void setValue(Float value) { - this.setter.accept(value); - } - - @Override - public Float getDefault() { - return this.defaultValue; - } - - @Override - public String asString() { - return Float.toString(getValue()); - } - - @Override - public void fromString(String value) { - this.setValue(Float.valueOf(value)); - } - - } - - public static class FloatRange extends RangeEntry { - - public FloatRange(Float defaultValue, Consumer consumer, Supplier supplier, Float minVal, Float maxVal) { - super(defaultValue, consumer, supplier, minVal, maxVal); - } - - @Override - public Float getValue() { - return this.getter.get(); - } - - @Override - public Float getDefault() { - return this.defaultValue; - } - - @Override - public void fromString(String value) { - this.setValue(Float.valueOf(value)); - } - - @Override - public String asString() { - return Float.toString(getValue()); - } - - } - - public static class IntegerEntry extends Entry { - - public IntegerEntry(Integer defaultValue, Consumer consumer, Supplier supplier) { - super(defaultValue, consumer, supplier); - } - - @Override - public Integer getValue() { - return this.getter.get(); - } - - @Override - public void setValue(Integer value) { - this.setter.accept(value); - } - - @Override - public Integer getDefault() { - return this.defaultValue; - } - - @Override - public String asString() { - return Integer.toString(getValue()); - } - - @Override - public void fromString(String value) { - this.setValue(Integer.valueOf(value)); - } - - } - - public static class IntegerRange extends RangeEntry { - - public IntegerRange(Integer defaultValue, Consumer consumer, Supplier supplier, Integer minVal, Integer maxVal) { - super(defaultValue, consumer, supplier, minVal, maxVal); - } - - @Override - public Integer getValue() { - return this.getter.get(); - } - - @Override - public Integer getDefault() { - return this.defaultValue; - } - - @Override - public void fromString(String value) { - this.setValue(Integer.valueOf(value)); - } - - @Override - public String asString() { - return Integer.toString(getValue()); - } - - } - - public static class StringEntry extends Entry { - - public StringEntry(String defaultValue, Consumer consumer, Supplier supplier) { - super(defaultValue, consumer, supplier); - } - - @Override - public String getValue() { - return this.getter.get(); - } - - @Override - public void setValue(String value) { - this.setter.accept(value); - } - - @Override - public String getDefault() { - return this.defaultValue; - } - - @Override - public String asString() { - return getValue(); - } - - @Override - public void fromString(String value) { - this.setValue(value); - } - - } - - public static class EnumEntry> extends Entry { - - public EnumEntry(T defaultValue, Consumer consumer, Supplier supplier) { - super(defaultValue, consumer, supplier); - } - - @Override - public T getValue() { - return this.getter.get(); - } - - @Override - public void setValue(T value) { - this.setter.accept(value); - } - - @SuppressWarnings("unchecked") - public boolean setValue(String name) { - try { - this.setter.accept((T) Enum.valueOf(this.defaultValue.getClass(), name)); - return true; - } catch(IllegalArgumentException ex) { - BetterEnd.LOGGER.catching(ex); - } - - return false; - } - - @Override - public T getDefault() { - return this.defaultValue; - } - - @Override - public String asString() { - return getValue().name(); - } - - @Override - public void fromString(String value) { - this.setValue(value); - } - } - - public static abstract class RangeEntry> extends Entry { - - private final T min, max; - - public RangeEntry(T defaultValue, Consumer consumer, Supplier supplier, T minVal, T maxVal) { - super(defaultValue, consumer, supplier); - - this.min = minVal; - this.max = maxVal; - } - - @Override - public void setValue(T value) { - this.setter.accept(value.compareTo(min) < 0 ? min : value.compareTo(max) > 0 ? max : value); - } - - public T minValue() { - return this.min; - } - - public T maxValue() { - return this.max; - } - } - - public static abstract class Entry { - - protected final T defaultValue; - - protected final Consumer setter; - protected final Supplier getter; - - public Entry (T defaultValue, Consumer consumer, Supplier supplier) { - this.defaultValue = defaultValue; - this.setter = consumer; - this.getter = supplier; - } - - public abstract T getValue(); - public abstract void setValue(T value); - public abstract T getDefault(); - public abstract void fromString(String value); - public abstract String asString(); - - public void setDefault() { - this.setter.accept(defaultValue); - } - } -} +package ru.betterend.config; + +import java.util.HashMap; +import java.util.Map; +import java.util.function.Consumer; +import java.util.function.Supplier; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + +import net.minecraft.util.JsonHelper; +import ru.betterend.BetterEnd; + +public final class ConfigKeeper { + + private Map> configEntries = new HashMap<>(); + + public JsonElement toJson(JsonObject jsonObject) { + for (String param : configEntries.keySet()) { + jsonObject.addProperty(param, configEntries.get(param).asString()); + } + + return jsonObject; + } + + public void fromJson(JsonObject jsonObject) { + for (String param : configEntries.keySet()) { + if (jsonObject.has(param)) { + Entry entry = configEntries.get(param); + entry.fromString(JsonHelper.getString(jsonObject, param)); + } + } + } + + @SuppressWarnings("unchecked") + public > E getEntry(String key) { + Entry entry = this.configEntries.get(key); + if (entry == null) { + BetterEnd.LOGGER.warning(String.format("Entry '%s' doesn't exists.", key)); + return null; + } + return (E) entry; + } + + public T getValue(String key) { + Entry entry = this.getEntry(key); + if (entry == null) { + BetterEnd.LOGGER.warning("Empty value will be returned."); + return null; + } + return entry.getValue(); + } + + public void set(String key, Entry entry) { + configEntries.put(key, entry); + } + + public > void registerEntry(String key, T entry) { + configEntries.put(key, entry); + } + + public static class BooleanEntry extends Entry { + + public BooleanEntry(Boolean defaultValue, Consumer consumer, Supplier supplier) { + super(defaultValue, consumer, supplier); + } + + @Override + public Boolean getValue() { + return this.getter.get(); + } + + @Override + public void setValue(Boolean value) { + this.setter.accept(value); + } + + @Override + public Boolean getDefault() { + return this.defaultValue; + } + + @Override + public String asString() { + return this.getValue() ? "true" : "false"; + } + + @Override + public void fromString(String value) { + this.setValue(value.equals("true") ? true : false); + } + + } + + public static class FloatEntry extends Entry { + + public FloatEntry(Float defaultValue, Consumer consumer, Supplier supplier) { + super(defaultValue, consumer, supplier); + } + + @Override + public Float getValue() { + return this.getter.get(); + } + + @Override + public void setValue(Float value) { + this.setter.accept(value); + } + + @Override + public Float getDefault() { + return this.defaultValue; + } + + @Override + public String asString() { + return Float.toString(getValue()); + } + + @Override + public void fromString(String value) { + this.setValue(Float.valueOf(value)); + } + + } + + public static class FloatRange extends RangeEntry { + + public FloatRange(Float defaultValue, Consumer consumer, Supplier supplier, Float minVal, Float maxVal) { + super(defaultValue, consumer, supplier, minVal, maxVal); + } + + @Override + public Float getValue() { + return this.getter.get(); + } + + @Override + public Float getDefault() { + return this.defaultValue; + } + + @Override + public void fromString(String value) { + this.setValue(Float.valueOf(value)); + } + + @Override + public String asString() { + return Float.toString(getValue()); + } + + } + + public static class IntegerEntry extends Entry { + + public IntegerEntry(Integer defaultValue, Consumer consumer, Supplier supplier) { + super(defaultValue, consumer, supplier); + } + + @Override + public Integer getValue() { + return this.getter.get(); + } + + @Override + public void setValue(Integer value) { + this.setter.accept(value); + } + + @Override + public Integer getDefault() { + return this.defaultValue; + } + + @Override + public String asString() { + return Integer.toString(getValue()); + } + + @Override + public void fromString(String value) { + this.setValue(Integer.valueOf(value)); + } + + } + + public static class IntegerRange extends RangeEntry { + + public IntegerRange(Integer defaultValue, Consumer consumer, Supplier supplier, Integer minVal, Integer maxVal) { + super(defaultValue, consumer, supplier, minVal, maxVal); + } + + @Override + public Integer getValue() { + return this.getter.get(); + } + + @Override + public Integer getDefault() { + return this.defaultValue; + } + + @Override + public void fromString(String value) { + this.setValue(Integer.valueOf(value)); + } + + @Override + public String asString() { + return Integer.toString(getValue()); + } + + } + + public static class StringEntry extends Entry { + + public StringEntry(String defaultValue, Consumer consumer, Supplier supplier) { + super(defaultValue, consumer, supplier); + } + + @Override + public String getValue() { + return this.getter.get(); + } + + @Override + public void setValue(String value) { + this.setter.accept(value); + } + + @Override + public String getDefault() { + return this.defaultValue; + } + + @Override + public String asString() { + return getValue(); + } + + @Override + public void fromString(String value) { + this.setValue(value); + } + + } + + public static class EnumEntry> extends Entry { + + public EnumEntry(T defaultValue, Consumer consumer, Supplier supplier) { + super(defaultValue, consumer, supplier); + } + + @Override + public T getValue() { + return this.getter.get(); + } + + @Override + public void setValue(T value) { + this.setter.accept(value); + } + + @SuppressWarnings("unchecked") + public boolean setValue(String name) { + try { + this.setter.accept((T) Enum.valueOf(this.defaultValue.getClass(), name)); + return true; + } catch(IllegalArgumentException ex) { + BetterEnd.LOGGER.catching(ex); + } + + return false; + } + + @Override + public T getDefault() { + return this.defaultValue; + } + + @Override + public String asString() { + return getValue().name(); + } + + @Override + public void fromString(String value) { + this.setValue(value); + } + } + + public static abstract class RangeEntry> extends Entry { + + private final T min, max; + + public RangeEntry(T defaultValue, Consumer consumer, Supplier supplier, T minVal, T maxVal) { + super(defaultValue, consumer, supplier); + + this.min = minVal; + this.max = maxVal; + } + + @Override + public void setValue(T value) { + this.setter.accept(value.compareTo(min) < 0 ? min : value.compareTo(max) > 0 ? max : value); + } + + public T minValue() { + return this.min; + } + + public T maxValue() { + return this.max; + } + } + + public static abstract class Entry { + + protected final T defaultValue; + + protected final Consumer setter; + protected final Supplier getter; + + public Entry (T defaultValue, Consumer consumer, Supplier supplier) { + this.defaultValue = defaultValue; + this.setter = consumer; + this.getter = supplier; + } + + public abstract T getValue(); + public abstract void setValue(T value); + public abstract T getDefault(); + public abstract void fromString(String value); + public abstract String asString(); + + public void setDefault() { + this.setter.accept(defaultValue); + } + } +} diff --git a/src/main/java/ru/betterend/config/ConfigWriter.java b/src/main/java/ru/betterend/config/ConfigWriter.java index 30f9f32c..77ba15f9 100644 --- a/src/main/java/ru/betterend/config/ConfigWriter.java +++ b/src/main/java/ru/betterend/config/ConfigWriter.java @@ -1,79 +1,79 @@ -package ru.betterend.config; - -import java.io.File; -import java.nio.file.Path; - -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; - -import net.fabricmc.loader.api.FabricLoader; -import ru.betterend.BetterEnd; -import ru.betterend.util.JsonFactory; - -public class ConfigWriter { - - private final static Path GAME_CONFIG_DIR = FabricLoader.getInstance().getConfigDir(); - public final static File MOD_CONFIG_DIR = new File(GAME_CONFIG_DIR.toFile(), BetterEnd.MOD_ID); - private final static File MAIN_CONFIG_FILE = new File(MOD_CONFIG_DIR, "settings.json"); - - private static JsonObject mainConfig; - - private JsonObject configObject; - private File configFile; - - public JsonObject getConfig() { - return configObject; - } - - public JsonObject loadConfig(File configFile) { - this.configFile = configFile; - if (configObject == null) { - configObject = load(configFile); - } - - return configObject; - } - - public void saveConfig() { - if (configFile == null || configObject == null) { - return; - } - save(configFile, configObject); - } - - public static JsonObject load() { - if (mainConfig == null) { - mainConfig = load(MAIN_CONFIG_FILE); - } - return mainConfig; - } - - public static JsonObject load(File configFile) { - return JsonFactory.getJsonObject(configFile); - } - - public static void save() { - save(MAIN_CONFIG_FILE, mainConfig); - } - - public static void save(JsonElement config) { - save(MAIN_CONFIG_FILE, config); - } - - public static void save(File configFile, JsonElement config) { - JsonFactory.storeJson(configFile, config); - } - - public static String scrubFileName(String input) { - input = input.replaceAll("[/\\ ]+", "_"); - input = input.replaceAll("[,:&\"\\|\\<\\>\\?\\*]", "_"); - - return input; - } - - static { - if (!MOD_CONFIG_DIR.exists()) { - MOD_CONFIG_DIR.mkdirs(); - } - } -} +package ru.betterend.config; + +import java.io.File; +import java.nio.file.Path; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + +import net.fabricmc.loader.api.FabricLoader; +import ru.betterend.BetterEnd; +import ru.betterend.util.JsonFactory; + +public class ConfigWriter { + + private final static Path GAME_CONFIG_DIR = FabricLoader.getInstance().getConfigDir(); + public final static File MOD_CONFIG_DIR = new File(GAME_CONFIG_DIR.toFile(), BetterEnd.MOD_ID); + private final static File MAIN_CONFIG_FILE = new File(MOD_CONFIG_DIR, "settings.json"); + + private static JsonObject mainConfig; + + private JsonObject configObject; + private File configFile; + + public JsonObject getConfig() { + return configObject; + } + + public JsonObject loadConfig(File configFile) { + this.configFile = configFile; + if (configObject == null) { + configObject = load(configFile); + } + + return configObject; + } + + public void saveConfig() { + if (configFile == null || configObject == null) { + return; + } + save(configFile, configObject); + } + + public static JsonObject load() { + if (mainConfig == null) { + mainConfig = load(MAIN_CONFIG_FILE); + } + return mainConfig; + } + + public static JsonObject load(File configFile) { + return JsonFactory.getJsonObject(configFile); + } + + public static void save() { + save(MAIN_CONFIG_FILE, mainConfig); + } + + public static void save(JsonElement config) { + save(MAIN_CONFIG_FILE, config); + } + + public static void save(File configFile, JsonElement config) { + JsonFactory.storeJson(configFile, config); + } + + public static String scrubFileName(String input) { + input = input.replaceAll("[/\\ ]+", "_"); + input = input.replaceAll("[,:&\"\\|\\<\\>\\?\\*]", "_"); + + return input; + } + + static { + if (!MOD_CONFIG_DIR.exists()) { + MOD_CONFIG_DIR.mkdirs(); + } + } +} diff --git a/src/main/java/ru/betterend/config/MainConfig.java b/src/main/java/ru/betterend/config/MainConfig.java index 9f8b8e8a..ab8c9260 100644 --- a/src/main/java/ru/betterend/config/MainConfig.java +++ b/src/main/java/ru/betterend/config/MainConfig.java @@ -1,34 +1,34 @@ -package ru.betterend.config; - -import com.google.gson.JsonObject; - -public class MainConfig extends Config { - - private static MainConfig instance; - - public static MainConfig getInstance() { - if (instance == null) { - instance = new MainConfig(); - } - - return instance; - } - - private MainConfig() { - //TODO: Need to register config params in the Keeper - - JsonObject config = ConfigWriter.load(); - if (config.size() > 0) { - this.configKeeper.fromJson(config); - } else { - this.configKeeper.toJson(config); - ConfigWriter.save(); - } - } - - @Override - public void saveChanges() { - this.configKeeper.toJson(ConfigWriter.load()); - ConfigWriter.save(); - } -} +package ru.betterend.config; + +import com.google.gson.JsonObject; + +public class MainConfig extends Config { + + private static MainConfig instance; + + public static MainConfig getInstance() { + if (instance == null) { + instance = new MainConfig(); + } + + return instance; + } + + private MainConfig() { + //TODO: Need to register config params in the Keeper + + JsonObject config = ConfigWriter.load(); + if (config.size() > 0) { + this.configKeeper.fromJson(config); + } else { + this.configKeeper.toJson(config); + ConfigWriter.save(); + } + } + + @Override + public void saveChanges() { + this.configKeeper.toJson(ConfigWriter.load()); + ConfigWriter.save(); + } +} diff --git a/src/main/java/ru/betterend/effects/EndEnchantments.java b/src/main/java/ru/betterend/effects/EndEnchantments.java index f59e545d..08474c88 100644 --- a/src/main/java/ru/betterend/effects/EndEnchantments.java +++ b/src/main/java/ru/betterend/effects/EndEnchantments.java @@ -1,16 +1,16 @@ -package ru.betterend.effects; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.util.registry.Registry; -import ru.betterend.BetterEnd; -import ru.betterend.effects.enchantment.EndVeilEnchantment; - -public class EndEnchantments { - public final static Enchantment END_VEIL = registerEnchantment("end_veil", new EndVeilEnchantment()); - - public static Enchantment registerEnchantment(String name, Enchantment enchantment) { - return Registry.register(Registry.ENCHANTMENT, BetterEnd.makeID(name), enchantment); - } - - public static void register() {} -} +package ru.betterend.effects; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.util.registry.Registry; +import ru.betterend.BetterEnd; +import ru.betterend.effects.enchantment.EndVeilEnchantment; + +public class EndEnchantments { + public final static Enchantment END_VEIL = registerEnchantment("end_veil", new EndVeilEnchantment()); + + public static Enchantment registerEnchantment(String name, Enchantment enchantment) { + return Registry.register(Registry.ENCHANTMENT, BetterEnd.makeID(name), enchantment); + } + + public static void register() {} +} diff --git a/src/main/java/ru/betterend/effects/EndStatusEffects.java b/src/main/java/ru/betterend/effects/EndStatusEffects.java index db3e701d..50e049ff 100644 --- a/src/main/java/ru/betterend/effects/EndStatusEffects.java +++ b/src/main/java/ru/betterend/effects/EndStatusEffects.java @@ -1,15 +1,15 @@ -package ru.betterend.effects; - -import net.minecraft.entity.effect.StatusEffect; -import net.minecraft.util.registry.Registry; -import ru.betterend.BetterEnd; -import ru.betterend.effects.status.EndVeilEffect; - -public class EndStatusEffects { - - public final static StatusEffect END_VEIL = registerEffect("end_veil", new EndVeilEffect()); - - public static StatusEffect registerEffect(String name, E effect) { - return Registry.register(Registry.STATUS_EFFECT, BetterEnd.makeID(name), effect); - } -} +package ru.betterend.effects; + +import net.minecraft.entity.effect.StatusEffect; +import net.minecraft.util.registry.Registry; +import ru.betterend.BetterEnd; +import ru.betterend.effects.status.EndVeilEffect; + +public class EndStatusEffects { + + public final static StatusEffect END_VEIL = registerEffect("end_veil", new EndVeilEffect()); + + public static StatusEffect registerEffect(String name, E effect) { + return Registry.register(Registry.STATUS_EFFECT, BetterEnd.makeID(name), effect); + } +} diff --git a/src/main/java/ru/betterend/effects/enchantment/EndVeilEnchantment.java b/src/main/java/ru/betterend/effects/enchantment/EndVeilEnchantment.java index ecda6750..bdf29bb4 100644 --- a/src/main/java/ru/betterend/effects/enchantment/EndVeilEnchantment.java +++ b/src/main/java/ru/betterend/effects/enchantment/EndVeilEnchantment.java @@ -1,17 +1,17 @@ -package ru.betterend.effects.enchantment; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentTarget; -import net.minecraft.entity.EquipmentSlot; - -public class EndVeilEnchantment extends Enchantment { - - public EndVeilEnchantment() { - super(Enchantment.Rarity.VERY_RARE, EnchantmentTarget.ARMOR_HEAD, new EquipmentSlot[] { EquipmentSlot.HEAD }); - } - - @Override - public boolean isAvailableForRandomSelection() { - return false; - } -} +package ru.betterend.effects.enchantment; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentTarget; +import net.minecraft.entity.EquipmentSlot; + +public class EndVeilEnchantment extends Enchantment { + + public EndVeilEnchantment() { + super(Enchantment.Rarity.VERY_RARE, EnchantmentTarget.ARMOR_HEAD, new EquipmentSlot[] { EquipmentSlot.HEAD }); + } + + @Override + public boolean isAvailableForRandomSelection() { + return false; + } +} diff --git a/src/main/java/ru/betterend/effects/status/EndVeilEffect.java b/src/main/java/ru/betterend/effects/status/EndVeilEffect.java index b4e1489d..98e2d8ee 100644 --- a/src/main/java/ru/betterend/effects/status/EndVeilEffect.java +++ b/src/main/java/ru/betterend/effects/status/EndVeilEffect.java @@ -1,16 +1,16 @@ -package ru.betterend.effects.status; - -import net.minecraft.entity.effect.StatusEffect; -import net.minecraft.entity.effect.StatusEffectType; - -public class EndVeilEffect extends StatusEffect { - - public EndVeilEffect() { - super(StatusEffectType.BENEFICIAL, 0x0D554A); - } - - @Override - public boolean canApplyUpdateEffect(int duration, int amplifier) { - return false; - } -} +package ru.betterend.effects.status; + +import net.minecraft.entity.effect.StatusEffect; +import net.minecraft.entity.effect.StatusEffectType; + +public class EndVeilEffect extends StatusEffect { + + public EndVeilEffect() { + super(StatusEffectType.BENEFICIAL, 0x0D554A); + } + + @Override + public boolean canApplyUpdateEffect(int duration, int amplifier) { + return false; + } +} diff --git a/src/main/java/ru/betterend/entity/EntityShadowWalker.java b/src/main/java/ru/betterend/entity/EntityShadowWalker.java new file mode 100644 index 00000000..38a41e50 --- /dev/null +++ b/src/main/java/ru/betterend/entity/EntityShadowWalker.java @@ -0,0 +1,139 @@ +package ru.betterend.entity; + +import net.minecraft.block.BlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.ai.goal.FollowTargetGoal; +import net.minecraft.entity.ai.goal.LookAroundGoal; +import net.minecraft.entity.ai.goal.LookAtEntityGoal; +import net.minecraft.entity.ai.goal.MeleeAttackGoal; +import net.minecraft.entity.ai.goal.WanderAroundFarGoal; +import net.minecraft.entity.attribute.DefaultAttributeContainer; +import net.minecraft.entity.attribute.EntityAttributes; +import net.minecraft.entity.damage.DamageSource; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.entity.mob.HostileEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.sound.SoundEvent; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import ru.betterend.registry.EndSounds; +import ru.betterend.util.MHelper; + +public class EntityShadowWalker extends HostileEntity { + public EntityShadowWalker(EntityType entityType, World world) { + super(entityType, world); + } + + @Override + protected void initGoals() { + this.goalSelector.add(2, new AttackGoal(this, 1.0D, false)); + this.goalSelector.add(7, new WanderAroundFarGoal(this, 1.0D)); + this.goalSelector.add(8, new LookAtEntityGoal(this, PlayerEntity.class, 8.0F)); + this.goalSelector.add(8, new LookAroundGoal(this)); + this.targetSelector.add(2, new FollowTargetGoal(this, PlayerEntity.class, true)); + } + + public static DefaultAttributeContainer.Builder createMobAttributes() { + return HostileEntity.createHostileAttributes() + .add(EntityAttributes.GENERIC_FOLLOW_RANGE, 35.0) + .add(EntityAttributes.GENERIC_MOVEMENT_SPEED, 0.15) + .add(EntityAttributes.GENERIC_ATTACK_DAMAGE, 4.5) + .add(EntityAttributes.GENERIC_ARMOR, 2.0) + .add(EntityAttributes.ZOMBIE_SPAWN_REINFORCEMENTS); + } + + @Override + public void tick() { + super.tick(); + world.addParticle(ParticleTypes.ASH, + getX() + random.nextGaussian() * 0.2, + getY() + random.nextGaussian() * 0.5 + 1, + getZ() + random.nextGaussian() * 0.2, + 0, 0, 0); + world.addParticle(ParticleTypes.SMOKE, + getX() + random.nextGaussian() * 0.2, + getY() + random.nextGaussian() * 0.5 + 1, + getZ() + random.nextGaussian() * 0.2, + 0, 0, 0); + world.addParticle(ParticleTypes.ENTITY_EFFECT, + getX() + random.nextGaussian() * 0.2, + getY() + random.nextGaussian() * 0.5 + 1, + getZ() + random.nextGaussian() * 0.2, + 0, 0, 0); + } + + @Override + protected SoundEvent getAmbientSound() { + return EndSounds.ENTITY_SHADOW_WALKER; + } + + @Override + protected SoundEvent getHurtSound(DamageSource source) { + return EndSounds.ENTITY_SHADOW_WALKER_DAMAGE; + } + + @Override + protected SoundEvent getDeathSound() { + return EndSounds.ENTITY_SHADOW_WALKER_DEATH; + } + + @Override + protected void playStepSound(BlockPos pos, BlockState state) {} + + @Override + protected float getSoundVolume() { + return MHelper.randRange(0.4F, 0.6F, random); + } + + @Override + protected float getSoundPitch() { + return MHelper.randRange(0.75F, 1.25F, random); + } + + @Override + public boolean tryAttack(Entity target) { + boolean attack = super.tryAttack(target); + if (attack && target instanceof LivingEntity) { + LivingEntity living = (LivingEntity) target; + if (!(living.hasStatusEffect(StatusEffects.BLINDNESS))) { + living.addStatusEffect(new StatusEffectInstance(StatusEffects.BLINDNESS, 60)); + } + } + return attack; + } + + private final class AttackGoal extends MeleeAttackGoal { + private final EntityShadowWalker walker; + private int ticks; + + public AttackGoal(EntityShadowWalker walker, double speed, boolean pauseWhenMobIdle) { + super(walker, speed, pauseWhenMobIdle); + this.walker = walker; + } + + public void start() { + super.start(); + this.ticks = 0; + } + + public void stop() { + super.stop(); + this.walker.setAttacking(false); + } + + public void tick() { + super.tick(); + ++this.ticks; + if (this.ticks >= 5 && this.method_28348() < this.method_28349() / 2) { + this.walker.setAttacking(true); + } + else { + this.walker.setAttacking(false); + } + } + } +} diff --git a/src/main/java/ru/betterend/entity/render/RendererEntityShadowWalker.java b/src/main/java/ru/betterend/entity/render/RendererEntityShadowWalker.java new file mode 100644 index 00000000..6e3b8291 --- /dev/null +++ b/src/main/java/ru/betterend/entity/render/RendererEntityShadowWalker.java @@ -0,0 +1,21 @@ +package ru.betterend.entity.render; + +import net.minecraft.client.render.entity.BipedEntityRenderer; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.model.PlayerEntityModel; +import net.minecraft.util.Identifier; +import ru.betterend.BetterEnd; +import ru.betterend.entity.EntityShadowWalker; + +public class RendererEntityShadowWalker extends BipedEntityRenderer> { + private static final Identifier TEXTURE = BetterEnd.makeID("textures/entity/shadow_walker.png"); + + public RendererEntityShadowWalker(EntityRenderDispatcher entityRenderDispatcher) { + super(entityRenderDispatcher, new PlayerEntityModel(0.0F, false), 0.5F); + } + + @Override + public Identifier getTexture(EntityShadowWalker zombieEntity) { + return TEXTURE; + } +} diff --git a/src/main/java/ru/betterend/interfaces/CompoundSerializer.java b/src/main/java/ru/betterend/interfaces/CompoundSerializer.java index a441ddc1..8fd82c18 100644 --- a/src/main/java/ru/betterend/interfaces/CompoundSerializer.java +++ b/src/main/java/ru/betterend/interfaces/CompoundSerializer.java @@ -1,8 +1,8 @@ -package ru.betterend.interfaces; - -import net.minecraft.nbt.CompoundTag; - -public interface CompoundSerializer { - public abstract CompoundTag toTag(CompoundTag tag); - public abstract T fromTag(CompoundTag tag); -} +package ru.betterend.interfaces; + +import net.minecraft.nbt.CompoundTag; + +public interface CompoundSerializer { + public abstract CompoundTag toTag(CompoundTag tag); + public abstract T fromTag(CompoundTag tag); +} diff --git a/src/main/java/ru/betterend/interfaces/IColorProvider.java b/src/main/java/ru/betterend/interfaces/IColorProvider.java index fb0a2101..ae6d0db5 100644 --- a/src/main/java/ru/betterend/interfaces/IColorProvider.java +++ b/src/main/java/ru/betterend/interfaces/IColorProvider.java @@ -1,10 +1,10 @@ -package ru.betterend.interfaces; - -import net.minecraft.client.color.block.BlockColorProvider; -import net.minecraft.client.color.item.ItemColorProvider; - -public interface IColorProvider { - BlockColorProvider getProvider(); - - ItemColorProvider getItemProvider(); -} +package ru.betterend.interfaces; + +import net.minecraft.client.color.block.BlockColorProvider; +import net.minecraft.client.color.item.ItemColorProvider; + +public interface IColorProvider { + BlockColorProvider getProvider(); + + ItemColorProvider getItemProvider(); +} diff --git a/src/main/java/ru/betterend/interfaces/IRenderTypeable.java b/src/main/java/ru/betterend/interfaces/IRenderTypeable.java index fb81963c..1a5c029c 100644 --- a/src/main/java/ru/betterend/interfaces/IRenderTypeable.java +++ b/src/main/java/ru/betterend/interfaces/IRenderTypeable.java @@ -1,8 +1,8 @@ -package ru.betterend.interfaces; - -import ru.betterend.client.render.ERenderLayer; - -public interface IRenderTypeable -{ - public ERenderLayer getRenderLayer(); -} +package ru.betterend.interfaces; + +import ru.betterend.client.render.ERenderLayer; + +public interface IRenderTypeable +{ + public ERenderLayer getRenderLayer(); +} diff --git a/src/main/java/ru/betterend/interfaces/ISlime.java b/src/main/java/ru/betterend/interfaces/ISlime.java index 1ecacda2..646490c8 100644 --- a/src/main/java/ru/betterend/interfaces/ISlime.java +++ b/src/main/java/ru/betterend/interfaces/ISlime.java @@ -1,5 +1,5 @@ -package ru.betterend.interfaces; - -public interface ISlime { - public void setSlimeSize(int size, boolean heal); -} +package ru.betterend.interfaces; + +public interface ISlime { + public void setSlimeSize(int size, boolean heal); +} diff --git a/src/main/java/ru/betterend/interfaces/IdentifiedContext.java b/src/main/java/ru/betterend/interfaces/IdentifiedContext.java index bc2ce453..e03bfbb6 100644 --- a/src/main/java/ru/betterend/interfaces/IdentifiedContext.java +++ b/src/main/java/ru/betterend/interfaces/IdentifiedContext.java @@ -1,12 +1,12 @@ -package ru.betterend.interfaces; - -import net.minecraft.util.Identifier; - -public interface IdentifiedContext { - public Identifier getContextId(); - public void setContextId(Identifier id); - - default void removeId() { - this.setContextId(null); - } -} +package ru.betterend.interfaces; + +import net.minecraft.util.Identifier; + +public interface IdentifiedContext { + public Identifier getContextId(); + public void setContextId(Identifier id); + + default void removeId() { + this.setContextId(null); + } +} diff --git a/src/main/java/ru/betterend/interfaces/TeleportingEntity.java b/src/main/java/ru/betterend/interfaces/TeleportingEntity.java index c46a2c6a..f91957b6 100644 --- a/src/main/java/ru/betterend/interfaces/TeleportingEntity.java +++ b/src/main/java/ru/betterend/interfaces/TeleportingEntity.java @@ -1,14 +1,14 @@ -package ru.betterend.interfaces; - -import net.minecraft.util.math.BlockPos; - -public interface TeleportingEntity { - public abstract long beGetCooldown(); - public abstract void beSetCooldown(long time); - public abstract void beSetExitPos(BlockPos pos); - public abstract BlockPos beGetExitPos(); - - default boolean hasCooldown() { - return this.beGetCooldown() > 0; - } -} +package ru.betterend.interfaces; + +import net.minecraft.util.math.BlockPos; + +public interface TeleportingEntity { + public abstract long beGetCooldown(); + public abstract void beSetCooldown(long time); + public abstract void beSetExitPos(BlockPos pos); + public abstract BlockPos beGetExitPos(); + + default boolean hasCooldown() { + return this.beGetCooldown() > 0; + } +} diff --git a/src/main/java/ru/betterend/item/EndAxe.java b/src/main/java/ru/betterend/item/EndAxe.java index 3379eea2..cfc36b61 100644 --- a/src/main/java/ru/betterend/item/EndAxe.java +++ b/src/main/java/ru/betterend/item/EndAxe.java @@ -1,26 +1,26 @@ -package ru.betterend.item; - -import net.fabricmc.fabric.api.tool.attribute.v1.DynamicAttributeTool; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.block.BlockState; -import net.minecraft.entity.LivingEntity; -import net.minecraft.item.AxeItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ToolMaterial; -import net.minecraft.tag.Tag; - -public class EndAxe extends AxeItem implements DynamicAttributeTool { - - public EndAxe(ToolMaterial material, float attackDamage, float attackSpeed, Settings settings) { - super(material, attackDamage, attackSpeed, settings); - } - - @Override - public int getMiningLevel(Tag tag, BlockState state, ItemStack stack, LivingEntity user) { - if (tag.equals(FabricToolTags.AXES)) { - return this.getMaterial().getMiningLevel(); - } - return 0; - } -} +package ru.betterend.item; + +import net.fabricmc.fabric.api.tool.attribute.v1.DynamicAttributeTool; +import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; +import net.minecraft.block.BlockState; +import net.minecraft.entity.LivingEntity; +import net.minecraft.item.AxeItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ToolMaterial; +import net.minecraft.tag.Tag; + +public class EndAxe extends AxeItem implements DynamicAttributeTool { + + public EndAxe(ToolMaterial material, float attackDamage, float attackSpeed, Settings settings) { + super(material, attackDamage, attackSpeed, settings); + } + + @Override + public int getMiningLevel(Tag tag, BlockState state, ItemStack stack, LivingEntity user) { + if (tag.equals(FabricToolTags.AXES)) { + return this.getMaterial().getMiningLevel(); + } + return 0; + } +} diff --git a/src/main/java/ru/betterend/item/EndHammer.java b/src/main/java/ru/betterend/item/EndHammer.java index 1cb71c5f..077ff219 100644 --- a/src/main/java/ru/betterend/item/EndHammer.java +++ b/src/main/java/ru/betterend/item/EndHammer.java @@ -1,135 +1,135 @@ -package ru.betterend.item; - -import java.util.UUID; - -import com.google.common.collect.ImmutableMultimap; -import com.google.common.collect.ImmutableMultimap.Builder; -import com.google.common.collect.Multimap; -import com.google.common.collect.Sets; - -import io.netty.util.internal.ThreadLocalRandom; -import net.fabricmc.fabric.api.tool.attribute.v1.DynamicAttributeTool; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.Material; -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.attribute.EntityAttribute; -import net.minecraft.entity.attribute.EntityAttributeModifier; -import net.minecraft.entity.attribute.EntityAttributes; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.MiningToolItem; -import net.minecraft.item.ToolMaterial; -import net.minecraft.tag.Tag; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.World; -import ru.betterend.registry.EndTags; - -public class EndHammer extends MiningToolItem implements DynamicAttributeTool { - - public final static UUID ATTACK_KNOCKBACK_MODIFIER_ID = MathHelper.randomUuid(ThreadLocalRandom.current()); - - private final Multimap attributeModifiers; - - public EndHammer(ToolMaterial material, float attackDamage, float attackSpeed, double knockback, Settings settings) { - super(attackDamage, attackSpeed, material, Sets.newHashSet(), settings); - - Builder builder = ImmutableMultimap.builder(); - builder.put(EntityAttributes.GENERIC_ATTACK_DAMAGE, new EntityAttributeModifier(ATTACK_DAMAGE_MODIFIER_ID, "Weapon modifier", attackDamage + material.getAttackDamage(), EntityAttributeModifier.Operation.ADDITION)); - builder.put(EntityAttributes.GENERIC_ATTACK_SPEED, new EntityAttributeModifier(ATTACK_SPEED_MODIFIER_ID, "Weapon modifier", attackSpeed, EntityAttributeModifier.Operation.ADDITION)); - builder.put(EntityAttributes.GENERIC_ATTACK_KNOCKBACK, new EntityAttributeModifier(ATTACK_KNOCKBACK_MODIFIER_ID, "Weapon modifier", knockback, EntityAttributeModifier.Operation.ADDITION)); - this.attributeModifiers = builder.build(); - } - - @Override - public boolean canMine(BlockState state, World world, BlockPos pos, PlayerEntity miner) { - return state.getMaterial().equals(Material.STONE) || - state.getMaterial().equals(Material.GLASS) || - state.isOf(Blocks.DIAMOND_BLOCK) || - state.isOf(Blocks.EMERALD_BLOCK) || - state.isOf(Blocks.LAPIS_BLOCK) || - state.isOf(Blocks.REDSTONE_BLOCK); - } - - @Override - public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { - stack.damage(1, attacker, ((entity) -> { - entity.sendEquipmentBreakStatus(EquipmentSlot.MAINHAND); - })); - - return true; - } - - @Override - public boolean postMine(ItemStack stack, World world, BlockState state, BlockPos pos, LivingEntity miner) { - if (state.getHardness(world, pos) != 0.0F) { - stack.damage(1, miner, ((entity) -> { - entity.sendEquipmentBreakStatus(EquipmentSlot.MAINHAND); - })); - } - - return true; - } - - @Override - public float getMiningSpeedMultiplier(ItemStack stack, BlockState state) { - if (state.getMaterial().equals(Material.GLASS)) { - return this.getMaterial().getMiningSpeedMultiplier() * 2.0F; - } - if (isEffectiveOn(state)) { - float mult = 1.0F; - if (state.isOf(Blocks.DIAMOND_BLOCK) || state.isOf(Blocks.EMERALD_BLOCK) || state.isOf(Blocks.LAPIS_BLOCK) || state.isOf(Blocks.REDSTONE_BLOCK)) { - mult = this.getMaterial().getMiningSpeedMultiplier(); - } else { - mult = this.getMaterial().getMiningSpeedMultiplier() / 2.0F; - } - return mult > 1.0F ? mult : 1.0F; - } - return 1.0F; - } - - @Override - public float getMiningSpeedMultiplier(Tag tag, BlockState state, ItemStack stack, LivingEntity user) { - if (tag.equals(EndTags.HAMMERS)) { - return this.getMiningSpeedMultiplier(stack, state); - } - return 1.0F; - } - - @Override - public int getMiningLevel(Tag tag, BlockState state, ItemStack stack, LivingEntity user) { - if (tag.equals(EndTags.HAMMERS)) { - return this.getMaterial().getMiningLevel(); - } - return 0; - } - - @Override - public boolean isEffectiveOn(BlockState state) { - if (state.getMaterial().equals(Material.GLASS)) { - return true; - } - if (!state.isOf(Blocks.REDSTONE_BLOCK) && !state.isOf(Blocks.DIAMOND_BLOCK) && !state.isOf(Blocks.EMERALD_BLOCK) && !state.isOf(Blocks.LAPIS_BLOCK) && !state.getMaterial().equals(Material.STONE)) { - return false; - } - int level = this.getMaterial().getMiningLevel(); - if (state.isOf(Blocks.IRON_ORE) || state.isOf(Blocks.LAPIS_BLOCK) || state.isOf(Blocks.LAPIS_ORE)) { - return level >= 1; - } - if (state.isOf(Blocks.DIAMOND_BLOCK) && !state.isOf(Blocks.DIAMOND_ORE) || state.isOf(Blocks.EMERALD_ORE) || state.isOf(Blocks.EMERALD_BLOCK) || state.isOf(Blocks.GOLD_ORE) || state.isOf(Blocks.REDSTONE_ORE)) { - return level >= 2; - } - if (state.isOf(Blocks.OBSIDIAN) || state.isOf(Blocks.CRYING_OBSIDIAN) || state.isOf(Blocks.RESPAWN_ANCHOR) || state.isOf(Blocks.ANCIENT_DEBRIS)) { - return level >= 3; - } - return true; - } - - @Override - public Multimap getAttributeModifiers(EquipmentSlot slot) { - return slot == EquipmentSlot.MAINHAND ? this.attributeModifiers : super.getAttributeModifiers(slot); - } -} +package ru.betterend.item; + +import java.util.UUID; + +import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.ImmutableMultimap.Builder; +import com.google.common.collect.Multimap; +import com.google.common.collect.Sets; + +import io.netty.util.internal.ThreadLocalRandom; +import net.fabricmc.fabric.api.tool.attribute.v1.DynamicAttributeTool; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.block.Material; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.attribute.EntityAttribute; +import net.minecraft.entity.attribute.EntityAttributeModifier; +import net.minecraft.entity.attribute.EntityAttributes; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.MiningToolItem; +import net.minecraft.item.ToolMaterial; +import net.minecraft.tag.Tag; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.World; +import ru.betterend.registry.EndTags; + +public class EndHammer extends MiningToolItem implements DynamicAttributeTool { + + public final static UUID ATTACK_KNOCKBACK_MODIFIER_ID = MathHelper.randomUuid(ThreadLocalRandom.current()); + + private final Multimap attributeModifiers; + + public EndHammer(ToolMaterial material, float attackDamage, float attackSpeed, double knockback, Settings settings) { + super(attackDamage, attackSpeed, material, Sets.newHashSet(), settings); + + Builder builder = ImmutableMultimap.builder(); + builder.put(EntityAttributes.GENERIC_ATTACK_DAMAGE, new EntityAttributeModifier(ATTACK_DAMAGE_MODIFIER_ID, "Weapon modifier", attackDamage + material.getAttackDamage(), EntityAttributeModifier.Operation.ADDITION)); + builder.put(EntityAttributes.GENERIC_ATTACK_SPEED, new EntityAttributeModifier(ATTACK_SPEED_MODIFIER_ID, "Weapon modifier", attackSpeed, EntityAttributeModifier.Operation.ADDITION)); + builder.put(EntityAttributes.GENERIC_ATTACK_KNOCKBACK, new EntityAttributeModifier(ATTACK_KNOCKBACK_MODIFIER_ID, "Weapon modifier", knockback, EntityAttributeModifier.Operation.ADDITION)); + this.attributeModifiers = builder.build(); + } + + @Override + public boolean canMine(BlockState state, World world, BlockPos pos, PlayerEntity miner) { + return state.getMaterial().equals(Material.STONE) || + state.getMaterial().equals(Material.GLASS) || + state.isOf(Blocks.DIAMOND_BLOCK) || + state.isOf(Blocks.EMERALD_BLOCK) || + state.isOf(Blocks.LAPIS_BLOCK) || + state.isOf(Blocks.REDSTONE_BLOCK); + } + + @Override + public boolean postHit(ItemStack stack, LivingEntity target, LivingEntity attacker) { + stack.damage(1, attacker, ((entity) -> { + entity.sendEquipmentBreakStatus(EquipmentSlot.MAINHAND); + })); + + return true; + } + + @Override + public boolean postMine(ItemStack stack, World world, BlockState state, BlockPos pos, LivingEntity miner) { + if (state.getHardness(world, pos) != 0.0F) { + stack.damage(1, miner, ((entity) -> { + entity.sendEquipmentBreakStatus(EquipmentSlot.MAINHAND); + })); + } + + return true; + } + + @Override + public float getMiningSpeedMultiplier(ItemStack stack, BlockState state) { + if (state.getMaterial().equals(Material.GLASS)) { + return this.getMaterial().getMiningSpeedMultiplier() * 2.0F; + } + if (isEffectiveOn(state)) { + float mult = 1.0F; + if (state.isOf(Blocks.DIAMOND_BLOCK) || state.isOf(Blocks.EMERALD_BLOCK) || state.isOf(Blocks.LAPIS_BLOCK) || state.isOf(Blocks.REDSTONE_BLOCK)) { + mult = this.getMaterial().getMiningSpeedMultiplier(); + } else { + mult = this.getMaterial().getMiningSpeedMultiplier() / 2.0F; + } + return mult > 1.0F ? mult : 1.0F; + } + return 1.0F; + } + + @Override + public float getMiningSpeedMultiplier(Tag tag, BlockState state, ItemStack stack, LivingEntity user) { + if (tag.equals(EndTags.HAMMERS)) { + return this.getMiningSpeedMultiplier(stack, state); + } + return 1.0F; + } + + @Override + public int getMiningLevel(Tag tag, BlockState state, ItemStack stack, LivingEntity user) { + if (tag.equals(EndTags.HAMMERS)) { + return this.getMaterial().getMiningLevel(); + } + return 0; + } + + @Override + public boolean isEffectiveOn(BlockState state) { + if (state.getMaterial().equals(Material.GLASS)) { + return true; + } + if (!state.isOf(Blocks.REDSTONE_BLOCK) && !state.isOf(Blocks.DIAMOND_BLOCK) && !state.isOf(Blocks.EMERALD_BLOCK) && !state.isOf(Blocks.LAPIS_BLOCK) && !state.getMaterial().equals(Material.STONE)) { + return false; + } + int level = this.getMaterial().getMiningLevel(); + if (state.isOf(Blocks.IRON_ORE) || state.isOf(Blocks.LAPIS_BLOCK) || state.isOf(Blocks.LAPIS_ORE)) { + return level >= 1; + } + if (state.isOf(Blocks.DIAMOND_BLOCK) && !state.isOf(Blocks.DIAMOND_ORE) || state.isOf(Blocks.EMERALD_ORE) || state.isOf(Blocks.EMERALD_BLOCK) || state.isOf(Blocks.GOLD_ORE) || state.isOf(Blocks.REDSTONE_ORE)) { + return level >= 2; + } + if (state.isOf(Blocks.OBSIDIAN) || state.isOf(Blocks.CRYING_OBSIDIAN) || state.isOf(Blocks.RESPAWN_ANCHOR) || state.isOf(Blocks.ANCIENT_DEBRIS)) { + return level >= 3; + } + return true; + } + + @Override + public Multimap getAttributeModifiers(EquipmentSlot slot) { + return slot == EquipmentSlot.MAINHAND ? this.attributeModifiers : super.getAttributeModifiers(slot); + } +} diff --git a/src/main/java/ru/betterend/item/EndHoe.java b/src/main/java/ru/betterend/item/EndHoe.java index 78bc3993..6497503f 100644 --- a/src/main/java/ru/betterend/item/EndHoe.java +++ b/src/main/java/ru/betterend/item/EndHoe.java @@ -1,11 +1,11 @@ -package ru.betterend.item; - -import net.minecraft.item.HoeItem; -import net.minecraft.item.ToolMaterial; - -public class EndHoe extends HoeItem { - - public EndHoe(ToolMaterial material, int attackDamage, float attackSpeed, Settings settings) { - super(material, attackDamage, attackSpeed, settings); - } -} +package ru.betterend.item; + +import net.minecraft.item.HoeItem; +import net.minecraft.item.ToolMaterial; + +public class EndHoe extends HoeItem { + + public EndHoe(ToolMaterial material, int attackDamage, float attackSpeed, Settings settings) { + super(material, attackDamage, attackSpeed, settings); + } +} diff --git a/src/main/java/ru/betterend/item/EndPickaxe.java b/src/main/java/ru/betterend/item/EndPickaxe.java index 0d3db593..27cebcd7 100644 --- a/src/main/java/ru/betterend/item/EndPickaxe.java +++ b/src/main/java/ru/betterend/item/EndPickaxe.java @@ -1,26 +1,26 @@ -package ru.betterend.item; - -import net.fabricmc.fabric.api.tool.attribute.v1.DynamicAttributeTool; -import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.block.BlockState; -import net.minecraft.entity.LivingEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.PickaxeItem; -import net.minecraft.item.ToolMaterial; -import net.minecraft.tag.Tag; - -public class EndPickaxe extends PickaxeItem implements DynamicAttributeTool { - - public EndPickaxe(ToolMaterial material, int attackDamage, float attackSpeed, Settings settings) { - super(material, attackDamage, attackSpeed, settings); - } - - @Override - public int getMiningLevel(Tag tag, BlockState state, ItemStack stack, LivingEntity user) { - if (tag.equals(FabricToolTags.PICKAXES)) { - return this.getMaterial().getMiningLevel(); - } - return 0; - } -} +package ru.betterend.item; + +import net.fabricmc.fabric.api.tool.attribute.v1.DynamicAttributeTool; +import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; +import net.minecraft.block.BlockState; +import net.minecraft.entity.LivingEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.PickaxeItem; +import net.minecraft.item.ToolMaterial; +import net.minecraft.tag.Tag; + +public class EndPickaxe extends PickaxeItem implements DynamicAttributeTool { + + public EndPickaxe(ToolMaterial material, int attackDamage, float attackSpeed, Settings settings) { + super(material, attackDamage, attackSpeed, settings); + } + + @Override + public int getMiningLevel(Tag tag, BlockState state, ItemStack stack, LivingEntity user) { + if (tag.equals(FabricToolTags.PICKAXES)) { + return this.getMaterial().getMiningLevel(); + } + return 0; + } +} diff --git a/src/main/java/ru/betterend/item/EternalCrystal.java b/src/main/java/ru/betterend/item/EternalCrystal.java index 29e2974e..acf3b7ff 100644 --- a/src/main/java/ru/betterend/item/EternalCrystal.java +++ b/src/main/java/ru/betterend/item/EternalCrystal.java @@ -1,11 +1,11 @@ -package ru.betterend.item; - -import net.minecraft.item.Item; -import ru.betterend.registry.EndItems; - -public class EternalCrystal extends Item { - - public EternalCrystal() { - super(EndItems.makeSettings()); - } +package ru.betterend.item; + +import net.minecraft.item.Item; +import ru.betterend.registry.EndItems; + +public class EternalCrystal extends Item { + + public EternalCrystal() { + super(EndItems.makeSettings()); + } } \ No newline at end of file diff --git a/src/main/java/ru/betterend/mixin/client/ClientRecipeBookMixin.java b/src/main/java/ru/betterend/mixin/client/ClientRecipeBookMixin.java index 1bae0e59..1ef0fa79 100644 --- a/src/main/java/ru/betterend/mixin/client/ClientRecipeBookMixin.java +++ b/src/main/java/ru/betterend/mixin/client/ClientRecipeBookMixin.java @@ -1,22 +1,22 @@ -package ru.betterend.mixin.client; - -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 net.minecraft.client.recipebook.ClientRecipeBook; -import net.minecraft.client.recipebook.RecipeBookGroup; -import net.minecraft.recipe.Recipe; -import ru.betterend.recipe.builders.AlloyingRecipe; - -@Mixin(ClientRecipeBook.class) -public abstract class ClientRecipeBookMixin { - @Inject(method = "getGroupForRecipe", at = @At("HEAD"), cancellable = true) - private static void getGroupForRecipe(Recipe recipe, CallbackInfoReturnable cinfo) { - if (recipe instanceof AlloyingRecipe) { - cinfo.setReturnValue(RecipeBookGroup.BLAST_FURNACE_MISC); - cinfo.cancel(); - } - } -} +package ru.betterend.mixin.client; + +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 net.minecraft.client.recipebook.ClientRecipeBook; +import net.minecraft.client.recipebook.RecipeBookGroup; +import net.minecraft.recipe.Recipe; +import ru.betterend.recipe.builders.AlloyingRecipe; + +@Mixin(ClientRecipeBook.class) +public abstract class ClientRecipeBookMixin { + @Inject(method = "getGroupForRecipe", at = @At("HEAD"), cancellable = true) + private static void getGroupForRecipe(Recipe recipe, CallbackInfoReturnable cinfo) { + if (recipe instanceof AlloyingRecipe) { + cinfo.setReturnValue(RecipeBookGroup.BLAST_FURNACE_MISC); + cinfo.cancel(); + } + } +} diff --git a/src/main/java/ru/betterend/mixin/client/DeserializationContextMixin.java b/src/main/java/ru/betterend/mixin/client/DeserializationContextMixin.java index 35adb265..0852e1e2 100644 --- a/src/main/java/ru/betterend/mixin/client/DeserializationContextMixin.java +++ b/src/main/java/ru/betterend/mixin/client/DeserializationContextMixin.java @@ -1,23 +1,23 @@ -package ru.betterend.mixin.client; - -import org.spongepowered.asm.mixin.Mixin; - -import net.minecraft.client.render.model.json.ModelVariantMap.DeserializationContext; -import net.minecraft.util.Identifier; -import ru.betterend.interfaces.IdentifiedContext; - -@Mixin(DeserializationContext.class) -public class DeserializationContextMixin implements IdentifiedContext { - - private Identifier contextId; - - @Override - public Identifier getContextId() { - return this.contextId; - } - - @Override - public void setContextId(Identifier id) { - this.contextId = id; - } -} +package ru.betterend.mixin.client; + +import org.spongepowered.asm.mixin.Mixin; + +import net.minecraft.client.render.model.json.ModelVariantMap.DeserializationContext; +import net.minecraft.util.Identifier; +import ru.betterend.interfaces.IdentifiedContext; + +@Mixin(DeserializationContext.class) +public class DeserializationContextMixin implements IdentifiedContext { + + private Identifier contextId; + + @Override + public Identifier getContextId() { + return this.contextId; + } + + @Override + public void setContextId(Identifier id) { + this.contextId = id; + } +} diff --git a/src/main/java/ru/betterend/mixin/client/NamespaceResourceManagerMixin.java b/src/main/java/ru/betterend/mixin/client/NamespaceResourceManagerMixin.java index 214f6ffa..bdafb3bd 100644 --- a/src/main/java/ru/betterend/mixin/client/NamespaceResourceManagerMixin.java +++ b/src/main/java/ru/betterend/mixin/client/NamespaceResourceManagerMixin.java @@ -1,47 +1,47 @@ -package ru.betterend.mixin.client; - -import java.util.List; - -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.At.Shift; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import com.google.common.collect.Lists; - -import net.minecraft.block.Block; -import net.minecraft.resource.NamespaceResourceManager; -import net.minecraft.resource.Resource; -import net.minecraft.util.Identifier; -import net.minecraft.util.registry.Registry; -import ru.betterend.BetterEnd; -import ru.betterend.interfaces.Patterned; - -@Mixin(NamespaceResourceManager.class) -public abstract class NamespaceResourceManagerMixin { - - @Shadow - public abstract Resource getResource(Identifier id); - - @Inject(method = "getAllResources", cancellable = true, at = @At( - value = "NEW", - target = "java/io/FileNotFoundException", - shift = Shift.BEFORE)) - public void getStatesPattern(Identifier id, CallbackInfoReturnable> info) { - if (id.getNamespace().contains(BetterEnd.MOD_ID)) { - String[] data = id.getPath().split("/"); - if (data.length > 1) { - Identifier blockId = BetterEnd.makeID(data[1].replace(".json", "")); - Block block = Registry.BLOCK.get(blockId); - if (block instanceof Patterned) { - List resources = Lists.newArrayList(); - resources.add(this.getResource(((Patterned) block).statePatternId())); - info.setReturnValue(resources); - info.cancel(); - } - } - } - } -} +package ru.betterend.mixin.client; + +import java.util.List; + +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.At.Shift; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import com.google.common.collect.Lists; + +import net.minecraft.block.Block; +import net.minecraft.resource.NamespaceResourceManager; +import net.minecraft.resource.Resource; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; +import ru.betterend.BetterEnd; +import ru.betterend.interfaces.Patterned; + +@Mixin(NamespaceResourceManager.class) +public abstract class NamespaceResourceManagerMixin { + + @Shadow + public abstract Resource getResource(Identifier id); + + @Inject(method = "getAllResources", cancellable = true, at = @At( + value = "NEW", + target = "java/io/FileNotFoundException", + shift = Shift.BEFORE)) + public void getStatesPattern(Identifier id, CallbackInfoReturnable> info) { + if (id.getNamespace().contains(BetterEnd.MOD_ID)) { + String[] data = id.getPath().split("/"); + if (data.length > 1) { + Identifier blockId = BetterEnd.makeID(data[1].replace(".json", "")); + Block block = Registry.BLOCK.get(blockId); + if (block instanceof Patterned) { + List resources = Lists.newArrayList(); + resources.add(this.getResource(((Patterned) block).statePatternId())); + info.setReturnValue(resources); + info.cancel(); + } + } + } + } +} diff --git a/src/main/java/ru/betterend/mixin/common/AbstractBlockMixin.java b/src/main/java/ru/betterend/mixin/common/AbstractBlockMixin.java index 8c0b3358..68df0c6b 100644 --- a/src/main/java/ru/betterend/mixin/common/AbstractBlockMixin.java +++ b/src/main/java/ru/betterend/mixin/common/AbstractBlockMixin.java @@ -1,51 +1,51 @@ -package ru.betterend.mixin.common; - -import java.util.List; - -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 com.google.common.collect.Lists; - -import net.minecraft.block.AbstractBlock; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.enchantment.Enchantments; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.loot.context.LootContext; -import net.minecraft.loot.context.LootContextParameters; -import net.minecraft.util.math.MathHelper; -import ru.betterend.item.EndHammer; -import ru.betterend.util.MHelper; - -@Mixin(AbstractBlock.class) -public abstract class AbstractBlockMixin { - - @Inject(method = "getDroppedStacks", at = @At("HEAD"), cancellable = true) - public void getDroppedStacks(BlockState state, LootContext.Builder builder, CallbackInfoReturnable> info) { - if (state.isOf(Blocks.GLOWSTONE)) { - ItemStack tool = builder.get(LootContextParameters.TOOL); - if (tool != null && tool.getItem() instanceof EndHammer) { - int min = 3; - int max = 4; - int count = 0; - int fortune = EnchantmentHelper.getLevel(Enchantments.FORTUNE, tool); - if (fortune > 0) { - fortune /= Enchantments.FORTUNE.getMaxLevel(); - min = MathHelper.clamp(min + fortune, min, max); - if (min == max) { - info.setReturnValue(Lists.newArrayList(new ItemStack(Items.GLOWSTONE_DUST, max))); - info.cancel(); - } - } - count = MHelper.randRange(min, max, MHelper.RANDOM); - info.setReturnValue(Lists.newArrayList(new ItemStack(Items.GLOWSTONE_DUST, count))); - info.cancel(); - } - } - } -} +package ru.betterend.mixin.common; + +import java.util.List; + +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 com.google.common.collect.Lists; + +import net.minecraft.block.AbstractBlock; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.enchantment.Enchantments; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.loot.context.LootContext; +import net.minecraft.loot.context.LootContextParameters; +import net.minecraft.util.math.MathHelper; +import ru.betterend.item.EndHammer; +import ru.betterend.util.MHelper; + +@Mixin(AbstractBlock.class) +public abstract class AbstractBlockMixin { + + @Inject(method = "getDroppedStacks", at = @At("HEAD"), cancellable = true) + public void getDroppedStacks(BlockState state, LootContext.Builder builder, CallbackInfoReturnable> info) { + if (state.isOf(Blocks.GLOWSTONE)) { + ItemStack tool = builder.get(LootContextParameters.TOOL); + if (tool != null && tool.getItem() instanceof EndHammer) { + int min = 3; + int max = 4; + int count = 0; + int fortune = EnchantmentHelper.getLevel(Enchantments.FORTUNE, tool); + if (fortune > 0) { + fortune /= Enchantments.FORTUNE.getMaxLevel(); + min = MathHelper.clamp(min + fortune, min, max); + if (min == max) { + info.setReturnValue(Lists.newArrayList(new ItemStack(Items.GLOWSTONE_DUST, max))); + info.cancel(); + } + } + count = MHelper.randRange(min, max, MHelper.RANDOM); + info.setReturnValue(Lists.newArrayList(new ItemStack(Items.GLOWSTONE_DUST, count))); + info.cancel(); + } + } + } +} diff --git a/src/main/java/ru/betterend/mixin/common/AnvilScreenHandlerMixin.java b/src/main/java/ru/betterend/mixin/common/AnvilScreenHandlerMixin.java index d2292b3d..c8a4aa23 100644 --- a/src/main/java/ru/betterend/mixin/common/AnvilScreenHandlerMixin.java +++ b/src/main/java/ru/betterend/mixin/common/AnvilScreenHandlerMixin.java @@ -1,92 +1,92 @@ -package ru.betterend.mixin.common; - -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 org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import net.minecraft.block.AnvilBlock; -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.recipe.RecipeManager; -import net.minecraft.screen.AnvilScreenHandler; -import net.minecraft.screen.ForgingScreenHandler; -import net.minecraft.screen.ScreenHandlerContext; -import net.minecraft.screen.ScreenHandlerType; -import net.minecraft.tag.BlockTags; -import net.minecraft.world.World; -import ru.betterend.recipe.builders.AnvilSmithingRecipe; - -@Mixin(AnvilScreenHandler.class) -public abstract class AnvilScreenHandlerMixin extends ForgingScreenHandler { - - private final World world = this.player.world; - private final RecipeManager recipeManager = this.world.getRecipeManager(); - private AnvilSmithingRecipe currentRecipe; - - public AnvilScreenHandlerMixin(ScreenHandlerType type, int syncId, PlayerInventory playerInventory, - ScreenHandlerContext context) { - super(type, syncId, playerInventory, context); - } - - @Shadow - public abstract void updateResult(); - - @Inject(method = "canTakeOutput", at = @At("HEAD"), cancellable = true) - protected void canTakeOutput(PlayerEntity player, boolean present, CallbackInfoReturnable info) { - if (currentRecipe != null) { - ItemStack output = this.currentRecipe.craft(input, player); - if (!output.isEmpty()) { - info.setReturnValue(true); - info.cancel(); - } - } - } - - @Inject(method = "onTakeOutput", at = @At("HEAD"), cancellable = true) - protected void onTakeOutput(PlayerEntity player, ItemStack stack, CallbackInfoReturnable info) { - if (currentRecipe != null) { - this.input.getStack(1).decrement(1); - this.updateResult(); - this.context.run((world, blockPos) -> { - BlockState anvilState = world.getBlockState(blockPos); - if (!player.abilities.creativeMode && anvilState.isIn(BlockTags.ANVIL) && player.getRandom().nextFloat() < 0.12F) { - BlockState landingState = AnvilBlock.getLandingState(anvilState); - if (landingState == null) { - world.removeBlock(blockPos, false); - world.syncWorldEvent(1029, blockPos, 0); - } else { - world.setBlockState(blockPos, landingState, 2); - world.syncWorldEvent(1030, blockPos, 0); - } - } else { - world.syncWorldEvent(1030, blockPos, 0); - } - - }); - info.setReturnValue(stack); - info.cancel(); - } - } - - @Inject(method = "updateResult", at = @At("HEAD"), cancellable = true) - public void updateOutput(CallbackInfo info) { - this.currentRecipe = this.recipeManager.getFirstMatch(AnvilSmithingRecipe.TYPE, input, world).orElse(null); - if (currentRecipe != null) { - this.output.setStack(0, currentRecipe.craft(input)); - this.sendContentUpdates(); - info.cancel(); - } - } - - @Inject(method = "setNewItemName", at = @At("HEAD"), cancellable = true) - public void setNewItemName(String string, CallbackInfo info) { - if (currentRecipe != null) { - info.cancel(); - } - } -} +package ru.betterend.mixin.common; + +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 org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import net.minecraft.block.AnvilBlock; +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.RecipeManager; +import net.minecraft.screen.AnvilScreenHandler; +import net.minecraft.screen.ForgingScreenHandler; +import net.minecraft.screen.ScreenHandlerContext; +import net.minecraft.screen.ScreenHandlerType; +import net.minecraft.tag.BlockTags; +import net.minecraft.world.World; +import ru.betterend.recipe.builders.AnvilSmithingRecipe; + +@Mixin(AnvilScreenHandler.class) +public abstract class AnvilScreenHandlerMixin extends ForgingScreenHandler { + + private final World world = this.player.world; + private final RecipeManager recipeManager = this.world.getRecipeManager(); + private AnvilSmithingRecipe currentRecipe; + + public AnvilScreenHandlerMixin(ScreenHandlerType type, int syncId, PlayerInventory playerInventory, + ScreenHandlerContext context) { + super(type, syncId, playerInventory, context); + } + + @Shadow + public abstract void updateResult(); + + @Inject(method = "canTakeOutput", at = @At("HEAD"), cancellable = true) + protected void canTakeOutput(PlayerEntity player, boolean present, CallbackInfoReturnable info) { + if (currentRecipe != null) { + ItemStack output = this.currentRecipe.craft(input, player); + if (!output.isEmpty()) { + info.setReturnValue(true); + info.cancel(); + } + } + } + + @Inject(method = "onTakeOutput", at = @At("HEAD"), cancellable = true) + protected void onTakeOutput(PlayerEntity player, ItemStack stack, CallbackInfoReturnable info) { + if (currentRecipe != null) { + this.input.getStack(1).decrement(1); + this.updateResult(); + this.context.run((world, blockPos) -> { + BlockState anvilState = world.getBlockState(blockPos); + if (!player.abilities.creativeMode && anvilState.isIn(BlockTags.ANVIL) && player.getRandom().nextFloat() < 0.12F) { + BlockState landingState = AnvilBlock.getLandingState(anvilState); + if (landingState == null) { + world.removeBlock(blockPos, false); + world.syncWorldEvent(1029, blockPos, 0); + } else { + world.setBlockState(blockPos, landingState, 2); + world.syncWorldEvent(1030, blockPos, 0); + } + } else { + world.syncWorldEvent(1030, blockPos, 0); + } + + }); + info.setReturnValue(stack); + info.cancel(); + } + } + + @Inject(method = "updateResult", at = @At("HEAD"), cancellable = true) + public void updateOutput(CallbackInfo info) { + this.currentRecipe = this.recipeManager.getFirstMatch(AnvilSmithingRecipe.TYPE, input, world).orElse(null); + if (currentRecipe != null) { + this.output.setStack(0, currentRecipe.craft(input)); + this.sendContentUpdates(); + info.cancel(); + } + } + + @Inject(method = "setNewItemName", at = @At("HEAD"), cancellable = true) + public void setNewItemName(String string, CallbackInfo info) { + if (currentRecipe != null) { + info.cancel(); + } + } +} diff --git a/src/main/java/ru/betterend/mixin/common/BrewingAccessor.java b/src/main/java/ru/betterend/mixin/common/BrewingAccessor.java index 751ee040..17129e52 100644 --- a/src/main/java/ru/betterend/mixin/common/BrewingAccessor.java +++ b/src/main/java/ru/betterend/mixin/common/BrewingAccessor.java @@ -1,16 +1,16 @@ -package ru.betterend.mixin.common; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -import net.minecraft.item.Item; -import net.minecraft.potion.Potion; -import net.minecraft.recipe.BrewingRecipeRegistry; - -@Mixin(BrewingRecipeRegistry.class) -public interface BrewingAccessor { - @Invoker - static void callRegisterPotionRecipe(Potion input, Item item, Potion output) { - throw new AssertionError("@Invoker dummy body called"); - } -} +package ru.betterend.mixin.common; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + +import net.minecraft.item.Item; +import net.minecraft.potion.Potion; +import net.minecraft.recipe.BrewingRecipeRegistry; + +@Mixin(BrewingRecipeRegistry.class) +public interface BrewingAccessor { + @Invoker + static void callRegisterPotionRecipe(Potion input, Item item, Potion output) { + throw new AssertionError("@Invoker dummy body called"); + } +} diff --git a/src/main/java/ru/betterend/mixin/common/EndermanEntityMixin.java b/src/main/java/ru/betterend/mixin/common/EndermanEntityMixin.java index c815399d..5bd9b493 100644 --- a/src/main/java/ru/betterend/mixin/common/EndermanEntityMixin.java +++ b/src/main/java/ru/betterend/mixin/common/EndermanEntityMixin.java @@ -1,26 +1,26 @@ -package ru.betterend.mixin.common; - -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 net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.entity.mob.EndermanEntity; -import net.minecraft.entity.player.PlayerEntity; -import ru.betterend.effects.EndEnchantments; -import ru.betterend.effects.EndStatusEffects; - -@Mixin(EndermanEntity.class) -public abstract class EndermanEntityMixin { - - @Inject(method = "isPlayerStaring", at = @At("HEAD"), cancellable = true) - private void isPlayerStaring(PlayerEntity player, CallbackInfoReturnable info) { - if (player.isCreative() || player.hasStatusEffect(EndStatusEffects.END_VEIL) || - EnchantmentHelper.getLevel(EndEnchantments.END_VEIL, player.getEquippedStack(EquipmentSlot.HEAD)) > 0) { - info.setReturnValue(false); - info.cancel(); - } - } -} +package ru.betterend.mixin.common; + +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 net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.mob.EndermanEntity; +import net.minecraft.entity.player.PlayerEntity; +import ru.betterend.effects.EndEnchantments; +import ru.betterend.effects.EndStatusEffects; + +@Mixin(EndermanEntity.class) +public abstract class EndermanEntityMixin { + + @Inject(method = "isPlayerStaring", at = @At("HEAD"), cancellable = true) + private void isPlayerStaring(PlayerEntity player, CallbackInfoReturnable info) { + if (player.isCreative() || player.hasStatusEffect(EndStatusEffects.END_VEIL) || + EnchantmentHelper.getLevel(EndEnchantments.END_VEIL, player.getEquippedStack(EquipmentSlot.HEAD)) > 0) { + info.setReturnValue(false); + info.cancel(); + } + } +} diff --git a/src/main/java/ru/betterend/mixin/common/EntityMixin.java b/src/main/java/ru/betterend/mixin/common/EntityMixin.java index 023a58fa..3710312a 100644 --- a/src/main/java/ru/betterend/mixin/common/EntityMixin.java +++ b/src/main/java/ru/betterend/mixin/common/EntityMixin.java @@ -1,116 +1,116 @@ -package ru.betterend.mixin.common; - -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; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityType; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.TeleportTarget; -import net.minecraft.world.World; -import ru.betterend.interfaces.TeleportingEntity; - -@Mixin(Entity.class) -public abstract class EntityMixin implements TeleportingEntity { - - private BlockPos beExitPos; - private long beCooldown; - - @Shadow - public float yaw; - @Shadow - public float pitch; - @Shadow - public boolean removed; - @Shadow - public World world; - - @Final - @Shadow - public abstract void detach(); - - @Shadow - public abstract Vec3d getVelocity(); - - @Shadow - public abstract EntityType getType(); - - @Shadow - public abstract void copyFrom(Entity original); - - @Shadow - public abstract Entity moveToWorld(ServerWorld destination); - - @Shadow - protected abstract TeleportTarget getTeleportTarget(ServerWorld destination); - - @Inject(method = "moveToWorld", at = @At("HEAD"), cancellable = true) - public void moveToWorld(ServerWorld destination, CallbackInfoReturnable info) { - if (!removed && beExitPos != null && world instanceof ServerWorld) { - this.detach(); - this.world.getProfiler().push("changeDimension"); - this.world.getProfiler().push("reposition"); - TeleportTarget teleportTarget = this.getTeleportTarget(destination); - if (teleportTarget != null) { - this.world.getProfiler().swap("reloading"); - Entity entity = this.getType().create(destination); - if (entity != null) { - entity.copyFrom(Entity.class.cast(this)); - entity.refreshPositionAndAngles(teleportTarget.position.x, teleportTarget.position.y, teleportTarget.position.z, teleportTarget.yaw, entity.pitch); - entity.setVelocity(teleportTarget.velocity); - destination.onDimensionChanged(entity); - } - this.removed = true; - this.world.getProfiler().pop(); - ((ServerWorld) this.world).resetIdleTimeout(); - destination.resetIdleTimeout(); - this.world.getProfiler().pop(); - this.beExitPos = null; - info.setReturnValue(entity); - info.cancel(); - } - } - } - - @Inject(method = "getTeleportTarget", at = @At("HEAD"), cancellable = true) - protected void getTeleportTarget(ServerWorld destination, CallbackInfoReturnable info) { - if (beExitPos != null) { - info.setReturnValue(new TeleportTarget(new Vec3d(beExitPos.getX() + 0.5D, beExitPos.getY(), beExitPos.getZ() + 0.5D), getVelocity(), yaw, pitch)); - info.cancel(); - } - } - - @Inject(method = "baseTick", at = @At("TAIL")) - public void baseTick(CallbackInfo info) { - if (hasCooldown()) { - this.beCooldown--; - } - } - - @Override - public long beGetCooldown() { - return this.beCooldown; - } - - @Override - public void beSetCooldown(long time) { - this.beCooldown = time; - } - - @Override - public void beSetExitPos(BlockPos pos) { - this.beExitPos = pos; - } - - @Override - public BlockPos beGetExitPos() { - return this.beExitPos; - } -} +package ru.betterend.mixin.common; + +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; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.TeleportTarget; +import net.minecraft.world.World; +import ru.betterend.interfaces.TeleportingEntity; + +@Mixin(Entity.class) +public abstract class EntityMixin implements TeleportingEntity { + + private BlockPos beExitPos; + private long beCooldown; + + @Shadow + public float yaw; + @Shadow + public float pitch; + @Shadow + public boolean removed; + @Shadow + public World world; + + @Final + @Shadow + public abstract void detach(); + + @Shadow + public abstract Vec3d getVelocity(); + + @Shadow + public abstract EntityType getType(); + + @Shadow + public abstract void copyFrom(Entity original); + + @Shadow + public abstract Entity moveToWorld(ServerWorld destination); + + @Shadow + protected abstract TeleportTarget getTeleportTarget(ServerWorld destination); + + @Inject(method = "moveToWorld", at = @At("HEAD"), cancellable = true) + public void moveToWorld(ServerWorld destination, CallbackInfoReturnable info) { + if (!removed && beExitPos != null && world instanceof ServerWorld) { + this.detach(); + this.world.getProfiler().push("changeDimension"); + this.world.getProfiler().push("reposition"); + TeleportTarget teleportTarget = this.getTeleportTarget(destination); + if (teleportTarget != null) { + this.world.getProfiler().swap("reloading"); + Entity entity = this.getType().create(destination); + if (entity != null) { + entity.copyFrom(Entity.class.cast(this)); + entity.refreshPositionAndAngles(teleportTarget.position.x, teleportTarget.position.y, teleportTarget.position.z, teleportTarget.yaw, entity.pitch); + entity.setVelocity(teleportTarget.velocity); + destination.onDimensionChanged(entity); + } + this.removed = true; + this.world.getProfiler().pop(); + ((ServerWorld) this.world).resetIdleTimeout(); + destination.resetIdleTimeout(); + this.world.getProfiler().pop(); + this.beExitPos = null; + info.setReturnValue(entity); + info.cancel(); + } + } + } + + @Inject(method = "getTeleportTarget", at = @At("HEAD"), cancellable = true) + protected void getTeleportTarget(ServerWorld destination, CallbackInfoReturnable info) { + if (beExitPos != null) { + info.setReturnValue(new TeleportTarget(new Vec3d(beExitPos.getX() + 0.5D, beExitPos.getY(), beExitPos.getZ() + 0.5D), getVelocity(), yaw, pitch)); + info.cancel(); + } + } + + @Inject(method = "baseTick", at = @At("TAIL")) + public void baseTick(CallbackInfo info) { + if (hasCooldown()) { + this.beCooldown--; + } + } + + @Override + public long beGetCooldown() { + return this.beCooldown; + } + + @Override + public void beSetCooldown(long time) { + this.beCooldown = time; + } + + @Override + public void beSetExitPos(BlockPos pos) { + this.beExitPos = pos; + } + + @Override + public BlockPos beGetExitPos() { + return this.beExitPos; + } +} diff --git a/src/main/java/ru/betterend/mixin/common/IngredientMixin.java b/src/main/java/ru/betterend/mixin/common/IngredientMixin.java index 53466da3..5144e268 100644 --- a/src/main/java/ru/betterend/mixin/common/IngredientMixin.java +++ b/src/main/java/ru/betterend/mixin/common/IngredientMixin.java @@ -1,46 +1,46 @@ -package ru.betterend.mixin.common; - -import java.util.Arrays; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.recipe.Ingredient; - -import ru.betterend.interfaces.CompoundSerializer; - -@Mixin(Ingredient.class) -public abstract class IngredientMixin implements CompoundSerializer { - - @Shadow - private ItemStack[] matchingStacks; - - @Shadow - protected abstract void cacheMatchingStacks(); - - @Override - public CompoundTag toTag(CompoundTag tag) { - this.cacheMatchingStacks(); - int i = 0; - tag.putInt("length", matchingStacks.length); - for (ItemStack stack : matchingStacks) { - String key = Integer.toString(i); - tag.put(key, stack.toTag(new CompoundTag())); - i++; - } - return tag; - } - - @Override - public Ingredient fromTag(CompoundTag tag) { - int length = tag.getInt("length"); - ItemStack[] stacks = new ItemStack[length]; - for (int i = 0; i < length; i++) { - String key = Integer.toString(i); - stacks[i] = ItemStack.fromTag(tag.getCompound(key)); - } - return Ingredient.ofStacks(Arrays.stream(stacks)); - } -} +package ru.betterend.mixin.common; + +import java.util.Arrays; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.recipe.Ingredient; + +import ru.betterend.interfaces.CompoundSerializer; + +@Mixin(Ingredient.class) +public abstract class IngredientMixin implements CompoundSerializer { + + @Shadow + private ItemStack[] matchingStacks; + + @Shadow + protected abstract void cacheMatchingStacks(); + + @Override + public CompoundTag toTag(CompoundTag tag) { + this.cacheMatchingStacks(); + int i = 0; + tag.putInt("length", matchingStacks.length); + for (ItemStack stack : matchingStacks) { + String key = Integer.toString(i); + tag.put(key, stack.toTag(new CompoundTag())); + i++; + } + return tag; + } + + @Override + public Ingredient fromTag(CompoundTag tag) { + int length = tag.getInt("length"); + ItemStack[] stacks = new ItemStack[length]; + for (int i = 0; i < length; i++) { + String key = Integer.toString(i); + stacks[i] = ItemStack.fromTag(tag.getCompound(key)); + } + return Ingredient.ofStacks(Arrays.stream(stacks)); + } +} diff --git a/src/main/java/ru/betterend/mixin/common/LivingEntityMixin.java b/src/main/java/ru/betterend/mixin/common/LivingEntityMixin.java index 61c9e8ba..954e0276 100644 --- a/src/main/java/ru/betterend/mixin/common/LivingEntityMixin.java +++ b/src/main/java/ru/betterend/mixin/common/LivingEntityMixin.java @@ -1,47 +1,47 @@ -package ru.betterend.mixin.common; - -import java.util.Collection; - -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.ModifyArg; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EquipmentSlot; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.attribute.EntityAttributeModifier; -import net.minecraft.entity.attribute.EntityAttributes; -import net.minecraft.entity.damage.DamageSource; -import net.minecraft.item.Item; - -@Mixin(LivingEntity.class) -public abstract class LivingEntityMixin { - - private Entity lastAttacker; - - @Inject(method = "damage", at = @At("HEAD")) - public void damage(DamageSource source, float amount, CallbackInfoReturnable info) { - this.lastAttacker = source.getAttacker(); - } - - @ModifyArg(method = "damage", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;takeKnockback(FDD)V")) - private float increaseKnockback(float value, double x, double z) { - if (lastAttacker != null && lastAttacker instanceof LivingEntity) { - LivingEntity attacker = (LivingEntity) lastAttacker; - value += this.getKnockback(attacker.getMainHandStack().getItem()); - } - return value; - } - - private double getKnockback(Item tool) { - if (tool == null) return 0.0D; - Collection modifiers = tool.getAttributeModifiers(EquipmentSlot.MAINHAND) - .get(EntityAttributes.GENERIC_ATTACK_KNOCKBACK); - if (modifiers.size() > 0) { - return modifiers.iterator().next().getValue(); - } - return 0.0D; - } -} +package ru.betterend.mixin.common; + +import java.util.Collection; + +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.ModifyArg; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EquipmentSlot; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.attribute.EntityAttributeModifier; +import net.minecraft.entity.attribute.EntityAttributes; +import net.minecraft.entity.damage.DamageSource; +import net.minecraft.item.Item; + +@Mixin(LivingEntity.class) +public abstract class LivingEntityMixin { + + private Entity lastAttacker; + + @Inject(method = "damage", at = @At("HEAD")) + public void damage(DamageSource source, float amount, CallbackInfoReturnable info) { + this.lastAttacker = source.getAttacker(); + } + + @ModifyArg(method = "damage", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/LivingEntity;takeKnockback(FDD)V")) + private float increaseKnockback(float value, double x, double z) { + if (lastAttacker != null && lastAttacker instanceof LivingEntity) { + LivingEntity attacker = (LivingEntity) lastAttacker; + value += this.getKnockback(attacker.getMainHandStack().getItem()); + } + return value; + } + + private double getKnockback(Item tool) { + if (tool == null) return 0.0D; + Collection modifiers = tool.getAttributeModifiers(EquipmentSlot.MAINHAND) + .get(EntityAttributes.GENERIC_ATTACK_KNOCKBACK); + if (modifiers.size() > 0) { + return modifiers.iterator().next().getValue(); + } + return 0.0D; + } +} diff --git a/src/main/java/ru/betterend/mixin/common/ServerPlayerEntityMixin.java b/src/main/java/ru/betterend/mixin/common/ServerPlayerEntityMixin.java index 102cb8ea..4128a8c4 100644 --- a/src/main/java/ru/betterend/mixin/common/ServerPlayerEntityMixin.java +++ b/src/main/java/ru/betterend/mixin/common/ServerPlayerEntityMixin.java @@ -1,41 +1,41 @@ -package ru.betterend.mixin.common; - -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 net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.util.math.BlockPos; -import ru.betterend.interfaces.TeleportingEntity; - -@Mixin(ServerPlayerEntity.class) -public abstract class ServerPlayerEntityMixin implements TeleportingEntity { - - private long beCooldown; - - @Inject(method = "tick", at = @At("TAIL")) - public void baseTick(CallbackInfo info) { - if (hasCooldown()) { - this.beCooldown--; - } - } - - @Override - public long beGetCooldown() { - return this.beCooldown; - } - - @Override - public void beSetCooldown(long time) { - this.beCooldown = time; - } - - @Override - public void beSetExitPos(BlockPos pos) {} - - @Override - public BlockPos beGetExitPos() { - return null; - } -} +package ru.betterend.mixin.common; + +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 net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.util.math.BlockPos; +import ru.betterend.interfaces.TeleportingEntity; + +@Mixin(ServerPlayerEntity.class) +public abstract class ServerPlayerEntityMixin implements TeleportingEntity { + + private long beCooldown; + + @Inject(method = "tick", at = @At("TAIL")) + public void baseTick(CallbackInfo info) { + if (hasCooldown()) { + this.beCooldown--; + } + } + + @Override + public long beGetCooldown() { + return this.beCooldown; + } + + @Override + public void beSetCooldown(long time) { + this.beCooldown = time; + } + + @Override + public void beSetExitPos(BlockPos pos) {} + + @Override + public BlockPos beGetExitPos() { + return null; + } +} diff --git a/src/main/java/ru/betterend/particle/PaticlePortalSphere.java b/src/main/java/ru/betterend/particle/PaticlePortalSphere.java index c80fd158..7268fcf5 100644 --- a/src/main/java/ru/betterend/particle/PaticlePortalSphere.java +++ b/src/main/java/ru/betterend/particle/PaticlePortalSphere.java @@ -1,76 +1,76 @@ -package ru.betterend.particle; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.client.particle.AnimatedParticle; -import net.minecraft.client.particle.Particle; -import net.minecraft.client.particle.ParticleFactory; -import net.minecraft.client.particle.SpriteProvider; -import net.minecraft.client.world.ClientWorld; -import net.minecraft.particle.DefaultParticleType; -import net.minecraft.util.math.MathHelper; -import ru.betterend.util.MHelper; - -public class PaticlePortalSphere extends AnimatedParticle { - private int ticks; - private double preVX; - private double preVY; - private double preVZ; - private double nextVX; - private double nextVY; - private double nextVZ; - - public PaticlePortalSphere(ClientWorld world, double x, double y, double z, SpriteProvider spriteProvider) { - super(world, x, y, z, spriteProvider, 0); - setSprite(spriteProvider.getSprite(random)); - this.maxAge = MHelper.randRange(20, 80, random); - this.scale = MHelper.randRange(0.05F, 0.15F, random); - this.setColor(0xFEBBD5); - this.setTargetColor(0xBBFEE4); - this.setSpriteForAge(spriteProvider); - - preVX = random.nextGaussian() * 0.02; - preVY = random.nextGaussian() * 0.02; - preVZ = random.nextGaussian() * 0.02; - - nextVX = random.nextGaussian() * 0.02; - nextVY = random.nextGaussian() * 0.02; - nextVZ = random.nextGaussian() * 0.02; - } - - @Override - public void tick() { - ticks++; - if (ticks > 30) { - preVX = nextVX; - preVY = nextVY; - preVZ = nextVZ; - nextVX = random.nextGaussian() * 0.02; - nextVY = random.nextGaussian() * 0.02; - nextVZ = random.nextGaussian() * 0.02; - ticks = 0; - } - double delta = (double) ticks / 30.0; - - this.velocityX = MathHelper.lerp(delta, preVX, nextVX); - this.velocityY = MathHelper.lerp(delta, preVY, nextVY); - this.velocityZ = MathHelper.lerp(delta, preVZ, nextVZ); - - super.tick(); - } - - @Environment(EnvType.CLIENT) - public static class FactoryPortalSphere implements ParticleFactory { - - private final SpriteProvider sprites; - - public FactoryPortalSphere(SpriteProvider sprites) { - this.sprites = sprites; - } - - @Override - public Particle createParticle(DefaultParticleType type, ClientWorld world, double x, double y, double z, double vX, double vY, double vZ) { - return new PaticlePortalSphere(world, x, y, z, sprites); - } - } -} +package ru.betterend.particle; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.particle.AnimatedParticle; +import net.minecraft.client.particle.Particle; +import net.minecraft.client.particle.ParticleFactory; +import net.minecraft.client.particle.SpriteProvider; +import net.minecraft.client.world.ClientWorld; +import net.minecraft.particle.DefaultParticleType; +import net.minecraft.util.math.MathHelper; +import ru.betterend.util.MHelper; + +public class PaticlePortalSphere extends AnimatedParticle { + private int ticks; + private double preVX; + private double preVY; + private double preVZ; + private double nextVX; + private double nextVY; + private double nextVZ; + + public PaticlePortalSphere(ClientWorld world, double x, double y, double z, SpriteProvider spriteProvider) { + super(world, x, y, z, spriteProvider, 0); + setSprite(spriteProvider.getSprite(random)); + this.maxAge = MHelper.randRange(20, 80, random); + this.scale = MHelper.randRange(0.05F, 0.15F, random); + this.setColor(0xFEBBD5); + this.setTargetColor(0xBBFEE4); + this.setSpriteForAge(spriteProvider); + + preVX = random.nextGaussian() * 0.02; + preVY = random.nextGaussian() * 0.02; + preVZ = random.nextGaussian() * 0.02; + + nextVX = random.nextGaussian() * 0.02; + nextVY = random.nextGaussian() * 0.02; + nextVZ = random.nextGaussian() * 0.02; + } + + @Override + public void tick() { + ticks++; + if (ticks > 30) { + preVX = nextVX; + preVY = nextVY; + preVZ = nextVZ; + nextVX = random.nextGaussian() * 0.02; + nextVY = random.nextGaussian() * 0.02; + nextVZ = random.nextGaussian() * 0.02; + ticks = 0; + } + double delta = (double) ticks / 30.0; + + this.velocityX = MathHelper.lerp(delta, preVX, nextVX); + this.velocityY = MathHelper.lerp(delta, preVY, nextVY); + this.velocityZ = MathHelper.lerp(delta, preVZ, nextVZ); + + super.tick(); + } + + @Environment(EnvType.CLIENT) + public static class FactoryPortalSphere implements ParticleFactory { + + private final SpriteProvider sprites; + + public FactoryPortalSphere(SpriteProvider sprites) { + this.sprites = sprites; + } + + @Override + public Particle createParticle(DefaultParticleType type, ClientWorld world, double x, double y, double z, double vX, double vY, double vZ) { + return new PaticlePortalSphere(world, x, y, z, sprites); + } + } +} diff --git a/src/main/java/ru/betterend/recipe/builders/AlloyingRecipe.java b/src/main/java/ru/betterend/recipe/builders/AlloyingRecipe.java index 9b590cc4..4441c93f 100644 --- a/src/main/java/ru/betterend/recipe/builders/AlloyingRecipe.java +++ b/src/main/java/ru/betterend/recipe/builders/AlloyingRecipe.java @@ -1,273 +1,273 @@ -package ru.betterend.recipe.builders; - -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.inventory.Inventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.recipe.Ingredient; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.RecipeType; -import net.minecraft.tag.Tag; -import net.minecraft.util.Identifier; -import net.minecraft.util.JsonHelper; -import net.minecraft.util.collection.DefaultedList; -import net.minecraft.util.registry.Registry; -import net.minecraft.world.World; -import ru.betterend.BetterEnd; -import ru.betterend.recipe.EndRecipeManager; -import ru.betterend.registry.EndBlocks; -import ru.betterend.util.RecipeHelper; - -public class AlloyingRecipe implements Recipe { - - public final static String GROUP = "alloying"; - public final static RecipeType TYPE = EndRecipeManager.registerType(GROUP); - public final static Serializer SERIALIZER = EndRecipeManager.registerSerializer(GROUP, new Serializer()); - public final static Identifier ID = BetterEnd.makeID(GROUP); - - protected final RecipeType type; - protected final Identifier id; - protected final Ingredient primaryInput; - protected final Ingredient secondaryInput; - protected final ItemStack output; - protected final String group; - protected final float experience; - protected final int smeltTime; - - public AlloyingRecipe(Identifier id, String group, Ingredient primaryInput, Ingredient secondaryInput, ItemStack output, float experience, int smeltTime) { - this.group = group; - this.id = id; - this.primaryInput = primaryInput; - this.secondaryInput = secondaryInput; - this.output = output; - this.experience = experience; - this.smeltTime = smeltTime; - this.type = TYPE; - } - - public float getExperience() { - return this.experience; - } - - public int getSmeltTime() { - return this.smeltTime; - } - - @Override - public DefaultedList getPreviewInputs() { - DefaultedList defaultedList = DefaultedList.of(); - defaultedList.add(primaryInput); - defaultedList.add(secondaryInput); - - return defaultedList; - } - - @Override - public boolean matches(Inventory inv, World world) { - return this.primaryInput.test(inv.getStack(0)) && this.secondaryInput.test(inv.getStack(1)) || - this.primaryInput.test(inv.getStack(1)) && this.secondaryInput.test(inv.getStack(0)); - } - - @Override - public ItemStack craft(Inventory inv) { - return this.output.copy(); - } - - @Override - public boolean fits(int width, int height) { - return true; - } - - @Override - public ItemStack getOutput() { - return this.output; - } - - @Override - public Identifier getId() { - return this.id; - } - - @Override - public RecipeSerializer getSerializer() { - return SERIALIZER; - } - - @Override - public RecipeType getType() { - return this.type; - } - - @Override - @Environment(EnvType.CLIENT) - public String getGroup() { - return this.group; - } - - @Environment(EnvType.CLIENT) - public ItemStack getRecipeKindIcon() { - return new ItemStack(EndBlocks.END_STONE_SMELTER); - } - - public static class Builder { - private final static Builder INSTANCE = new Builder(); - - public static Builder create(Identifier id) { - INSTANCE.id = id; - INSTANCE.group = String.format("%s_%s", GROUP, id); - INSTANCE.primaryInput = null; - INSTANCE.secondaryInput = null; - INSTANCE.output = null; - INSTANCE.experience = 0.0F; - INSTANCE.smeltTime = 350; - - return INSTANCE; - } - - public static Builder create(String id) { - return create(BetterEnd.makeID(id)); - } - - private Identifier id; - private Ingredient primaryInput; - private Ingredient secondaryInput; - private ItemStack output; - private String group; - private float experience; - private int smeltTime; - private boolean alright = true; - - private Builder() {} - - public Builder setGroup(String group) { - this.group = group; - return this; - } - - public Builder setPrimaryInput(ItemConvertible... inputs) { - for (ItemConvertible item : inputs) { - this.alright &= RecipeHelper.exists(item); - } - this.primaryInput = Ingredient.ofItems(inputs); - return this; - } - - public Builder setSecondaryInput(ItemConvertible... inputs) { - for (ItemConvertible item : inputs) { - this.alright &= RecipeHelper.exists(item); - } - this.secondaryInput = Ingredient.ofItems(inputs); - return this; - } - - public Builder setPrimaryInput(Tag input) { - this.primaryInput = Ingredient.fromTag(input); - return this; - } - - public Builder setSecondaryInput(Tag input) { - this.secondaryInput = Ingredient.fromTag(input); - return this; - } - - public Builder setInput(ItemConvertible primaryInput, ItemConvertible secondaryInput) { - this.setPrimaryInput(primaryInput); - this.setSecondaryInput(secondaryInput); - return this; - } - - public Builder setInput(Tag primaryInput, Tag secondaryInput) { - this.setPrimaryInput(primaryInput); - this.setSecondaryInput(secondaryInput); - return this; - } - - public Builder setOutput(ItemConvertible output, int amount) { - this.alright &= RecipeHelper.exists(output); - this.output = new ItemStack(output, amount); - return this; - } - - public Builder setExpiriense(float amount) { - this.experience = amount; - return this; - } - - public Builder setSmeltTime(int time) { - this.smeltTime = time; - return this; - } - - public void build() { - if (primaryInput == null) { - BetterEnd.LOGGER.warning("Primary input for Alloying recipe can't be 'null', recipe {} will be ignored!", id); - return; - } - if(secondaryInput == null) { - BetterEnd.LOGGER.warning("Secondary input for Alloying can't be 'null', recipe {} will be ignored!", id); - return; - } - if(output == null) { - BetterEnd.LOGGER.warning("Output for Alloying can't be 'null', recipe {} will be ignored!", id); - return; - } - if (EndRecipeManager.getRecipe(TYPE, id) != null) { - BetterEnd.LOGGER.warning("Can't add Alloying recipe! Id {} already exists!", id); - return; - } - if (!alright) { - BetterEnd.LOGGER.debug("Can't add Alloying recipe {}! Ingeredient or output not exists.", id); - return; - } - EndRecipeManager.addRecipe(TYPE, new AlloyingRecipe(id, group, primaryInput, secondaryInput, output, experience, smeltTime)); - } - } - - public static class Serializer implements RecipeSerializer { - @Override - public AlloyingRecipe read(Identifier id, JsonObject json) { - JsonArray ingredients = JsonHelper.getArray(json, "ingredients"); - Ingredient primaryInput = Ingredient.fromJson(ingredients.get(0)); - Ingredient secondaryInput = Ingredient.fromJson(ingredients.get(1)); - String resultStr = JsonHelper.getString(json, "result"); - String group = JsonHelper.getString(json, "group", ""); - Identifier resultId = new Identifier(resultStr); - ItemStack output = new ItemStack(Registry.ITEM.getOrEmpty(resultId).orElseThrow(() -> { - return new IllegalStateException("Item: " + resultStr + " does not exists!"); - })); - float experience = JsonHelper.getFloat(json, "experience", 0.0F); - int smeltTime = JsonHelper.getInt(json, "smelttime", 350); - - return new AlloyingRecipe(id, group, primaryInput, secondaryInput, output, experience, smeltTime); - } - - @Override - public AlloyingRecipe read(Identifier id, PacketByteBuf packetBuffer) { - String group = packetBuffer.readString(32767); - Ingredient primary = Ingredient.fromPacket(packetBuffer); - Ingredient secondary = Ingredient.fromPacket(packetBuffer); - ItemStack output = packetBuffer.readItemStack(); - float experience = packetBuffer.readFloat(); - int smeltTime = packetBuffer.readVarInt(); - - return new AlloyingRecipe(id, group, primary, secondary, output, experience, smeltTime); - } - - @Override - public void write(PacketByteBuf packetBuffer, AlloyingRecipe recipe) { - packetBuffer.writeString(recipe.group); - recipe.primaryInput.write(packetBuffer); - recipe.secondaryInput.write(packetBuffer); - packetBuffer.writeItemStack(recipe.output); - packetBuffer.writeFloat(recipe.experience); - packetBuffer.writeVarInt(recipe.smeltTime); - } - } -} +package ru.betterend.recipe.builders; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.inventory.Inventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.RecipeSerializer; +import net.minecraft.recipe.RecipeType; +import net.minecraft.tag.Tag; +import net.minecraft.util.Identifier; +import net.minecraft.util.JsonHelper; +import net.minecraft.util.collection.DefaultedList; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.World; +import ru.betterend.BetterEnd; +import ru.betterend.recipe.EndRecipeManager; +import ru.betterend.registry.EndBlocks; +import ru.betterend.util.RecipeHelper; + +public class AlloyingRecipe implements Recipe { + + public final static String GROUP = "alloying"; + public final static RecipeType TYPE = EndRecipeManager.registerType(GROUP); + public final static Serializer SERIALIZER = EndRecipeManager.registerSerializer(GROUP, new Serializer()); + public final static Identifier ID = BetterEnd.makeID(GROUP); + + protected final RecipeType type; + protected final Identifier id; + protected final Ingredient primaryInput; + protected final Ingredient secondaryInput; + protected final ItemStack output; + protected final String group; + protected final float experience; + protected final int smeltTime; + + public AlloyingRecipe(Identifier id, String group, Ingredient primaryInput, Ingredient secondaryInput, ItemStack output, float experience, int smeltTime) { + this.group = group; + this.id = id; + this.primaryInput = primaryInput; + this.secondaryInput = secondaryInput; + this.output = output; + this.experience = experience; + this.smeltTime = smeltTime; + this.type = TYPE; + } + + public float getExperience() { + return this.experience; + } + + public int getSmeltTime() { + return this.smeltTime; + } + + @Override + public DefaultedList getPreviewInputs() { + DefaultedList defaultedList = DefaultedList.of(); + defaultedList.add(primaryInput); + defaultedList.add(secondaryInput); + + return defaultedList; + } + + @Override + public boolean matches(Inventory inv, World world) { + return this.primaryInput.test(inv.getStack(0)) && this.secondaryInput.test(inv.getStack(1)) || + this.primaryInput.test(inv.getStack(1)) && this.secondaryInput.test(inv.getStack(0)); + } + + @Override + public ItemStack craft(Inventory inv) { + return this.output.copy(); + } + + @Override + public boolean fits(int width, int height) { + return true; + } + + @Override + public ItemStack getOutput() { + return this.output; + } + + @Override + public Identifier getId() { + return this.id; + } + + @Override + public RecipeSerializer getSerializer() { + return SERIALIZER; + } + + @Override + public RecipeType getType() { + return this.type; + } + + @Override + @Environment(EnvType.CLIENT) + public String getGroup() { + return this.group; + } + + @Environment(EnvType.CLIENT) + public ItemStack getRecipeKindIcon() { + return new ItemStack(EndBlocks.END_STONE_SMELTER); + } + + public static class Builder { + private final static Builder INSTANCE = new Builder(); + + public static Builder create(Identifier id) { + INSTANCE.id = id; + INSTANCE.group = String.format("%s_%s", GROUP, id); + INSTANCE.primaryInput = null; + INSTANCE.secondaryInput = null; + INSTANCE.output = null; + INSTANCE.experience = 0.0F; + INSTANCE.smeltTime = 350; + + return INSTANCE; + } + + public static Builder create(String id) { + return create(BetterEnd.makeID(id)); + } + + private Identifier id; + private Ingredient primaryInput; + private Ingredient secondaryInput; + private ItemStack output; + private String group; + private float experience; + private int smeltTime; + private boolean alright = true; + + private Builder() {} + + public Builder setGroup(String group) { + this.group = group; + return this; + } + + public Builder setPrimaryInput(ItemConvertible... inputs) { + for (ItemConvertible item : inputs) { + this.alright &= RecipeHelper.exists(item); + } + this.primaryInput = Ingredient.ofItems(inputs); + return this; + } + + public Builder setSecondaryInput(ItemConvertible... inputs) { + for (ItemConvertible item : inputs) { + this.alright &= RecipeHelper.exists(item); + } + this.secondaryInput = Ingredient.ofItems(inputs); + return this; + } + + public Builder setPrimaryInput(Tag input) { + this.primaryInput = Ingredient.fromTag(input); + return this; + } + + public Builder setSecondaryInput(Tag input) { + this.secondaryInput = Ingredient.fromTag(input); + return this; + } + + public Builder setInput(ItemConvertible primaryInput, ItemConvertible secondaryInput) { + this.setPrimaryInput(primaryInput); + this.setSecondaryInput(secondaryInput); + return this; + } + + public Builder setInput(Tag primaryInput, Tag secondaryInput) { + this.setPrimaryInput(primaryInput); + this.setSecondaryInput(secondaryInput); + return this; + } + + public Builder setOutput(ItemConvertible output, int amount) { + this.alright &= RecipeHelper.exists(output); + this.output = new ItemStack(output, amount); + return this; + } + + public Builder setExpiriense(float amount) { + this.experience = amount; + return this; + } + + public Builder setSmeltTime(int time) { + this.smeltTime = time; + return this; + } + + public void build() { + if (primaryInput == null) { + BetterEnd.LOGGER.warning("Primary input for Alloying recipe can't be 'null', recipe {} will be ignored!", id); + return; + } + if(secondaryInput == null) { + BetterEnd.LOGGER.warning("Secondary input for Alloying can't be 'null', recipe {} will be ignored!", id); + return; + } + if(output == null) { + BetterEnd.LOGGER.warning("Output for Alloying can't be 'null', recipe {} will be ignored!", id); + return; + } + if (EndRecipeManager.getRecipe(TYPE, id) != null) { + BetterEnd.LOGGER.warning("Can't add Alloying recipe! Id {} already exists!", id); + return; + } + if (!alright) { + BetterEnd.LOGGER.debug("Can't add Alloying recipe {}! Ingeredient or output not exists.", id); + return; + } + EndRecipeManager.addRecipe(TYPE, new AlloyingRecipe(id, group, primaryInput, secondaryInput, output, experience, smeltTime)); + } + } + + public static class Serializer implements RecipeSerializer { + @Override + public AlloyingRecipe read(Identifier id, JsonObject json) { + JsonArray ingredients = JsonHelper.getArray(json, "ingredients"); + Ingredient primaryInput = Ingredient.fromJson(ingredients.get(0)); + Ingredient secondaryInput = Ingredient.fromJson(ingredients.get(1)); + String resultStr = JsonHelper.getString(json, "result"); + String group = JsonHelper.getString(json, "group", ""); + Identifier resultId = new Identifier(resultStr); + ItemStack output = new ItemStack(Registry.ITEM.getOrEmpty(resultId).orElseThrow(() -> { + return new IllegalStateException("Item: " + resultStr + " does not exists!"); + })); + float experience = JsonHelper.getFloat(json, "experience", 0.0F); + int smeltTime = JsonHelper.getInt(json, "smelttime", 350); + + return new AlloyingRecipe(id, group, primaryInput, secondaryInput, output, experience, smeltTime); + } + + @Override + public AlloyingRecipe read(Identifier id, PacketByteBuf packetBuffer) { + String group = packetBuffer.readString(32767); + Ingredient primary = Ingredient.fromPacket(packetBuffer); + Ingredient secondary = Ingredient.fromPacket(packetBuffer); + ItemStack output = packetBuffer.readItemStack(); + float experience = packetBuffer.readFloat(); + int smeltTime = packetBuffer.readVarInt(); + + return new AlloyingRecipe(id, group, primary, secondary, output, experience, smeltTime); + } + + @Override + public void write(PacketByteBuf packetBuffer, AlloyingRecipe recipe) { + packetBuffer.writeString(recipe.group); + recipe.primaryInput.write(packetBuffer); + recipe.secondaryInput.write(packetBuffer); + packetBuffer.writeItemStack(recipe.output); + packetBuffer.writeFloat(recipe.experience); + packetBuffer.writeVarInt(recipe.smeltTime); + } + } +} diff --git a/src/main/java/ru/betterend/recipe/builders/AnvilSmithingRecipe.java b/src/main/java/ru/betterend/recipe/builders/AnvilSmithingRecipe.java index cafe68c4..6620d5bd 100644 --- a/src/main/java/ru/betterend/recipe/builders/AnvilSmithingRecipe.java +++ b/src/main/java/ru/betterend/recipe/builders/AnvilSmithingRecipe.java @@ -1,241 +1,241 @@ -package ru.betterend.recipe.builders; - -import com.google.gson.JsonObject; - -import net.fabricmc.api.EnvType; -import net.fabricmc.api.Environment; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.Inventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ToolItem; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.recipe.Ingredient; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.RecipeType; -import net.minecraft.tag.Tag; -import net.minecraft.util.Identifier; -import net.minecraft.util.JsonHelper; -import net.minecraft.util.collection.DefaultedList; -import net.minecraft.util.registry.Registry; -import net.minecraft.world.World; -import ru.betterend.BetterEnd; -import ru.betterend.recipe.EndRecipeManager; -import ru.betterend.registry.EndTags; -import ru.betterend.util.RecipeHelper; - -public class AnvilSmithingRecipe implements Recipe { - - public final static String GROUP = "smithing"; - public final static RecipeType TYPE = EndRecipeManager.registerType(GROUP); - public final static Serializer SERIALIZER = EndRecipeManager.registerSerializer(GROUP, new Serializer()); - public final static Identifier ID = BetterEnd.makeID(GROUP); - - private final Identifier id; - private final Ingredient input; - private final ItemStack output; - private final int damage; - private final int level; - - public AnvilSmithingRecipe(Identifier identifier, Ingredient input, ItemStack output, int level, int damage) { - this.id = identifier; - this.input = input; - this.output = output; - this.level = level; - this.damage = damage; - } - - @Override - public RecipeSerializer getSerializer() { - return SERIALIZER; - } - - @Override - public ItemStack getOutput() { - return this.output; - } - - @Override - public boolean matches(Inventory craftingInventory, World world) { - return this.matches(craftingInventory); - } - - @Override - public ItemStack craft(Inventory craftingInventory) { - return this.output.copy(); - } - - public ItemStack craft(Inventory craftingInventory, PlayerEntity player) { - if (!player.isCreative()) { - ItemStack hammer = craftingInventory.getStack(0); - int damage = hammer.getDamage() + this.damage; - if (damage >= hammer.getMaxDamage()) return ItemStack.EMPTY; - hammer.damage(this.damage, player, entity -> { - entity.sendEquipmentBreakStatus(null); - }); - } - return this.craft(craftingInventory); - } - - public boolean matches(Inventory craftingInventory) { - ItemStack hammer = craftingInventory.getStack(0); - if (hammer.isEmpty() || !EndTags.HAMMERS.contains(hammer.getItem())) { - return false; - } - int level = ((ToolItem) hammer.getItem()).getMaterial().getMiningLevel(); - return level >= this.level && this.input.test(craftingInventory.getStack(1)); - } - - public int getDamage() { - return this.damage; - } - - @Override - public DefaultedList getPreviewInputs() { - DefaultedList defaultedList = DefaultedList.of(); - defaultedList.add(Ingredient.ofStacks(EndTags.HAMMERS.values().stream().filter(hammer -> { - return ((ToolItem) hammer).getMaterial().getMiningLevel() >= level; - }).map(ItemStack::new))); - defaultedList.add(input); - - return defaultedList; - } - - @Override - @Environment(EnvType.CLIENT) - public boolean fits(int width, int height) { - return true; - } - - @Override - public Identifier getId() { - return this.id; - } - - @Override - public RecipeType getType() { - return TYPE; - } - - @Override - public boolean isIgnoredInRecipeBook() { - return true; - } - - public static class Builder { - private final static Builder INSTANCE = new Builder(); - - public static Builder create(String id) { - return create(BetterEnd.makeID(id)); - } - - public static Builder create(Identifier id) { - INSTANCE.id = id; - INSTANCE.input = null; - INSTANCE.output = null; - INSTANCE.level = 1; - INSTANCE.damage = 1; - - return INSTANCE; - } - - private Identifier id; - private Ingredient input; - private ItemStack output; - private int level = 1; - private int damage = 1; - private boolean alright = true; - - private Builder() {} - - public Builder setInput(ItemConvertible... inputItems) { - for (ItemConvertible item : inputItems) { - this.alright &= RecipeHelper.exists(item); - } - this.setInput(Ingredient.ofItems(inputItems)); - return this; - } - - public Builder setInput(Tag inputTag) { - this.setInput(Ingredient.fromTag(inputTag)); - return this; - } - - public Builder setInput(Ingredient ingredient) { - this.input = ingredient; - return this; - } - - public Builder setOutput(ItemConvertible output, int amount) { - this.alright &= RecipeHelper.exists(output); - this.output = new ItemStack(output, amount); - return this; - } - - public Builder setLevel(int level) { - this.level = level; - return this; - } - - public Builder setDamage(int damage) { - this.damage = damage; - return this; - } - - public void build() { - if (input == null) { - BetterEnd.LOGGER.warning("Input for Smithing recipe can't be 'null', recipe {} will be ignored!", id); - return; - } - if(output == null) { - BetterEnd.LOGGER.warning("Output for Smithing recipe can't be 'null', recipe {} will be ignored!", id); - return; - } - if (EndRecipeManager.getRecipe(TYPE, id) != null) { - BetterEnd.LOGGER.warning("Can't add Smithing recipe! Id {} already exists!", id); - return; - } - if (!alright) { - BetterEnd.LOGGER.debug("Can't add Smithing recipe {}! Ingeredient or output not exists.", id); - return; - } - EndRecipeManager.addRecipe(TYPE, new AnvilSmithingRecipe(id, input, output, level, damage)); - } - } - - public static class Serializer implements RecipeSerializer { - @Override - public AnvilSmithingRecipe read(Identifier id, JsonObject json) { - Ingredient input = Ingredient.fromJson(JsonHelper.getObject(json, "input")); - String resultStr = JsonHelper.getString(json, "result"); - Identifier resultId = new Identifier(resultStr); - ItemStack output = new ItemStack(Registry.ITEM.getOrEmpty(resultId).orElseThrow(() -> { - return new IllegalStateException("Item: " + resultStr + " does not exists!"); - })); - int level = JsonHelper.getInt(json, "level", 1); - int damage = JsonHelper.getInt(json, "damage", 1); - - return new AnvilSmithingRecipe(id, input, output, level, damage); - } - - @Override - public AnvilSmithingRecipe read(Identifier id, PacketByteBuf packetBuffer) { - Ingredient input = Ingredient.fromPacket(packetBuffer); - ItemStack output = packetBuffer.readItemStack(); - int level = packetBuffer.readVarInt(); - int damage = packetBuffer.readVarInt(); - - return new AnvilSmithingRecipe(id, input, output, level, damage); - } - - @Override - public void write(PacketByteBuf packetBuffer, AnvilSmithingRecipe recipe) { - recipe.input.write(packetBuffer); - packetBuffer.writeItemStack(recipe.output); - packetBuffer.writeVarInt(recipe.level); - packetBuffer.writeVarInt(recipe.damage); - } - } -} +package ru.betterend.recipe.builders; + +import com.google.gson.JsonObject; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.Inventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ToolItem; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.RecipeSerializer; +import net.minecraft.recipe.RecipeType; +import net.minecraft.tag.Tag; +import net.minecraft.util.Identifier; +import net.minecraft.util.JsonHelper; +import net.minecraft.util.collection.DefaultedList; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.World; +import ru.betterend.BetterEnd; +import ru.betterend.recipe.EndRecipeManager; +import ru.betterend.registry.EndTags; +import ru.betterend.util.RecipeHelper; + +public class AnvilSmithingRecipe implements Recipe { + + public final static String GROUP = "smithing"; + public final static RecipeType TYPE = EndRecipeManager.registerType(GROUP); + public final static Serializer SERIALIZER = EndRecipeManager.registerSerializer(GROUP, new Serializer()); + public final static Identifier ID = BetterEnd.makeID(GROUP); + + private final Identifier id; + private final Ingredient input; + private final ItemStack output; + private final int damage; + private final int level; + + public AnvilSmithingRecipe(Identifier identifier, Ingredient input, ItemStack output, int level, int damage) { + this.id = identifier; + this.input = input; + this.output = output; + this.level = level; + this.damage = damage; + } + + @Override + public RecipeSerializer getSerializer() { + return SERIALIZER; + } + + @Override + public ItemStack getOutput() { + return this.output; + } + + @Override + public boolean matches(Inventory craftingInventory, World world) { + return this.matches(craftingInventory); + } + + @Override + public ItemStack craft(Inventory craftingInventory) { + return this.output.copy(); + } + + public ItemStack craft(Inventory craftingInventory, PlayerEntity player) { + if (!player.isCreative()) { + ItemStack hammer = craftingInventory.getStack(0); + int damage = hammer.getDamage() + this.damage; + if (damage >= hammer.getMaxDamage()) return ItemStack.EMPTY; + hammer.damage(this.damage, player, entity -> { + entity.sendEquipmentBreakStatus(null); + }); + } + return this.craft(craftingInventory); + } + + public boolean matches(Inventory craftingInventory) { + ItemStack hammer = craftingInventory.getStack(0); + if (hammer.isEmpty() || !EndTags.HAMMERS.contains(hammer.getItem())) { + return false; + } + int level = ((ToolItem) hammer.getItem()).getMaterial().getMiningLevel(); + return level >= this.level && this.input.test(craftingInventory.getStack(1)); + } + + public int getDamage() { + return this.damage; + } + + @Override + public DefaultedList getPreviewInputs() { + DefaultedList defaultedList = DefaultedList.of(); + defaultedList.add(Ingredient.ofStacks(EndTags.HAMMERS.values().stream().filter(hammer -> { + return ((ToolItem) hammer).getMaterial().getMiningLevel() >= level; + }).map(ItemStack::new))); + defaultedList.add(input); + + return defaultedList; + } + + @Override + @Environment(EnvType.CLIENT) + public boolean fits(int width, int height) { + return true; + } + + @Override + public Identifier getId() { + return this.id; + } + + @Override + public RecipeType getType() { + return TYPE; + } + + @Override + public boolean isIgnoredInRecipeBook() { + return true; + } + + public static class Builder { + private final static Builder INSTANCE = new Builder(); + + public static Builder create(String id) { + return create(BetterEnd.makeID(id)); + } + + public static Builder create(Identifier id) { + INSTANCE.id = id; + INSTANCE.input = null; + INSTANCE.output = null; + INSTANCE.level = 1; + INSTANCE.damage = 1; + + return INSTANCE; + } + + private Identifier id; + private Ingredient input; + private ItemStack output; + private int level = 1; + private int damage = 1; + private boolean alright = true; + + private Builder() {} + + public Builder setInput(ItemConvertible... inputItems) { + for (ItemConvertible item : inputItems) { + this.alright &= RecipeHelper.exists(item); + } + this.setInput(Ingredient.ofItems(inputItems)); + return this; + } + + public Builder setInput(Tag inputTag) { + this.setInput(Ingredient.fromTag(inputTag)); + return this; + } + + public Builder setInput(Ingredient ingredient) { + this.input = ingredient; + return this; + } + + public Builder setOutput(ItemConvertible output, int amount) { + this.alright &= RecipeHelper.exists(output); + this.output = new ItemStack(output, amount); + return this; + } + + public Builder setLevel(int level) { + this.level = level; + return this; + } + + public Builder setDamage(int damage) { + this.damage = damage; + return this; + } + + public void build() { + if (input == null) { + BetterEnd.LOGGER.warning("Input for Smithing recipe can't be 'null', recipe {} will be ignored!", id); + return; + } + if(output == null) { + BetterEnd.LOGGER.warning("Output for Smithing recipe can't be 'null', recipe {} will be ignored!", id); + return; + } + if (EndRecipeManager.getRecipe(TYPE, id) != null) { + BetterEnd.LOGGER.warning("Can't add Smithing recipe! Id {} already exists!", id); + return; + } + if (!alright) { + BetterEnd.LOGGER.debug("Can't add Smithing recipe {}! Ingeredient or output not exists.", id); + return; + } + EndRecipeManager.addRecipe(TYPE, new AnvilSmithingRecipe(id, input, output, level, damage)); + } + } + + public static class Serializer implements RecipeSerializer { + @Override + public AnvilSmithingRecipe read(Identifier id, JsonObject json) { + Ingredient input = Ingredient.fromJson(JsonHelper.getObject(json, "input")); + String resultStr = JsonHelper.getString(json, "result"); + Identifier resultId = new Identifier(resultStr); + ItemStack output = new ItemStack(Registry.ITEM.getOrEmpty(resultId).orElseThrow(() -> { + return new IllegalStateException("Item: " + resultStr + " does not exists!"); + })); + int level = JsonHelper.getInt(json, "level", 1); + int damage = JsonHelper.getInt(json, "damage", 1); + + return new AnvilSmithingRecipe(id, input, output, level, damage); + } + + @Override + public AnvilSmithingRecipe read(Identifier id, PacketByteBuf packetBuffer) { + Ingredient input = Ingredient.fromPacket(packetBuffer); + ItemStack output = packetBuffer.readItemStack(); + int level = packetBuffer.readVarInt(); + int damage = packetBuffer.readVarInt(); + + return new AnvilSmithingRecipe(id, input, output, level, damage); + } + + @Override + public void write(PacketByteBuf packetBuffer, AnvilSmithingRecipe recipe) { + recipe.input.write(packetBuffer); + packetBuffer.writeItemStack(recipe.output); + packetBuffer.writeVarInt(recipe.level); + packetBuffer.writeVarInt(recipe.damage); + } + } +} diff --git a/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java b/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java index 2560af1b..118bd966 100644 --- a/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java +++ b/src/main/java/ru/betterend/recipe/builders/InfusionRecipe.java @@ -1,253 +1,253 @@ -package ru.betterend.recipe.builders; - -import java.util.Arrays; - -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; - -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.PacketByteBuf; -import net.minecraft.recipe.Ingredient; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.RecipeType; -import net.minecraft.util.Identifier; -import net.minecraft.util.JsonHelper; -import net.minecraft.util.registry.Registry; -import net.minecraft.world.World; - -import ru.betterend.BetterEnd; -import ru.betterend.interfaces.CompoundSerializer; -import ru.betterend.recipe.EndRecipeManager; -import ru.betterend.rituals.InfusionRitual; - -public class InfusionRecipe implements Recipe { - - public final static String GROUP = "infusion"; - public final static RecipeType TYPE = EndRecipeManager.registerType(GROUP); - public final static Serializer SERIALIZER = EndRecipeManager.registerSerializer(GROUP, new Serializer()); - public final static Identifier ID = BetterEnd.makeID(GROUP); - - private final Identifier id; - private Ingredient input; - private ItemStack output; - private int time = 1; - private Ingredient[] catalysts = new Ingredient[8]; - - private InfusionRecipe(Identifier id) { - this(id, null, null); - } - - private InfusionRecipe(Identifier id, Ingredient input, ItemStack output) { - this.id = id; - this.input = input; - this.output = output; - Arrays.fill(catalysts, Ingredient.EMPTY); - } - - public int getInfusionTime() { - return this.time; - } - - @Override - public boolean matches(InfusionRitual inv, World world) { - boolean valid = this.input.test(inv.getStack(0)); - if (!valid) return false; - for (int i = 1; i < 9; i++) { - valid &= this.catalysts[i].test(inv.getStack(i)); - } - return valid; - } - - @Override - public ItemStack craft(InfusionRitual ritual) { - return this.output.copy(); - } - - @Override - public boolean fits(int width, int height) { - return true; - } - - @Override - public ItemStack getOutput() { - return this.output; - } - - @Override - public Identifier getId() { - return this.id; - } - - @Override - public RecipeSerializer getSerializer() { - return SERIALIZER; - } - - @Override - public RecipeType getType() { - return TYPE; - } - - public InfusionRecipe fromTag(CompoundTag tag) { - return SERIALIZER.fromTag(tag); - } - - public CompoundTag toTag(CompoundTag tag) { - return SERIALIZER.toTag(this, tag); - } - - public static class Builder { - private final static Builder INSTANCE = new Builder(); - - public static Builder create(String id) { - return create(BetterEnd.makeID(id)); - } - - public static Builder create(Identifier id) { - INSTANCE.id = id; - INSTANCE.input = null; - INSTANCE.output = null; - INSTANCE.time = 1; - - Arrays.fill(INSTANCE.catalysts, Ingredient.EMPTY); - - return INSTANCE; - } - - private Identifier id; - private Ingredient input; - private ItemStack output; - private int time = 1; - private Ingredient[] catalysts = new Ingredient[8]; - - private Builder() { - Arrays.fill(catalysts, Ingredient.EMPTY); - } - - public Builder setInput(ItemConvertible input) { - this.input = Ingredient.ofItems(input); - return this; - } - - public Builder setOutput(ItemStack output) { - this.output = output; - this.output.setCount(1); - return this; - } - - public Builder setTime(int time) { - this.time = time; - return this; - } - - public Builder addCatalyst(int slot, ItemConvertible item) { - if (slot > 7) return this; - this.catalysts[slot] = Ingredient.ofItems(item); - return this; - } - - public void build() { - if (input == null) { - BetterEnd.LOGGER.warning("Input for Infusion recipe can't be 'null', recipe {} will be ignored!", id); - return; - } - if (output == null) { - BetterEnd.LOGGER.warning("Output for Infusion recipe can't be 'null', recipe {} will be ignored!", id); - return; - } - InfusionRecipe recipe = new InfusionRecipe(id, input, output); - recipe.time = time; - int empty = 0; - for (int i = 0; i < catalysts.length; i++) { - if (catalysts[i].isEmpty()) empty++; - else recipe.catalysts[i] = catalysts[i]; - } - if (empty == catalysts.length) { - BetterEnd.LOGGER.warning("At least one catalyst must be non empty, recipe {} will be ignored!", id); - return; - } - EndRecipeManager.addRecipe(TYPE, recipe); - } - } - - public static class Serializer implements RecipeSerializer { - @Override - public InfusionRecipe read(Identifier id, JsonObject json) { - InfusionRecipe recipe = new InfusionRecipe(id); - recipe.input = Ingredient.fromJson(json.get("input")); - Identifier outId = new Identifier(JsonHelper.getString(json, "output")); - recipe.output = new ItemStack(Registry.ITEM.getOrEmpty(outId).orElseThrow(() -> { - return new IllegalStateException("Item: " + outId + " does not exists!"); - })); - recipe.time = JsonHelper.getInt(json, "time", 1); - JsonArray catalysts = JsonHelper.asArray(json, "catalysts"); - for (int i = 0; i < catalysts.size(); i++) { - ItemStack stack = new ItemStack(Registry.ITEM.getOrEmpty(outId).orElse(null)); - recipe.catalysts[i] = Ingredient.ofStacks( - Arrays.stream(new ItemStack[] { stack })); - } - return recipe; - } - - @Override - public InfusionRecipe read(Identifier id, PacketByteBuf buffer) { - InfusionRecipe recipe = new InfusionRecipe(id); - recipe.input = Ingredient.fromPacket(buffer); - recipe.output = buffer.readItemStack(); - recipe.time = buffer.readVarInt(); - for (int i = 0; i < 9; i++) { - recipe.catalysts[i] = Ingredient.fromPacket(buffer); - } - return recipe; - } - - @Override - public void write(PacketByteBuf buffer, InfusionRecipe recipe) { - recipe.input.write(buffer); - buffer.writeItemStack(recipe.output); - buffer.writeVarInt(recipe.time); - for (int i = 0; i < 9; i++) { - recipe.catalysts[i].write(buffer); - } - } - - public InfusionRecipe fromTag(CompoundTag tag) { - Identifier id = new Identifier(tag.getString("id")); - InfusionRecipe recipe = new InfusionRecipe(id); - CompoundSerializer inputSerializer = this.toSerializer(recipe.input); - recipe.input = inputSerializer.fromTag(tag.getCompound("input")); - recipe.output = ItemStack.fromTag(tag.getCompound("output")); - recipe.time = tag.getInt("time"); - CompoundTag catalysts = tag.getCompound("catalysts"); - for(int i = 0; i < recipe.catalysts.length; i++) { - String key = Integer.toString(i); - CompoundSerializer cataSerializer = this.toSerializer(recipe.catalysts[i]); - recipe.catalysts[i] = cataSerializer.fromTag(catalysts.getCompound(key)); - } - return recipe; - } - - public CompoundTag toTag(InfusionRecipe recipe, CompoundTag tag) { - CompoundSerializer inputSerializer = this.toSerializer(recipe.input); - tag.put("input", inputSerializer.toTag(new CompoundTag())); - tag.put("output", recipe.output.toTag(new CompoundTag())); - tag.putInt("time", recipe.time); - CompoundTag catalysts = new CompoundTag(); - for(int i = 0; i < recipe.catalysts.length; i++) { - String key = Integer.toString(i); - CompoundSerializer cataSerializer = this.toSerializer(recipe.catalysts[i]); - catalysts.put(key, cataSerializer.toTag(new CompoundTag())); - } - tag.put("catalysts", catalysts); - return tag; - } - - @SuppressWarnings("unchecked") - private CompoundSerializer toSerializer(Ingredient ingredient) { - return CompoundSerializer.class.cast(ingredient); - } - } -} +package ru.betterend.recipe.builders; + +import java.util.Arrays; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; + +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.PacketByteBuf; +import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.RecipeSerializer; +import net.minecraft.recipe.RecipeType; +import net.minecraft.util.Identifier; +import net.minecraft.util.JsonHelper; +import net.minecraft.util.registry.Registry; +import net.minecraft.world.World; + +import ru.betterend.BetterEnd; +import ru.betterend.interfaces.CompoundSerializer; +import ru.betterend.recipe.EndRecipeManager; +import ru.betterend.rituals.InfusionRitual; + +public class InfusionRecipe implements Recipe { + + public final static String GROUP = "infusion"; + public final static RecipeType TYPE = EndRecipeManager.registerType(GROUP); + public final static Serializer SERIALIZER = EndRecipeManager.registerSerializer(GROUP, new Serializer()); + public final static Identifier ID = BetterEnd.makeID(GROUP); + + private final Identifier id; + private Ingredient input; + private ItemStack output; + private int time = 1; + private Ingredient[] catalysts = new Ingredient[8]; + + private InfusionRecipe(Identifier id) { + this(id, null, null); + } + + private InfusionRecipe(Identifier id, Ingredient input, ItemStack output) { + this.id = id; + this.input = input; + this.output = output; + Arrays.fill(catalysts, Ingredient.EMPTY); + } + + public int getInfusionTime() { + return this.time; + } + + @Override + public boolean matches(InfusionRitual inv, World world) { + boolean valid = this.input.test(inv.getStack(0)); + if (!valid) return false; + for (int i = 1; i < 9; i++) { + valid &= this.catalysts[i].test(inv.getStack(i)); + } + return valid; + } + + @Override + public ItemStack craft(InfusionRitual ritual) { + return this.output.copy(); + } + + @Override + public boolean fits(int width, int height) { + return true; + } + + @Override + public ItemStack getOutput() { + return this.output; + } + + @Override + public Identifier getId() { + return this.id; + } + + @Override + public RecipeSerializer getSerializer() { + return SERIALIZER; + } + + @Override + public RecipeType getType() { + return TYPE; + } + + public InfusionRecipe fromTag(CompoundTag tag) { + return SERIALIZER.fromTag(tag); + } + + public CompoundTag toTag(CompoundTag tag) { + return SERIALIZER.toTag(this, tag); + } + + public static class Builder { + private final static Builder INSTANCE = new Builder(); + + public static Builder create(String id) { + return create(BetterEnd.makeID(id)); + } + + public static Builder create(Identifier id) { + INSTANCE.id = id; + INSTANCE.input = null; + INSTANCE.output = null; + INSTANCE.time = 1; + + Arrays.fill(INSTANCE.catalysts, Ingredient.EMPTY); + + return INSTANCE; + } + + private Identifier id; + private Ingredient input; + private ItemStack output; + private int time = 1; + private Ingredient[] catalysts = new Ingredient[8]; + + private Builder() { + Arrays.fill(catalysts, Ingredient.EMPTY); + } + + public Builder setInput(ItemConvertible input) { + this.input = Ingredient.ofItems(input); + return this; + } + + public Builder setOutput(ItemStack output) { + this.output = output; + this.output.setCount(1); + return this; + } + + public Builder setTime(int time) { + this.time = time; + return this; + } + + public Builder addCatalyst(int slot, ItemConvertible item) { + if (slot > 7) return this; + this.catalysts[slot] = Ingredient.ofItems(item); + return this; + } + + public void build() { + if (input == null) { + BetterEnd.LOGGER.warning("Input for Infusion recipe can't be 'null', recipe {} will be ignored!", id); + return; + } + if (output == null) { + BetterEnd.LOGGER.warning("Output for Infusion recipe can't be 'null', recipe {} will be ignored!", id); + return; + } + InfusionRecipe recipe = new InfusionRecipe(id, input, output); + recipe.time = time; + int empty = 0; + for (int i = 0; i < catalysts.length; i++) { + if (catalysts[i].isEmpty()) empty++; + else recipe.catalysts[i] = catalysts[i]; + } + if (empty == catalysts.length) { + BetterEnd.LOGGER.warning("At least one catalyst must be non empty, recipe {} will be ignored!", id); + return; + } + EndRecipeManager.addRecipe(TYPE, recipe); + } + } + + public static class Serializer implements RecipeSerializer { + @Override + public InfusionRecipe read(Identifier id, JsonObject json) { + InfusionRecipe recipe = new InfusionRecipe(id); + recipe.input = Ingredient.fromJson(json.get("input")); + Identifier outId = new Identifier(JsonHelper.getString(json, "output")); + recipe.output = new ItemStack(Registry.ITEM.getOrEmpty(outId).orElseThrow(() -> { + return new IllegalStateException("Item: " + outId + " does not exists!"); + })); + recipe.time = JsonHelper.getInt(json, "time", 1); + JsonArray catalysts = JsonHelper.asArray(json, "catalysts"); + for (int i = 0; i < catalysts.size(); i++) { + ItemStack stack = new ItemStack(Registry.ITEM.getOrEmpty(outId).orElse(null)); + recipe.catalysts[i] = Ingredient.ofStacks( + Arrays.stream(new ItemStack[] { stack })); + } + return recipe; + } + + @Override + public InfusionRecipe read(Identifier id, PacketByteBuf buffer) { + InfusionRecipe recipe = new InfusionRecipe(id); + recipe.input = Ingredient.fromPacket(buffer); + recipe.output = buffer.readItemStack(); + recipe.time = buffer.readVarInt(); + for (int i = 0; i < 9; i++) { + recipe.catalysts[i] = Ingredient.fromPacket(buffer); + } + return recipe; + } + + @Override + public void write(PacketByteBuf buffer, InfusionRecipe recipe) { + recipe.input.write(buffer); + buffer.writeItemStack(recipe.output); + buffer.writeVarInt(recipe.time); + for (int i = 0; i < 9; i++) { + recipe.catalysts[i].write(buffer); + } + } + + public InfusionRecipe fromTag(CompoundTag tag) { + Identifier id = new Identifier(tag.getString("id")); + InfusionRecipe recipe = new InfusionRecipe(id); + CompoundSerializer inputSerializer = this.toSerializer(recipe.input); + recipe.input = inputSerializer.fromTag(tag.getCompound("input")); + recipe.output = ItemStack.fromTag(tag.getCompound("output")); + recipe.time = tag.getInt("time"); + CompoundTag catalysts = tag.getCompound("catalysts"); + for(int i = 0; i < recipe.catalysts.length; i++) { + String key = Integer.toString(i); + CompoundSerializer cataSerializer = this.toSerializer(recipe.catalysts[i]); + recipe.catalysts[i] = cataSerializer.fromTag(catalysts.getCompound(key)); + } + return recipe; + } + + public CompoundTag toTag(InfusionRecipe recipe, CompoundTag tag) { + CompoundSerializer inputSerializer = this.toSerializer(recipe.input); + tag.put("input", inputSerializer.toTag(new CompoundTag())); + tag.put("output", recipe.output.toTag(new CompoundTag())); + tag.putInt("time", recipe.time); + CompoundTag catalysts = new CompoundTag(); + for(int i = 0; i < recipe.catalysts.length; i++) { + String key = Integer.toString(i); + CompoundSerializer cataSerializer = this.toSerializer(recipe.catalysts[i]); + catalysts.put(key, cataSerializer.toTag(new CompoundTag())); + } + tag.put("catalysts", catalysts); + return tag; + } + + @SuppressWarnings("unchecked") + private CompoundSerializer toSerializer(Ingredient ingredient) { + return CompoundSerializer.class.cast(ingredient); + } + } +} diff --git a/src/main/java/ru/betterend/rituals/EternalRitual.java b/src/main/java/ru/betterend/rituals/EternalRitual.java index 9d9f3bff..4f4dabd1 100644 --- a/src/main/java/ru/betterend/rituals/EternalRitual.java +++ b/src/main/java/ru/betterend/rituals/EternalRitual.java @@ -1,479 +1,479 @@ -package ru.betterend.rituals; - -import java.awt.Point; -import java.util.Random; -import java.util.Set; - -import com.google.common.collect.Sets; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.NbtHelper; -import net.minecraft.particle.BlockStateParticleEffect; -import net.minecraft.particle.ParticleEffect; -import net.minecraft.particle.ParticleTypes; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.sound.SoundCategory; -import net.minecraft.sound.SoundEvents; -import net.minecraft.state.property.BooleanProperty; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.util.registry.Registry; -import net.minecraft.util.registry.RegistryKey; -import net.minecraft.world.Heightmap; -import net.minecraft.world.World; -import net.minecraft.world.dimension.DimensionType; -import net.minecraft.world.gen.feature.ConfiguredFeatures; -import ru.betterend.blocks.BlockProperties; -import ru.betterend.blocks.EndPortalBlock; -import ru.betterend.blocks.RunedFlavolite; -import ru.betterend.blocks.entities.EternalPedestalEntity; -import ru.betterend.registry.EndBlocks; -import ru.betterend.registry.EndTags; - -public class EternalRitual { - private final static Set STRUCTURE_MAP = Sets.newHashSet( - new Point(-4, -5), new Point(-4, 5), new Point(-6, 0), - new Point(4, -5), new Point(4, 5), new Point(6, 0)); - private final static Set FRAME_MAP = Sets.newHashSet( - new Point(0, 0), new Point(0, 6), new Point(1, 0), - new Point(1, 6), new Point(2, 1), new Point(2, 5), - new Point(3, 2), new Point(3, 3), new Point(3, 4)); - private final static Set PORTAL_MAP = Sets.newHashSet( - new Point(0, 0), new Point(0, 1), new Point(0, 2), - new Point(0, 3), new Point(0, 4), new Point(1, 0), - new Point(1, 1), new Point(1, 2), new Point(1, 3), - new Point(1, 4), new Point(2, 1), new Point(2, 2), - new Point(2, 3)); - private final static Set BASE_MAP = Sets.newHashSet( - new Point(3, 0), new Point(2, 0), new Point(2, 1), new Point(1, 1), - new Point(1, 2), new Point(0, 1), new Point(0, 2)); - - private final static Block BASE = EndBlocks.FLAVOLITE.tiles; - private final static Block PEDESTAL = EndBlocks.ETERNAL_PEDESTAL; - private final static Block FRAME = EndBlocks.FLAVOLITE_RUNED_ETERNAL; - private final static Block PORTAL = EndBlocks.END_PORTAL_BLOCK; - private final static BooleanProperty ACTIVE = BlockProperties.ACTIVATED; - - private World world; - private Direction.Axis axis; - private BlockPos center; - private BlockPos exit; - private boolean active = false; - - public EternalRitual(World world) { - this.world = world; - } - - public EternalRitual(World world, BlockPos initial) { - this(world); - this.configure(initial); - } - - public boolean hasWorld() { - return this.world != null; - } - - public void setWorld(World world) { - this.world = world; - } - - private boolean isValid() { - return world != null && !world.isClient() && - center != null && axis != null && - world.getRegistryKey() != World.NETHER; - } - - public void checkStructure() { - if (!isValid()) return; - Direction moveX, moveY; - if (Direction.Axis.X == axis) { - moveX = Direction.EAST; - moveY = Direction.NORTH; - } else { - moveX = Direction.SOUTH; - moveY = Direction.EAST; - } - boolean valid = this.checkFrame(); - for (Point pos : STRUCTURE_MAP) { - BlockPos.Mutable checkPos = center.mutableCopy(); - checkPos.move(moveX, pos.x).move(moveY, pos.y); - valid &= this.isActive(checkPos); - } - if (valid) { - this.activatePortal(); - } - } - - private boolean checkFrame() { - BlockPos framePos = center.down(); - Direction moveDir = Direction.Axis.X == axis ? Direction.NORTH: Direction.EAST; - boolean valid = true; - for (Point point : FRAME_MAP) { - BlockPos pos = framePos.mutableCopy().move(moveDir, point.x).move(Direction.UP, point.y); - BlockState state = world.getBlockState(pos); - valid &= state.getBlock() instanceof RunedFlavolite; - pos = framePos.mutableCopy().move(moveDir, -point.x).move(Direction.UP, point.y); - state = world.getBlockState(pos); - valid &= state.getBlock() instanceof RunedFlavolite; - } - return valid; - } - - public boolean isActive() { - return this.active; - } - - private void activatePortal() { - if (active) return; - this.activatePortal(world, center); - this.doEffects((ServerWorld) world, center); - if (exit == null) { - this.exit = this.findPortalPos(); - } else { - World targetWorld = this.getTargetWorld(); - this.activatePortal(targetWorld, exit); - } - this.active = true; - } - - private void doEffects(ServerWorld serverWorld, BlockPos center) { - Direction moveX, moveY; - if (Direction.Axis.X == axis) { - moveX = Direction.EAST; - moveY = Direction.NORTH; - } else { - moveX = Direction.SOUTH; - moveY = Direction.EAST; - } - for (Point pos : STRUCTURE_MAP) { - BlockPos.Mutable p = center.mutableCopy(); - p.move(moveX, pos.x).move(moveY, pos.y); - serverWorld.spawnParticles(ParticleTypes.PORTAL, p.getX() + 0.5, p.getY() + 1.5, p.getZ() + 0.5, 20, 0, 0, 0, 1); - serverWorld.spawnParticles(ParticleTypes.REVERSE_PORTAL, p.getX() + 0.5, p.getY() + 1.5, p.getZ() + 0.5, 20, 0, 0, 0, 0.3); - } - serverWorld.playSound(null, center, SoundEvents.BLOCK_END_PORTAL_SPAWN, SoundCategory.NEUTRAL, 16, 1); - } - - private void activatePortal(World world, BlockPos center) { - BlockPos framePos = center.down(); - Direction moveDir = Direction.Axis.X == axis ? Direction.NORTH: Direction.EAST; - BlockState frame = FRAME.getDefaultState().with(ACTIVE, true); - FRAME_MAP.forEach(point -> { - BlockPos pos = framePos.mutableCopy().move(moveDir, point.x).move(Direction.UP, point.y); - BlockState state = world.getBlockState(pos); - if (state.contains(ACTIVE) && !state.get(ACTIVE)) { - world.setBlockState(pos, frame); - } - pos = framePos.mutableCopy().move(moveDir, -point.x).move(Direction.UP, point.y); - state = world.getBlockState(pos); - if (state.contains(ACTIVE) && !state.get(ACTIVE)) { - world.setBlockState(pos, frame); - } - }); - Direction.Axis portalAxis = Direction.Axis.X == axis ? Direction.Axis.Z : Direction.Axis.X; - BlockState portal = PORTAL.getDefaultState().with(EndPortalBlock.AXIS, portalAxis); - ParticleEffect effect = new BlockStateParticleEffect(ParticleTypes.BLOCK, portal); - ServerWorld serverWorld = (ServerWorld) world; - - PORTAL_MAP.forEach(point -> { - BlockPos pos = center.mutableCopy().move(moveDir, point.x).move(Direction.UP, point.y); - if (!world.getBlockState(pos).isOf(PORTAL)) { - world.setBlockState(pos, portal); - serverWorld.spawnParticles(effect, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 10, 0.5, 0.5, 0.5, 0.1); - serverWorld.spawnParticles(ParticleTypes.REVERSE_PORTAL, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 10, 0.5, 0.5, 0.5, 0.3); - } - pos = center.mutableCopy().move(moveDir, -point.x).move(Direction.UP, point.y); - if (!world.getBlockState(pos).isOf(PORTAL)) { - world.setBlockState(pos, portal); - serverWorld.spawnParticles(effect, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 10, 0.5, 0.5, 0.5, 0.1); - serverWorld.spawnParticles(ParticleTypes.REVERSE_PORTAL, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 10, 0.5, 0.5, 0.5, 0.3); - } - }); - } - - public void removePortal() { - if (!active || !isValid()) return; - World targetWorld = this.getTargetWorld(); - this.removePortal(world, center); - this.removePortal(targetWorld, exit); - } - - private void removePortal(World world, BlockPos center) { - BlockPos framePos = center.down(); - Direction moveDir = Direction.Axis.X == axis ? Direction.NORTH: Direction.EAST; - FRAME_MAP.forEach(point -> { - BlockPos pos = framePos.mutableCopy().move(moveDir, point.x).move(Direction.UP, point.y); - BlockState state = world.getBlockState(pos); - if (state.isOf(FRAME) && state.get(ACTIVE)) { - world.setBlockState(pos, state.with(ACTIVE, false)); - } - pos = framePos.mutableCopy().move(moveDir, -point.x).move(Direction.UP, point.y); - state = world.getBlockState(pos); - if (state.isOf(FRAME) && state.get(ACTIVE)) { - world.setBlockState(pos, state.with(ACTIVE, false)); - } - }); - PORTAL_MAP.forEach(point -> { - BlockPos pos = center.mutableCopy().move(moveDir, point.x).move(Direction.UP, point.y); - if (world.getBlockState(pos).isOf(PORTAL)) { - world.removeBlock(pos, false); - } - pos = center.mutableCopy().move(moveDir, -point.x).move(Direction.UP, point.y); - if (world.getBlockState(pos).isOf(PORTAL)) { - world.removeBlock(pos, false); - } - }); - this.active = false; - } - - private BlockPos findPortalPos() { - MinecraftServer server = world.getServer(); - ServerWorld targetWorld = (ServerWorld) this.getTargetWorld(); - Registry registry = server.getRegistryManager().getDimensionTypes(); - double mult = registry.get(DimensionType.THE_END_ID).getCoordinateScale(); - BlockPos.Mutable basePos = center.mutableCopy().set(center.getX() / mult, center.getY(), center.getZ() / mult); - Direction.Axis portalAxis = Direction.Axis.X == axis ? Direction.Axis.Z : Direction.Axis.X; - if (checkIsAreaValid(targetWorld, basePos, portalAxis)) { - EternalRitual.generatePortal(targetWorld, basePos, portalAxis); - if (portalAxis.equals(Direction.Axis.X)) { - return basePos.toImmutable(); - } else { - return basePos.toImmutable(); - } - } else { - Direction direction = Direction.EAST; - BlockPos.Mutable checkPos = basePos.mutableCopy(); - for (int step = 1; step < 64; step++) { - for (int i = 0; i < step; i++) { - checkPos.setY(5); - while(checkPos.getY() < world.getHeight()) { - if(checkIsAreaValid(targetWorld, checkPos, portalAxis)) { - EternalRitual.generatePortal(targetWorld, checkPos, portalAxis); - if (portalAxis.equals(Direction.Axis.X)) { - return checkPos.toImmutable(); - } else { - return checkPos.toImmutable(); - } - } - checkPos.move(Direction.UP); - } - checkPos.move(direction); - } - direction = direction.rotateYClockwise(); - } - } - if (targetWorld.getRegistryKey() == World.END) { - ConfiguredFeatures.END_ISLAND.generate(targetWorld, targetWorld.getChunkManager().getChunkGenerator(), new Random(basePos.asLong()), basePos.down()); - } else { - basePos.setY(targetWorld.getChunk(basePos).sampleHeightmap(Heightmap.Type.WORLD_SURFACE, basePos.getX(), basePos.getZ()) + 1); - } - EternalRitual.generatePortal(targetWorld, basePos, portalAxis); - if (portalAxis.equals(Direction.Axis.X)) { - return basePos.toImmutable(); - } else { - return basePos.toImmutable(); - } - } - - private World getTargetWorld() { - RegistryKey target = world.getRegistryKey() == World.END ? World.OVERWORLD : World.END; - return world.getServer().getWorld(target); - } - - private boolean checkIsAreaValid(World world, BlockPos pos, Direction.Axis axis) { - if (!isBaseValid(world, pos, axis)) return false; - return EternalRitual.checkArea(world, pos, axis); - } - - private boolean isBaseValid(World world, BlockPos pos, Direction.Axis axis) { - boolean solid = true; - if (axis.equals(Direction.Axis.X)) { - pos = pos.down().add(0, 0, -3); - for (int i = 0; i < 7; i++) { - BlockPos checkPos = pos.add(0, 0, i); - BlockState state = world.getBlockState(checkPos); - solid &= this.validBlock(world, checkPos, state); - } - } else { - pos = pos.down().add(-3, 0, 0); - for (int i = 0; i < 7; i++) { - BlockPos checkPos = pos.add(i, 0, 0); - BlockState state = world.getBlockState(checkPos); - solid &= this.validBlock(world, checkPos, state); - } - } - return solid; - } - - private boolean validBlock(World world, BlockPos pos, BlockState state) { - BlockState surfaceBlock = world.getBiome(pos).getGenerationSettings().getSurfaceConfig().getTopMaterial(); - return state.isSolidBlock(world, pos) && - (EndTags.validGenBlock(state) || - state.isOf(surfaceBlock.getBlock()) || - state.isOf(Blocks.STONE) || - state.isOf(Blocks.SAND) || - state.isOf(Blocks.GRAVEL)); - } - - public static void generatePortal(World world, BlockPos center, Direction.Axis axis) { - BlockPos framePos = center.down(); - Direction moveDir = Direction.Axis.X == axis ? Direction.EAST: Direction.NORTH; - BlockState frame = FRAME.getDefaultState().with(ACTIVE, true); - FRAME_MAP.forEach(point -> { - BlockPos pos = framePos.mutableCopy().move(moveDir, point.x).move(Direction.UP, point.y); - world.setBlockState(pos, frame); - pos = framePos.mutableCopy().move(moveDir, -point.x).move(Direction.UP, point.y); - world.setBlockState(pos, frame); - }); - BlockState portal = PORTAL.getDefaultState().with(EndPortalBlock.AXIS, axis); - PORTAL_MAP.forEach(point -> { - BlockPos pos = center.mutableCopy().move(moveDir, point.x).move(Direction.UP, point.y); - world.setBlockState(pos, portal); - pos = center.mutableCopy().move(moveDir, -point.x).move(Direction.UP, point.y); - world.setBlockState(pos, portal); - }); - generateBase(world, framePos, moveDir); - } - - private static void generateBase(World world, BlockPos center, Direction moveX) { - BlockState base = BASE.getDefaultState(); - Direction moveY = moveX.rotateYClockwise(); - BASE_MAP.forEach(point -> { - BlockPos pos = center.mutableCopy().move(moveX, point.x).move(moveY, point.y); - world.setBlockState(pos, base); - pos = center.mutableCopy().move(moveX, -point.x).move(moveY, point.y); - world.setBlockState(pos, base); - pos = center.mutableCopy().move(moveX, point.x).move(moveY, -point.y); - world.setBlockState(pos, base); - pos = center.mutableCopy().move(moveX, -point.x).move(moveY, -point.y); - world.setBlockState(pos, base); - }); - } - - public static boolean checkArea(World world, BlockPos center, Direction.Axis axis) { - Direction moveDir = Direction.Axis.X == axis ? Direction.NORTH: Direction.EAST; - for (BlockPos checkPos : BlockPos.iterate(center.offset(moveDir.rotateYClockwise()), center.offset(moveDir.rotateYCounterclockwise()))) { - for (Point point : PORTAL_MAP) { - BlockPos pos = checkPos.mutableCopy().move(moveDir, point.x).move(Direction.UP, point.y); - if (!world.getBlockState(pos).isAir()) return false; - pos = checkPos.mutableCopy().move(moveDir, -point.x).move(Direction.UP, point.y); - if (!world.getBlockState(pos).isAir()) return false; - } - } - return true; - } - - public void configure(BlockPos initial) { - BlockPos checkPos = initial.east(12); - if (this.hasPedestal(checkPos)) { - this.axis = Direction.Axis.X; - this.center = initial.east(6); - return; - } - checkPos = initial.west(12); - if (this.hasPedestal(checkPos)) { - this.axis = Direction.Axis.X; - this.center = initial.west(6); - return; - } - checkPos = initial.south(12); - if (this.hasPedestal(checkPos)) { - this.axis = Direction.Axis.Z; - this.center = initial.south(6); - return; - } - checkPos = initial.north(12); - if (this.hasPedestal(checkPos)) { - this.axis = Direction.Axis.Z; - this.center = initial.north(6); - return; - } - checkPos = initial.north(10); - if (this.hasPedestal(checkPos)) { - this.axis = Direction.Axis.X; - checkPos = checkPos.east(8); - if (this.hasPedestal(checkPos)) { - this.center = initial.north(5).east(4); - return; - } else { - this.center = initial.north(5).west(4); - return; - } - } - checkPos = initial.south(10); - if (this.hasPedestal(checkPos)) { - this.axis = Direction.Axis.X; - checkPos = checkPos.east(8); - if (this.hasPedestal(checkPos)) { - this.center = initial.south(5).east(4); - return; - } else { - this.center = initial.south(5).west(4); - return; - } - } - checkPos = initial.east(10); - if (this.hasPedestal(checkPos)) { - this.axis = Direction.Axis.Z; - checkPos = checkPos.south(8); - if (this.hasPedestal(checkPos)) { - this.center = initial.east(5).south(4); - return; - } else { - this.center = initial.east(5).north(4); - return; - } - } - checkPos = initial.west(10); - if (this.hasPedestal(checkPos)) { - this.axis = Direction.Axis.Z; - checkPos = checkPos.south(8); - if (this.hasPedestal(checkPos)) { - this.center = initial.west(5).south(4); - return; - } else { - this.center = initial.west(5).north(4); - return; - } - } - } - - private boolean hasPedestal(BlockPos pos) { - return world.getBlockState(pos).isOf(PEDESTAL); - } - - private boolean isActive(BlockPos pos) { - BlockState state = world.getBlockState(pos); - if (state.isOf(PEDESTAL)) { - EternalPedestalEntity pedestal = (EternalPedestalEntity) world.getBlockEntity(pos); - if (!pedestal.hasRitual()) { - pedestal.linkRitual(this); - } - return state.get(ACTIVE); - } - return false; - } - - public CompoundTag toTag(CompoundTag tag) { - tag.put("center", NbtHelper.fromBlockPos(center)); - if (exit != null) { - tag.put("exit", NbtHelper.fromBlockPos(exit)); - } - tag.putString("axis", axis.getName()); - tag.putBoolean("active", active); - return tag; - } - - public void fromTag(CompoundTag tag) { - this.axis = Direction.Axis.fromName(tag.getString("axis")); - this.center = NbtHelper.toBlockPos(tag.getCompound("center")); - this.active = tag.getBoolean("active"); - if (tag.contains("exit")) { - this.exit = NbtHelper.toBlockPos(tag.getCompound("exit")); - } - } -} +package ru.betterend.rituals; + +import java.awt.Point; +import java.util.Random; +import java.util.Set; + +import com.google.common.collect.Sets; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtHelper; +import net.minecraft.particle.BlockStateParticleEffect; +import net.minecraft.particle.ParticleEffect; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.sound.SoundCategory; +import net.minecraft.sound.SoundEvents; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.registry.Registry; +import net.minecraft.util.registry.RegistryKey; +import net.minecraft.world.Heightmap; +import net.minecraft.world.World; +import net.minecraft.world.dimension.DimensionType; +import net.minecraft.world.gen.feature.ConfiguredFeatures; +import ru.betterend.blocks.BlockProperties; +import ru.betterend.blocks.EndPortalBlock; +import ru.betterend.blocks.RunedFlavolite; +import ru.betterend.blocks.entities.EternalPedestalEntity; +import ru.betterend.registry.EndBlocks; +import ru.betterend.registry.EndTags; + +public class EternalRitual { + private final static Set STRUCTURE_MAP = Sets.newHashSet( + new Point(-4, -5), new Point(-4, 5), new Point(-6, 0), + new Point(4, -5), new Point(4, 5), new Point(6, 0)); + private final static Set FRAME_MAP = Sets.newHashSet( + new Point(0, 0), new Point(0, 6), new Point(1, 0), + new Point(1, 6), new Point(2, 1), new Point(2, 5), + new Point(3, 2), new Point(3, 3), new Point(3, 4)); + private final static Set PORTAL_MAP = Sets.newHashSet( + new Point(0, 0), new Point(0, 1), new Point(0, 2), + new Point(0, 3), new Point(0, 4), new Point(1, 0), + new Point(1, 1), new Point(1, 2), new Point(1, 3), + new Point(1, 4), new Point(2, 1), new Point(2, 2), + new Point(2, 3)); + private final static Set BASE_MAP = Sets.newHashSet( + new Point(3, 0), new Point(2, 0), new Point(2, 1), new Point(1, 1), + new Point(1, 2), new Point(0, 1), new Point(0, 2)); + + private final static Block BASE = EndBlocks.FLAVOLITE.tiles; + private final static Block PEDESTAL = EndBlocks.ETERNAL_PEDESTAL; + private final static Block FRAME = EndBlocks.FLAVOLITE_RUNED_ETERNAL; + private final static Block PORTAL = EndBlocks.END_PORTAL_BLOCK; + private final static BooleanProperty ACTIVE = BlockProperties.ACTIVATED; + + private World world; + private Direction.Axis axis; + private BlockPos center; + private BlockPos exit; + private boolean active = false; + + public EternalRitual(World world) { + this.world = world; + } + + public EternalRitual(World world, BlockPos initial) { + this(world); + this.configure(initial); + } + + public boolean hasWorld() { + return this.world != null; + } + + public void setWorld(World world) { + this.world = world; + } + + private boolean isValid() { + return world != null && !world.isClient() && + center != null && axis != null && + world.getRegistryKey() != World.NETHER; + } + + public void checkStructure() { + if (!isValid()) return; + Direction moveX, moveY; + if (Direction.Axis.X == axis) { + moveX = Direction.EAST; + moveY = Direction.NORTH; + } else { + moveX = Direction.SOUTH; + moveY = Direction.EAST; + } + boolean valid = this.checkFrame(); + for (Point pos : STRUCTURE_MAP) { + BlockPos.Mutable checkPos = center.mutableCopy(); + checkPos.move(moveX, pos.x).move(moveY, pos.y); + valid &= this.isActive(checkPos); + } + if (valid) { + this.activatePortal(); + } + } + + private boolean checkFrame() { + BlockPos framePos = center.down(); + Direction moveDir = Direction.Axis.X == axis ? Direction.NORTH: Direction.EAST; + boolean valid = true; + for (Point point : FRAME_MAP) { + BlockPos pos = framePos.mutableCopy().move(moveDir, point.x).move(Direction.UP, point.y); + BlockState state = world.getBlockState(pos); + valid &= state.getBlock() instanceof RunedFlavolite; + pos = framePos.mutableCopy().move(moveDir, -point.x).move(Direction.UP, point.y); + state = world.getBlockState(pos); + valid &= state.getBlock() instanceof RunedFlavolite; + } + return valid; + } + + public boolean isActive() { + return this.active; + } + + private void activatePortal() { + if (active) return; + this.activatePortal(world, center); + this.doEffects((ServerWorld) world, center); + if (exit == null) { + this.exit = this.findPortalPos(); + } else { + World targetWorld = this.getTargetWorld(); + this.activatePortal(targetWorld, exit); + } + this.active = true; + } + + private void doEffects(ServerWorld serverWorld, BlockPos center) { + Direction moveX, moveY; + if (Direction.Axis.X == axis) { + moveX = Direction.EAST; + moveY = Direction.NORTH; + } else { + moveX = Direction.SOUTH; + moveY = Direction.EAST; + } + for (Point pos : STRUCTURE_MAP) { + BlockPos.Mutable p = center.mutableCopy(); + p.move(moveX, pos.x).move(moveY, pos.y); + serverWorld.spawnParticles(ParticleTypes.PORTAL, p.getX() + 0.5, p.getY() + 1.5, p.getZ() + 0.5, 20, 0, 0, 0, 1); + serverWorld.spawnParticles(ParticleTypes.REVERSE_PORTAL, p.getX() + 0.5, p.getY() + 1.5, p.getZ() + 0.5, 20, 0, 0, 0, 0.3); + } + serverWorld.playSound(null, center, SoundEvents.BLOCK_END_PORTAL_SPAWN, SoundCategory.NEUTRAL, 16, 1); + } + + private void activatePortal(World world, BlockPos center) { + BlockPos framePos = center.down(); + Direction moveDir = Direction.Axis.X == axis ? Direction.NORTH: Direction.EAST; + BlockState frame = FRAME.getDefaultState().with(ACTIVE, true); + FRAME_MAP.forEach(point -> { + BlockPos pos = framePos.mutableCopy().move(moveDir, point.x).move(Direction.UP, point.y); + BlockState state = world.getBlockState(pos); + if (state.contains(ACTIVE) && !state.get(ACTIVE)) { + world.setBlockState(pos, frame); + } + pos = framePos.mutableCopy().move(moveDir, -point.x).move(Direction.UP, point.y); + state = world.getBlockState(pos); + if (state.contains(ACTIVE) && !state.get(ACTIVE)) { + world.setBlockState(pos, frame); + } + }); + Direction.Axis portalAxis = Direction.Axis.X == axis ? Direction.Axis.Z : Direction.Axis.X; + BlockState portal = PORTAL.getDefaultState().with(EndPortalBlock.AXIS, portalAxis); + ParticleEffect effect = new BlockStateParticleEffect(ParticleTypes.BLOCK, portal); + ServerWorld serverWorld = (ServerWorld) world; + + PORTAL_MAP.forEach(point -> { + BlockPos pos = center.mutableCopy().move(moveDir, point.x).move(Direction.UP, point.y); + if (!world.getBlockState(pos).isOf(PORTAL)) { + world.setBlockState(pos, portal); + serverWorld.spawnParticles(effect, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 10, 0.5, 0.5, 0.5, 0.1); + serverWorld.spawnParticles(ParticleTypes.REVERSE_PORTAL, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 10, 0.5, 0.5, 0.5, 0.3); + } + pos = center.mutableCopy().move(moveDir, -point.x).move(Direction.UP, point.y); + if (!world.getBlockState(pos).isOf(PORTAL)) { + world.setBlockState(pos, portal); + serverWorld.spawnParticles(effect, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 10, 0.5, 0.5, 0.5, 0.1); + serverWorld.spawnParticles(ParticleTypes.REVERSE_PORTAL, pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, 10, 0.5, 0.5, 0.5, 0.3); + } + }); + } + + public void removePortal() { + if (!active || !isValid()) return; + World targetWorld = this.getTargetWorld(); + this.removePortal(world, center); + this.removePortal(targetWorld, exit); + } + + private void removePortal(World world, BlockPos center) { + BlockPos framePos = center.down(); + Direction moveDir = Direction.Axis.X == axis ? Direction.NORTH: Direction.EAST; + FRAME_MAP.forEach(point -> { + BlockPos pos = framePos.mutableCopy().move(moveDir, point.x).move(Direction.UP, point.y); + BlockState state = world.getBlockState(pos); + if (state.isOf(FRAME) && state.get(ACTIVE)) { + world.setBlockState(pos, state.with(ACTIVE, false)); + } + pos = framePos.mutableCopy().move(moveDir, -point.x).move(Direction.UP, point.y); + state = world.getBlockState(pos); + if (state.isOf(FRAME) && state.get(ACTIVE)) { + world.setBlockState(pos, state.with(ACTIVE, false)); + } + }); + PORTAL_MAP.forEach(point -> { + BlockPos pos = center.mutableCopy().move(moveDir, point.x).move(Direction.UP, point.y); + if (world.getBlockState(pos).isOf(PORTAL)) { + world.removeBlock(pos, false); + } + pos = center.mutableCopy().move(moveDir, -point.x).move(Direction.UP, point.y); + if (world.getBlockState(pos).isOf(PORTAL)) { + world.removeBlock(pos, false); + } + }); + this.active = false; + } + + private BlockPos findPortalPos() { + MinecraftServer server = world.getServer(); + ServerWorld targetWorld = (ServerWorld) this.getTargetWorld(); + Registry registry = server.getRegistryManager().getDimensionTypes(); + double mult = registry.get(DimensionType.THE_END_ID).getCoordinateScale(); + BlockPos.Mutable basePos = center.mutableCopy().set(center.getX() / mult, center.getY(), center.getZ() / mult); + Direction.Axis portalAxis = Direction.Axis.X == axis ? Direction.Axis.Z : Direction.Axis.X; + if (checkIsAreaValid(targetWorld, basePos, portalAxis)) { + EternalRitual.generatePortal(targetWorld, basePos, portalAxis); + if (portalAxis.equals(Direction.Axis.X)) { + return basePos.toImmutable(); + } else { + return basePos.toImmutable(); + } + } else { + Direction direction = Direction.EAST; + BlockPos.Mutable checkPos = basePos.mutableCopy(); + for (int step = 1; step < 64; step++) { + for (int i = 0; i < step; i++) { + checkPos.setY(5); + while(checkPos.getY() < world.getHeight()) { + if(checkIsAreaValid(targetWorld, checkPos, portalAxis)) { + EternalRitual.generatePortal(targetWorld, checkPos, portalAxis); + if (portalAxis.equals(Direction.Axis.X)) { + return checkPos.toImmutable(); + } else { + return checkPos.toImmutable(); + } + } + checkPos.move(Direction.UP); + } + checkPos.move(direction); + } + direction = direction.rotateYClockwise(); + } + } + if (targetWorld.getRegistryKey() == World.END) { + ConfiguredFeatures.END_ISLAND.generate(targetWorld, targetWorld.getChunkManager().getChunkGenerator(), new Random(basePos.asLong()), basePos.down()); + } else { + basePos.setY(targetWorld.getChunk(basePos).sampleHeightmap(Heightmap.Type.WORLD_SURFACE, basePos.getX(), basePos.getZ()) + 1); + } + EternalRitual.generatePortal(targetWorld, basePos, portalAxis); + if (portalAxis.equals(Direction.Axis.X)) { + return basePos.toImmutable(); + } else { + return basePos.toImmutable(); + } + } + + private World getTargetWorld() { + RegistryKey target = world.getRegistryKey() == World.END ? World.OVERWORLD : World.END; + return world.getServer().getWorld(target); + } + + private boolean checkIsAreaValid(World world, BlockPos pos, Direction.Axis axis) { + if (!isBaseValid(world, pos, axis)) return false; + return EternalRitual.checkArea(world, pos, axis); + } + + private boolean isBaseValid(World world, BlockPos pos, Direction.Axis axis) { + boolean solid = true; + if (axis.equals(Direction.Axis.X)) { + pos = pos.down().add(0, 0, -3); + for (int i = 0; i < 7; i++) { + BlockPos checkPos = pos.add(0, 0, i); + BlockState state = world.getBlockState(checkPos); + solid &= this.validBlock(world, checkPos, state); + } + } else { + pos = pos.down().add(-3, 0, 0); + for (int i = 0; i < 7; i++) { + BlockPos checkPos = pos.add(i, 0, 0); + BlockState state = world.getBlockState(checkPos); + solid &= this.validBlock(world, checkPos, state); + } + } + return solid; + } + + private boolean validBlock(World world, BlockPos pos, BlockState state) { + BlockState surfaceBlock = world.getBiome(pos).getGenerationSettings().getSurfaceConfig().getTopMaterial(); + return state.isSolidBlock(world, pos) && + (EndTags.validGenBlock(state) || + state.isOf(surfaceBlock.getBlock()) || + state.isOf(Blocks.STONE) || + state.isOf(Blocks.SAND) || + state.isOf(Blocks.GRAVEL)); + } + + public static void generatePortal(World world, BlockPos center, Direction.Axis axis) { + BlockPos framePos = center.down(); + Direction moveDir = Direction.Axis.X == axis ? Direction.EAST: Direction.NORTH; + BlockState frame = FRAME.getDefaultState().with(ACTIVE, true); + FRAME_MAP.forEach(point -> { + BlockPos pos = framePos.mutableCopy().move(moveDir, point.x).move(Direction.UP, point.y); + world.setBlockState(pos, frame); + pos = framePos.mutableCopy().move(moveDir, -point.x).move(Direction.UP, point.y); + world.setBlockState(pos, frame); + }); + BlockState portal = PORTAL.getDefaultState().with(EndPortalBlock.AXIS, axis); + PORTAL_MAP.forEach(point -> { + BlockPos pos = center.mutableCopy().move(moveDir, point.x).move(Direction.UP, point.y); + world.setBlockState(pos, portal); + pos = center.mutableCopy().move(moveDir, -point.x).move(Direction.UP, point.y); + world.setBlockState(pos, portal); + }); + generateBase(world, framePos, moveDir); + } + + private static void generateBase(World world, BlockPos center, Direction moveX) { + BlockState base = BASE.getDefaultState(); + Direction moveY = moveX.rotateYClockwise(); + BASE_MAP.forEach(point -> { + BlockPos pos = center.mutableCopy().move(moveX, point.x).move(moveY, point.y); + world.setBlockState(pos, base); + pos = center.mutableCopy().move(moveX, -point.x).move(moveY, point.y); + world.setBlockState(pos, base); + pos = center.mutableCopy().move(moveX, point.x).move(moveY, -point.y); + world.setBlockState(pos, base); + pos = center.mutableCopy().move(moveX, -point.x).move(moveY, -point.y); + world.setBlockState(pos, base); + }); + } + + public static boolean checkArea(World world, BlockPos center, Direction.Axis axis) { + Direction moveDir = Direction.Axis.X == axis ? Direction.NORTH: Direction.EAST; + for (BlockPos checkPos : BlockPos.iterate(center.offset(moveDir.rotateYClockwise()), center.offset(moveDir.rotateYCounterclockwise()))) { + for (Point point : PORTAL_MAP) { + BlockPos pos = checkPos.mutableCopy().move(moveDir, point.x).move(Direction.UP, point.y); + if (!world.getBlockState(pos).isAir()) return false; + pos = checkPos.mutableCopy().move(moveDir, -point.x).move(Direction.UP, point.y); + if (!world.getBlockState(pos).isAir()) return false; + } + } + return true; + } + + public void configure(BlockPos initial) { + BlockPos checkPos = initial.east(12); + if (this.hasPedestal(checkPos)) { + this.axis = Direction.Axis.X; + this.center = initial.east(6); + return; + } + checkPos = initial.west(12); + if (this.hasPedestal(checkPos)) { + this.axis = Direction.Axis.X; + this.center = initial.west(6); + return; + } + checkPos = initial.south(12); + if (this.hasPedestal(checkPos)) { + this.axis = Direction.Axis.Z; + this.center = initial.south(6); + return; + } + checkPos = initial.north(12); + if (this.hasPedestal(checkPos)) { + this.axis = Direction.Axis.Z; + this.center = initial.north(6); + return; + } + checkPos = initial.north(10); + if (this.hasPedestal(checkPos)) { + this.axis = Direction.Axis.X; + checkPos = checkPos.east(8); + if (this.hasPedestal(checkPos)) { + this.center = initial.north(5).east(4); + return; + } else { + this.center = initial.north(5).west(4); + return; + } + } + checkPos = initial.south(10); + if (this.hasPedestal(checkPos)) { + this.axis = Direction.Axis.X; + checkPos = checkPos.east(8); + if (this.hasPedestal(checkPos)) { + this.center = initial.south(5).east(4); + return; + } else { + this.center = initial.south(5).west(4); + return; + } + } + checkPos = initial.east(10); + if (this.hasPedestal(checkPos)) { + this.axis = Direction.Axis.Z; + checkPos = checkPos.south(8); + if (this.hasPedestal(checkPos)) { + this.center = initial.east(5).south(4); + return; + } else { + this.center = initial.east(5).north(4); + return; + } + } + checkPos = initial.west(10); + if (this.hasPedestal(checkPos)) { + this.axis = Direction.Axis.Z; + checkPos = checkPos.south(8); + if (this.hasPedestal(checkPos)) { + this.center = initial.west(5).south(4); + return; + } else { + this.center = initial.west(5).north(4); + return; + } + } + } + + private boolean hasPedestal(BlockPos pos) { + return world.getBlockState(pos).isOf(PEDESTAL); + } + + private boolean isActive(BlockPos pos) { + BlockState state = world.getBlockState(pos); + if (state.isOf(PEDESTAL)) { + EternalPedestalEntity pedestal = (EternalPedestalEntity) world.getBlockEntity(pos); + if (!pedestal.hasRitual()) { + pedestal.linkRitual(this); + } + return state.get(ACTIVE); + } + return false; + } + + public CompoundTag toTag(CompoundTag tag) { + tag.put("center", NbtHelper.fromBlockPos(center)); + if (exit != null) { + tag.put("exit", NbtHelper.fromBlockPos(exit)); + } + tag.putString("axis", axis.getName()); + tag.putBoolean("active", active); + return tag; + } + + public void fromTag(CompoundTag tag) { + this.axis = Direction.Axis.fromName(tag.getString("axis")); + this.center = NbtHelper.toBlockPos(tag.getCompound("center")); + this.active = tag.getBoolean("active"); + if (tag.contains("exit")) { + this.exit = NbtHelper.toBlockPos(tag.getCompound("exit")); + } + } +} diff --git a/src/main/java/ru/betterend/rituals/InfusionRitual.java b/src/main/java/ru/betterend/rituals/InfusionRitual.java index 03864391..af63af02 100644 --- a/src/main/java/ru/betterend/rituals/InfusionRitual.java +++ b/src/main/java/ru/betterend/rituals/InfusionRitual.java @@ -1,88 +1,88 @@ -package ru.betterend.rituals; - -import net.minecraft.block.BlockState; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.Inventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import ru.betterend.recipe.builders.InfusionRecipe; - -public class InfusionRitual implements Inventory { - - private final World world; - private final BlockPos worldPos; - private InfusionRecipe activeRecipe; - private int progress = 0; - private int time = 0; - - public InfusionRitual(World world, BlockPos pos) { - this.world = world; - this.worldPos = pos; - } - - public void tick() { - if (!hasRecipe()) return; - this.progress++; - if (progress == time) { - - } - } - - public boolean hasRecipe() { - return this.activeRecipe != null; - } - - @Override - public void clear() { - // TODO - } - - @Override - public int size() { - return 9; - } - - @Override - public boolean isEmpty() { - return false; - } - - @Override - public ItemStack getStack(int slot) { - return null; - } - - @Override - public ItemStack removeStack(int slot, int amount) { - return null; - } - - @Override - public ItemStack removeStack(int slot) { - return null; - } - - @Override - public void setStack(int slot, ItemStack stack) { - // TODO - } - - @Override - public void markDirty() { - // TODO - } - - @Override - public boolean canPlayerUse(PlayerEntity player) { - return true; - } - - public void fromTag(CompoundTag tag) { - } - - public CompoundTag toTag(CompoundTag tag) { - return tag; - } -} +package ru.betterend.rituals; + +import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.Inventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import ru.betterend.recipe.builders.InfusionRecipe; + +public class InfusionRitual implements Inventory { + + private final World world; + private final BlockPos worldPos; + private InfusionRecipe activeRecipe; + private int progress = 0; + private int time = 0; + + public InfusionRitual(World world, BlockPos pos) { + this.world = world; + this.worldPos = pos; + } + + public void tick() { + if (!hasRecipe()) return; + this.progress++; + if (progress == time) { + + } + } + + public boolean hasRecipe() { + return this.activeRecipe != null; + } + + @Override + public void clear() { + // TODO + } + + @Override + public int size() { + return 9; + } + + @Override + public boolean isEmpty() { + return false; + } + + @Override + public ItemStack getStack(int slot) { + return null; + } + + @Override + public ItemStack removeStack(int slot, int amount) { + return null; + } + + @Override + public ItemStack removeStack(int slot) { + return null; + } + + @Override + public void setStack(int slot, ItemStack stack) { + // TODO + } + + @Override + public void markDirty() { + // TODO + } + + @Override + public boolean canPlayerUse(PlayerEntity player) { + return true; + } + + public void fromTag(CompoundTag tag) { + } + + public CompoundTag toTag(CompoundTag tag) { + return tag; + } +} diff --git a/src/main/java/ru/betterend/util/LangUtil.java b/src/main/java/ru/betterend/util/LangUtil.java index cc7826a4..a5767bf2 100644 --- a/src/main/java/ru/betterend/util/LangUtil.java +++ b/src/main/java/ru/betterend/util/LangUtil.java @@ -1,38 +1,38 @@ -package ru.betterend.util; - -import net.minecraft.client.resource.language.I18n; -import net.minecraft.text.TranslatableText; - -public class LangUtil { - public final static String CONFIG_ELEMENT = "configuration"; - - private String element; - - public LangUtil(String element) { - this.element = element; - } - - public void setElement(String key) { - this.element = key; - } - - public String getString(String key) { - return getString(element, key); - } - - public TranslatableText getText(String key) { - return getText(element, key); - } - - public static String translate(String key) { - return I18n.translate(key); - } - - public static String getString(String element, String key) { - return translate(String.format("%s.%s", element, key)); - } - - public static TranslatableText getText(String element, String key) { - return new TranslatableText(getString(element, key)); - } -} +package ru.betterend.util; + +import net.minecraft.client.resource.language.I18n; +import net.minecraft.text.TranslatableText; + +public class LangUtil { + public final static String CONFIG_ELEMENT = "configuration"; + + private String element; + + public LangUtil(String element) { + this.element = element; + } + + public void setElement(String key) { + this.element = key; + } + + public String getString(String key) { + return getString(element, key); + } + + public TranslatableText getText(String key) { + return getText(element, key); + } + + public static String translate(String key) { + return I18n.translate(key); + } + + public static String getString(String element, String key) { + return translate(String.format("%s.%s", element, key)); + } + + public static TranslatableText getText(String element, String key) { + return new TranslatableText(getString(element, key)); + } +} diff --git a/src/main/java/ru/betterend/util/Logger.java b/src/main/java/ru/betterend/util/Logger.java index a499f2e7..b3e850c3 100644 --- a/src/main/java/ru/betterend/util/Logger.java +++ b/src/main/java/ru/betterend/util/Logger.java @@ -1,68 +1,68 @@ -package ru.betterend.util; - -import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.LogManager; - -import ru.betterend.BetterEnd; - -public final class Logger { - - private static final org.apache.logging.log4j.Logger LOGGER = LogManager.getLogger(); - - private String modPref = "[" + BetterEnd.MOD_ID + "] "; - - private Logger() {} - - public static Logger get() { - return new Logger(); - } - - public void log(Level level, String message) { - LOGGER.log(level, modPref + message); - } - - public void log(Level level, String message, Object... params) { - LOGGER.log(level, modPref + message, params); - } - - public void debug(Object message) { - this.log(Level.DEBUG, message.toString()); - } - - public void debug(Object message, Object... params) { - this.log(Level.DEBUG, message.toString(), params); - } - - public void catching(Throwable ex) { - this.error(ex.getLocalizedMessage()); - LOGGER.catching(ex); - } - - public void info(String message) { - this.log(Level.INFO, message); - } - - public void info(String message, Object... params) { - this.log(Level.INFO, message, params); - } - - public void warning(String message, Object... params) { - this.log(Level.WARN, message, params); - } - - public void warning(String message, Object obj, Exception ex) { - LOGGER.warn(modPref + message, obj, ex); - } - - public void error(String message) { - this.log(Level.ERROR, message); - } - - public void error(String message, Object obj, Exception ex) { - LOGGER.error(modPref + message, obj, ex); - } - - public void error(String message, Exception ex) { - LOGGER.error(modPref + message, ex); - } -} +package ru.betterend.util; + +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.LogManager; + +import ru.betterend.BetterEnd; + +public final class Logger { + + private static final org.apache.logging.log4j.Logger LOGGER = LogManager.getLogger(); + + private String modPref = "[" + BetterEnd.MOD_ID + "] "; + + private Logger() {} + + public static Logger get() { + return new Logger(); + } + + public void log(Level level, String message) { + LOGGER.log(level, modPref + message); + } + + public void log(Level level, String message, Object... params) { + LOGGER.log(level, modPref + message, params); + } + + public void debug(Object message) { + this.log(Level.DEBUG, message.toString()); + } + + public void debug(Object message, Object... params) { + this.log(Level.DEBUG, message.toString(), params); + } + + public void catching(Throwable ex) { + this.error(ex.getLocalizedMessage()); + LOGGER.catching(ex); + } + + public void info(String message) { + this.log(Level.INFO, message); + } + + public void info(String message, Object... params) { + this.log(Level.INFO, message, params); + } + + public void warning(String message, Object... params) { + this.log(Level.WARN, message, params); + } + + public void warning(String message, Object obj, Exception ex) { + LOGGER.warn(modPref + message, obj, ex); + } + + public void error(String message) { + this.log(Level.ERROR, message); + } + + public void error(String message, Object obj, Exception ex) { + LOGGER.error(modPref + message, obj, ex); + } + + public void error(String message, Exception ex) { + LOGGER.error(modPref + message, ex); + } +} diff --git a/src/main/resources/assets/betterend/blockstates/end_portal_block.json b/src/main/resources/assets/betterend/blockstates/end_portal_block.json index c6443f19..439c2b9d 100644 --- a/src/main/resources/assets/betterend/blockstates/end_portal_block.json +++ b/src/main/resources/assets/betterend/blockstates/end_portal_block.json @@ -1,10 +1,10 @@ -{ - "variants": { - "axis=x": { - "model": "betterend:block/end_portal_ax" - }, - "axis=z": { - "model": "betterend:block/end_portal_az" - } - } +{ + "variants": { + "axis=x": { + "model": "betterend:block/end_portal_ax" + }, + "axis=z": { + "model": "betterend:block/end_portal_az" + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/blockstates/eternal_pedestal.json b/src/main/resources/assets/betterend/blockstates/eternal_pedestal.json index 017af6e2..7e98f449 100644 --- a/src/main/resources/assets/betterend/blockstates/eternal_pedestal.json +++ b/src/main/resources/assets/betterend/blockstates/eternal_pedestal.json @@ -1,108 +1,108 @@ -{ - "variants": { - "state=default,active=false": [ - { - "model": "betterend:block/eternal_pedestal_default_1" - }, - { - "model": "betterend:block/eternal_pedestal_default_2" - }, - { - "model": "betterend:block/eternal_pedestal_default_3" - }, - { - "model": "betterend:block/eternal_pedestal_default_4" - }, - { - "model": "betterend:block/eternal_pedestal_default_5" - }, - { - "model": "betterend:block/eternal_pedestal_default_6" - }, - { - "model": "betterend:block/eternal_pedestal_default_7" - } - ], - "state=default,active=true": [ - { - "model": "betterend:block/eternal_pedestal_default_active_1" - }, - { - "model": "betterend:block/eternal_pedestal_default_active_2" - }, - { - "model": "betterend:block/eternal_pedestal_default_active_3" - }, - { - "model": "betterend:block/eternal_pedestal_default_active_4" - }, - { - "model": "betterend:block/eternal_pedestal_default_active_5" - }, - { - "model": "betterend:block/eternal_pedestal_default_active_6" - }, - { - "model": "betterend:block/eternal_pedestal_default_active_7" - } - ], - "state=pedestal_top,active=false": [ - { - "model": "betterend:block/eternal_pedestal_top_1" - }, - { - "model": "betterend:block/eternal_pedestal_top_2" - }, - { - "model": "betterend:block/eternal_pedestal_top_3" - }, - { - "model": "betterend:block/eternal_pedestal_top_4" - }, - { - "model": "betterend:block/eternal_pedestal_top_5" - }, - { - "model": "betterend:block/eternal_pedestal_top_6" - }, - { - "model": "betterend:block/eternal_pedestal_top_7" - } - ], - "state=pedestal_top,active=true": [ - { - "model": "betterend:block/eternal_pedestal_top_active_1" - }, - { - "model": "betterend:block/eternal_pedestal_top_active_2" - }, - { - "model": "betterend:block/eternal_pedestal_top_active_3" - }, - { - "model": "betterend:block/eternal_pedestal_top_active_4" - }, - { - "model": "betterend:block/eternal_pedestal_top_active_5" - }, - { - "model": "betterend:block/eternal_pedestal_top_active_6" - }, - { - "model": "betterend:block/eternal_pedestal_top_active_7" - } - ], - "state=column": { - "model": "betterend:block/eternal_pedestal_column" - }, - "state=column_top": { - "model": "betterend:block/eternal_pedestal_column_top" - }, - "state=bottom": { - "model": "betterend:block/eternal_pedestal_bottom" - }, - "state=pillar": { - "model": "betterend:block/eternal_pedestal_pillar" - } - } +{ + "variants": { + "state=default,active=false": [ + { + "model": "betterend:block/eternal_pedestal_default_1" + }, + { + "model": "betterend:block/eternal_pedestal_default_2" + }, + { + "model": "betterend:block/eternal_pedestal_default_3" + }, + { + "model": "betterend:block/eternal_pedestal_default_4" + }, + { + "model": "betterend:block/eternal_pedestal_default_5" + }, + { + "model": "betterend:block/eternal_pedestal_default_6" + }, + { + "model": "betterend:block/eternal_pedestal_default_7" + } + ], + "state=default,active=true": [ + { + "model": "betterend:block/eternal_pedestal_default_active_1" + }, + { + "model": "betterend:block/eternal_pedestal_default_active_2" + }, + { + "model": "betterend:block/eternal_pedestal_default_active_3" + }, + { + "model": "betterend:block/eternal_pedestal_default_active_4" + }, + { + "model": "betterend:block/eternal_pedestal_default_active_5" + }, + { + "model": "betterend:block/eternal_pedestal_default_active_6" + }, + { + "model": "betterend:block/eternal_pedestal_default_active_7" + } + ], + "state=pedestal_top,active=false": [ + { + "model": "betterend:block/eternal_pedestal_top_1" + }, + { + "model": "betterend:block/eternal_pedestal_top_2" + }, + { + "model": "betterend:block/eternal_pedestal_top_3" + }, + { + "model": "betterend:block/eternal_pedestal_top_4" + }, + { + "model": "betterend:block/eternal_pedestal_top_5" + }, + { + "model": "betterend:block/eternal_pedestal_top_6" + }, + { + "model": "betterend:block/eternal_pedestal_top_7" + } + ], + "state=pedestal_top,active=true": [ + { + "model": "betterend:block/eternal_pedestal_top_active_1" + }, + { + "model": "betterend:block/eternal_pedestal_top_active_2" + }, + { + "model": "betterend:block/eternal_pedestal_top_active_3" + }, + { + "model": "betterend:block/eternal_pedestal_top_active_4" + }, + { + "model": "betterend:block/eternal_pedestal_top_active_5" + }, + { + "model": "betterend:block/eternal_pedestal_top_active_6" + }, + { + "model": "betterend:block/eternal_pedestal_top_active_7" + } + ], + "state=column": { + "model": "betterend:block/eternal_pedestal_column" + }, + "state=column_top": { + "model": "betterend:block/eternal_pedestal_column_top" + }, + "state=bottom": { + "model": "betterend:block/eternal_pedestal_bottom" + }, + "state=pillar": { + "model": "betterend:block/eternal_pedestal_pillar" + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/blockstates/flavolite_runed.json b/src/main/resources/assets/betterend/blockstates/flavolite_runed.json index eb343bad..cb846fbb 100644 --- a/src/main/resources/assets/betterend/blockstates/flavolite_runed.json +++ b/src/main/resources/assets/betterend/blockstates/flavolite_runed.json @@ -1,446 +1,446 @@ -{ - "variants": { - "active=false": [ - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 90, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 90, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 90, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 180, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 180, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 180, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 270, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 270, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 270, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 90, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 90, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 90, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 180, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 180, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 180, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 270, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 270, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 270, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 90, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 90, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 90, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 180, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 180, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 180, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 270, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 270, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 270, - "y": 270 - } - ], - "active=true": [ - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 90, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 90, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 90, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 180, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 180, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 180, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 270, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 270, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 270, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 90, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 90, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 90, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 180, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 180, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 180, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 270, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 270, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 270, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 90, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 90, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 90, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 180, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 180, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 180, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 270, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 270, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 270, - "y": 270 - } - ] - } +{ + "variants": { + "active=false": [ + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 270, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 270, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 270, + "y": 270 + } + ], + "active=true": [ + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 270, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 270, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 270, + "y": 270 + } + ] + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/blockstates/flavolite_runed_eternal.json b/src/main/resources/assets/betterend/blockstates/flavolite_runed_eternal.json index eb343bad..cb846fbb 100644 --- a/src/main/resources/assets/betterend/blockstates/flavolite_runed_eternal.json +++ b/src/main/resources/assets/betterend/blockstates/flavolite_runed_eternal.json @@ -1,446 +1,446 @@ -{ - "variants": { - "active=false": [ - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 90, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 90, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 90, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 180, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 180, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 180, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 270, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 270, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_1", - "uvlock": true, - "x": 270, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 90, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 90, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 90, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 180, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 180, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 180, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 270, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 270, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_2", - "uvlock": true, - "x": 270, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 90, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 90, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 90, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 180, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 180, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 180, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 270, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 270, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_3", - "uvlock": true, - "x": 270, - "y": 270 - } - ], - "active=true": [ - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 90, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 90, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 90, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 180, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 180, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 180, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 270, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 270, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_1", - "uvlock": true, - "x": 270, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 90, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 90, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 90, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 180, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 180, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 180, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 270, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 270, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_2", - "uvlock": true, - "x": 270, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 90, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 90, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 90, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 180, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 180, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 180, - "y": 270 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 270, - "y": 90 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 270, - "y": 180 - }, - { - "model": "betterend:block/flavolite_runed_active_3", - "uvlock": true, - "x": 270, - "y": 270 - } - ] - } +{ + "variants": { + "active=false": [ + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_1", + "uvlock": true, + "x": 270, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_2", + "uvlock": true, + "x": 270, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_3", + "uvlock": true, + "x": 270, + "y": 270 + } + ], + "active=true": [ + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_1", + "uvlock": true, + "x": 270, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_2", + "uvlock": true, + "x": 270, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 90, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 90, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 90, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 180, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 180, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 180, + "y": 270 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 270, + "y": 90 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 270, + "y": 180 + }, + { + "model": "betterend:block/flavolite_runed_active_3", + "uvlock": true, + "x": 270, + "y": 270 + } + ] + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/blockstates/infusion_pedestal.json b/src/main/resources/assets/betterend/blockstates/infusion_pedestal.json index 361a4d38..65c3758c 100644 --- a/src/main/resources/assets/betterend/blockstates/infusion_pedestal.json +++ b/src/main/resources/assets/betterend/blockstates/infusion_pedestal.json @@ -1,22 +1,22 @@ -{ - "variants": { - "state=default": { - "model": "betterend:block/infusion_pedestal_default" - }, - "state=pedestal_top": { - "model": "betterend:block/infusion_pedestal_top" - }, - "state=column": { - "model": "betterend:block/infusion_pedestal_column" - }, - "state=column_top": { - "model": "betterend:block/infusion_pedestal_column_top" - }, - "state=bottom": { - "model": "betterend:block/infusion_pedestal_bottom" - }, - "state=pillar": { - "model": "betterend:block/infusion_pedestal_pillar" - } - } +{ + "variants": { + "state=default": { + "model": "betterend:block/infusion_pedestal_default" + }, + "state=pedestal_top": { + "model": "betterend:block/infusion_pedestal_top" + }, + "state=column": { + "model": "betterend:block/infusion_pedestal_column" + }, + "state=column_top": { + "model": "betterend:block/infusion_pedestal_column_top" + }, + "state=bottom": { + "model": "betterend:block/infusion_pedestal_bottom" + }, + "state=pillar": { + "model": "betterend:block/infusion_pedestal_pillar" + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/blockstates/purpur_pedestal.json b/src/main/resources/assets/betterend/blockstates/purpur_pedestal.json index b66867fa..979fc1b9 100644 --- a/src/main/resources/assets/betterend/blockstates/purpur_pedestal.json +++ b/src/main/resources/assets/betterend/blockstates/purpur_pedestal.json @@ -1,22 +1,22 @@ -{ - "variants": { - "state=default": { - "model": "betterend:block/purpur_pedestal_default" - }, - "state=column": { - "model": "betterend:block/purpur_pedestal_column" - }, - "state=column_top": { - "model": "betterend:block/purpur_pedestal_column_top" - }, - "state=pedestal_top": { - "model": "betterend:block/purpur_pedestal_top" - }, - "state=bottom": { - "model": "betterend:block/purpur_pedestal_bottom" - }, - "state=pillar": { - "model": "betterend:block/purpur_pedestal_pillar" - } - } +{ + "variants": { + "state=default": { + "model": "betterend:block/purpur_pedestal_default" + }, + "state=column": { + "model": "betterend:block/purpur_pedestal_column" + }, + "state=column_top": { + "model": "betterend:block/purpur_pedestal_column_top" + }, + "state=pedestal_top": { + "model": "betterend:block/purpur_pedestal_top" + }, + "state=bottom": { + "model": "betterend:block/purpur_pedestal_bottom" + }, + "state=pillar": { + "model": "betterend:block/purpur_pedestal_pillar" + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/blockstates/quartz_pedestal.json b/src/main/resources/assets/betterend/blockstates/quartz_pedestal.json index 9dce75da..9f6590ca 100644 --- a/src/main/resources/assets/betterend/blockstates/quartz_pedestal.json +++ b/src/main/resources/assets/betterend/blockstates/quartz_pedestal.json @@ -1,22 +1,22 @@ -{ - "variants": { - "state=default": { - "model": "betterend:block/quartz_pedestal_default" - }, - "state=column": { - "model": "betterend:block/quartz_pedestal_column" - }, - "state=column_top": { - "model": "betterend:block/quartz_pedestal_column_top" - }, - "state=pedestal_top": { - "model": "betterend:block/quartz_pedestal_top" - }, - "state=bottom": { - "model": "betterend:block/quartz_pedestal_bottom" - }, - "state=pillar": { - "model": "betterend:block/quartz_pedestal_pillar" - } - } +{ + "variants": { + "state=default": { + "model": "betterend:block/quartz_pedestal_default" + }, + "state=column": { + "model": "betterend:block/quartz_pedestal_column" + }, + "state=column_top": { + "model": "betterend:block/quartz_pedestal_column_top" + }, + "state=pedestal_top": { + "model": "betterend:block/quartz_pedestal_top" + }, + "state=bottom": { + "model": "betterend:block/quartz_pedestal_bottom" + }, + "state=pillar": { + "model": "betterend:block/quartz_pedestal_pillar" + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/blockstates/violecite.json b/src/main/resources/assets/betterend/blockstates/violecite.json index e751d3fd..fd94b247 100644 --- a/src/main/resources/assets/betterend/blockstates/violecite.json +++ b/src/main/resources/assets/betterend/blockstates/violecite.json @@ -1,7 +1,7 @@ -{ - "variants": { - "": { - "model": "betterend:block/violecite" - } - } -} +{ + "variants": { + "": { + "model": "betterend:block/violecite" + } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/violecite_bricks.json b/src/main/resources/assets/betterend/blockstates/violecite_bricks.json index 0d87306b..a9d9704f 100644 --- a/src/main/resources/assets/betterend/blockstates/violecite_bricks.json +++ b/src/main/resources/assets/betterend/blockstates/violecite_bricks.json @@ -1,7 +1,7 @@ -{ - "variants": { - "": { - "model": "betterend:block/violecite_bricks" - } - } -} +{ + "variants": { + "": { + "model": "betterend:block/violecite_bricks" + } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/violecite_bricks_slab.json b/src/main/resources/assets/betterend/blockstates/violecite_bricks_slab.json index 6565493f..e677d7d4 100644 --- a/src/main/resources/assets/betterend/blockstates/violecite_bricks_slab.json +++ b/src/main/resources/assets/betterend/blockstates/violecite_bricks_slab.json @@ -1,15 +1,15 @@ -{ - "variants": { - "type=bottom": { - "model": "betterend:block/violecite_bricks_half_slab" - }, - "type=double": { - "model": "betterend:block/violecite_bricks" - }, - "type=top": { - "model": "betterend:block/violecite_bricks_half_slab", - "uvlock": true, - "x": 180 - } - } -} +{ + "variants": { + "type=bottom": { + "model": "betterend:block/violecite_bricks_half_slab" + }, + "type=double": { + "model": "betterend:block/violecite_bricks" + }, + "type=top": { + "model": "betterend:block/violecite_bricks_half_slab", + "uvlock": true, + "x": 180 + } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/violecite_bricks_stairs.json b/src/main/resources/assets/betterend/blockstates/violecite_bricks_stairs.json index 57f46dfe..b528feb8 100644 --- a/src/main/resources/assets/betterend/blockstates/violecite_bricks_stairs.json +++ b/src/main/resources/assets/betterend/blockstates/violecite_bricks_stairs.json @@ -1,209 +1,209 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "betterend:block/violecite_bricks_inner_stairs", - "uvlock": true, - "y": 270 - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "betterend:block/violecite_bricks_inner_stairs" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "betterend:block/violecite_bricks_outer_stairs", - "uvlock": true, - "y": 270 - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "betterend:block/violecite_bricks_outer_stairs" - }, - "facing=east,half=bottom,shape=straight": { - "model": "betterend:block/violecite_bricks_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "betterend:block/violecite_bricks_inner_stairs", - "uvlock": true, - "x": 180 - }, - "facing=east,half=top,shape=inner_right": { - "model": "betterend:block/violecite_bricks_inner_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=east,half=top,shape=outer_left": { - "model": "betterend:block/violecite_bricks_outer_stairs", - "uvlock": true, - "x": 180 - }, - "facing=east,half=top,shape=outer_right": { - "model": "betterend:block/violecite_bricks_outer_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=east,half=top,shape=straight": { - "model": "betterend:block/violecite_bricks_stairs", - "uvlock": true, - "x": 180 - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "betterend:block/violecite_bricks_inner_stairs", - "uvlock": true, - "y": 180 - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "betterend:block/violecite_bricks_inner_stairs", - "uvlock": true, - "y": 270 - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "betterend:block/violecite_bricks_outer_stairs", - "uvlock": true, - "y": 180 - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "betterend:block/violecite_bricks_outer_stairs", - "uvlock": true, - "y": 270 - }, - "facing=north,half=bottom,shape=straight": { - "model": "betterend:block/violecite_bricks_stairs", - "uvlock": true, - "y": 270 - }, - "facing=north,half=top,shape=inner_left": { - "model": "betterend:block/violecite_bricks_inner_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=north,half=top,shape=inner_right": { - "model": "betterend:block/violecite_bricks_inner_stairs", - "uvlock": true, - "x": 180 - }, - "facing=north,half=top,shape=outer_left": { - "model": "betterend:block/violecite_bricks_outer_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=north,half=top,shape=outer_right": { - "model": "betterend:block/violecite_bricks_outer_stairs", - "uvlock": true, - "x": 180 - }, - "facing=north,half=top,shape=straight": { - "model": "betterend:block/violecite_bricks_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "betterend:block/violecite_bricks_inner_stairs" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "betterend:block/violecite_bricks_inner_stairs", - "uvlock": true, - "y": 90 - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "betterend:block/violecite_bricks_outer_stairs" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "betterend:block/violecite_bricks_outer_stairs", - "uvlock": true, - "y": 90 - }, - "facing=south,half=bottom,shape=straight": { - "model": "betterend:block/violecite_bricks_stairs", - "uvlock": true, - "y": 90 - }, - "facing=south,half=top,shape=inner_left": { - "model": "betterend:block/violecite_bricks_inner_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=south,half=top,shape=inner_right": { - "model": "betterend:block/violecite_bricks_inner_stairs", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=south,half=top,shape=outer_left": { - "model": "betterend:block/violecite_bricks_outer_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=south,half=top,shape=outer_right": { - "model": "betterend:block/violecite_bricks_outer_stairs", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=south,half=top,shape=straight": { - "model": "betterend:block/violecite_bricks_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "betterend:block/violecite_bricks_inner_stairs", - "uvlock": true, - "y": 90 - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "betterend:block/violecite_bricks_inner_stairs", - "uvlock": true, - "y": 180 - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "betterend:block/violecite_bricks_outer_stairs", - "uvlock": true, - "y": 90 - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "betterend:block/violecite_bricks_outer_stairs", - "uvlock": true, - "y": 180 - }, - "facing=west,half=bottom,shape=straight": { - "model": "betterend:block/violecite_bricks_stairs", - "uvlock": true, - "y": 180 - }, - "facing=west,half=top,shape=inner_left": { - "model": "betterend:block/violecite_bricks_inner_stairs", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=west,half=top,shape=inner_right": { - "model": "betterend:block/violecite_bricks_inner_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=west,half=top,shape=outer_left": { - "model": "betterend:block/violecite_bricks_outer_stairs", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=west,half=top,shape=outer_right": { - "model": "betterend:block/violecite_bricks_outer_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=west,half=top,shape=straight": { - "model": "betterend:block/violecite_bricks_stairs", - "uvlock": true, - "x": 180, - "y": 180 - } - } -} +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "betterend:block/violecite_bricks_inner_stairs", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "betterend:block/violecite_bricks_inner_stairs" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "betterend:block/violecite_bricks_outer_stairs", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "betterend:block/violecite_bricks_outer_stairs" + }, + "facing=east,half=bottom,shape=straight": { + "model": "betterend:block/violecite_bricks_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "betterend:block/violecite_bricks_inner_stairs", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "betterend:block/violecite_bricks_inner_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "betterend:block/violecite_bricks_outer_stairs", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "betterend:block/violecite_bricks_outer_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "betterend:block/violecite_bricks_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "betterend:block/violecite_bricks_inner_stairs", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "betterend:block/violecite_bricks_inner_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "betterend:block/violecite_bricks_outer_stairs", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "betterend:block/violecite_bricks_outer_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "betterend:block/violecite_bricks_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "betterend:block/violecite_bricks_inner_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "betterend:block/violecite_bricks_inner_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "betterend:block/violecite_bricks_outer_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "betterend:block/violecite_bricks_outer_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "betterend:block/violecite_bricks_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "betterend:block/violecite_bricks_inner_stairs" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "betterend:block/violecite_bricks_inner_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "betterend:block/violecite_bricks_outer_stairs" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "betterend:block/violecite_bricks_outer_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "betterend:block/violecite_bricks_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "betterend:block/violecite_bricks_inner_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "betterend:block/violecite_bricks_inner_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "betterend:block/violecite_bricks_outer_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "betterend:block/violecite_bricks_outer_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "betterend:block/violecite_bricks_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "betterend:block/violecite_bricks_inner_stairs", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "betterend:block/violecite_bricks_inner_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "betterend:block/violecite_bricks_outer_stairs", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "betterend:block/violecite_bricks_outer_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "betterend:block/violecite_bricks_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "betterend:block/violecite_bricks_inner_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "betterend:block/violecite_bricks_inner_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "betterend:block/violecite_bricks_outer_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "betterend:block/violecite_bricks_outer_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "betterend:block/violecite_bricks_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/violecite_bricks_wall.json b/src/main/resources/assets/betterend/blockstates/violecite_bricks_wall.json index 26bc65d2..fb421cc9 100644 --- a/src/main/resources/assets/betterend/blockstates/violecite_bricks_wall.json +++ b/src/main/resources/assets/betterend/blockstates/violecite_bricks_wall.json @@ -1,90 +1,90 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "betterend:block/violecite_bricks_wall_post" - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "betterend:block/violecite_bricks_wall_side", - "uvlock": true - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "betterend:block/violecite_bricks_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "betterend:block/violecite_bricks_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "betterend:block/violecite_bricks_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "betterend:block/violecite_bricks_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "betterend:block/violecite_bricks_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "betterend:block/violecite_bricks_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "betterend:block/violecite_bricks_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "betterend:block/violecite_bricks_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "betterend:block/violecite_bricks_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "betterend:block/violecite_bricks_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "betterend:block/violecite_bricks_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "betterend:block/violecite_bricks_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "betterend:block/violecite_bricks_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "betterend:block/violecite_bricks_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "betterend:block/violecite_bricks_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "betterend:block/violecite_bricks_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} diff --git a/src/main/resources/assets/betterend/blockstates/violecite_button.json b/src/main/resources/assets/betterend/blockstates/violecite_button.json index 4671d482..e39bf88d 100644 --- a/src/main/resources/assets/betterend/blockstates/violecite_button.json +++ b/src/main/resources/assets/betterend/blockstates/violecite_button.json @@ -1,118 +1,118 @@ -{ - "variants": { - "face=ceiling,facing=east,powered=false": { - "model": "betterend:block/violecite_button", - "x": 180, - "y": 270 - }, - "face=ceiling,facing=east,powered=true": { - "model": "betterend:block/violecite_button_pressed", - "x": 180, - "y": 270 - }, - "face=ceiling,facing=north,powered=false": { - "model": "betterend:block/violecite_button", - "x": 180, - "y": 180 - }, - "face=ceiling,facing=north,powered=true": { - "model": "betterend:block/violecite_button_pressed", - "x": 180, - "y": 180 - }, - "face=ceiling,facing=south,powered=false": { - "model": "betterend:block/violecite_button", - "x": 180 - }, - "face=ceiling,facing=south,powered=true": { - "model": "betterend:block/violecite_button_pressed", - "x": 180 - }, - "face=ceiling,facing=west,powered=false": { - "model": "betterend:block/violecite_button", - "x": 180, - "y": 90 - }, - "face=ceiling,facing=west,powered=true": { - "model": "betterend:block/violecite_button_pressed", - "x": 180, - "y": 90 - }, - "face=floor,facing=east,powered=false": { - "model": "betterend:block/violecite_button", - "y": 90 - }, - "face=floor,facing=east,powered=true": { - "model": "betterend:block/violecite_button_pressed", - "y": 90 - }, - "face=floor,facing=north,powered=false": { - "model": "betterend:block/violecite_button" - }, - "face=floor,facing=north,powered=true": { - "model": "betterend:block/violecite_button_pressed" - }, - "face=floor,facing=south,powered=false": { - "model": "betterend:block/violecite_button", - "y": 180 - }, - "face=floor,facing=south,powered=true": { - "model": "betterend:block/violecite_button_pressed", - "y": 180 - }, - "face=floor,facing=west,powered=false": { - "model": "betterend:block/violecite_button", - "y": 270 - }, - "face=floor,facing=west,powered=true": { - "model": "betterend:block/violecite_button_pressed", - "y": 270 - }, - "face=wall,facing=east,powered=false": { - "model": "betterend:block/violecite_button", - "uvlock": true, - "x": 90, - "y": 90 - }, - "face=wall,facing=east,powered=true": { - "model": "betterend:block/violecite_button_pressed", - "uvlock": true, - "x": 90, - "y": 90 - }, - "face=wall,facing=north,powered=false": { - "model": "betterend:block/violecite_button", - "uvlock": true, - "x": 90 - }, - "face=wall,facing=north,powered=true": { - "model": "betterend:block/violecite_button_pressed", - "uvlock": true, - "x": 90 - }, - "face=wall,facing=south,powered=false": { - "model": "betterend:block/violecite_button", - "uvlock": true, - "x": 90, - "y": 180 - }, - "face=wall,facing=south,powered=true": { - "model": "betterend:block/violecite_button_pressed", - "uvlock": true, - "x": 90, - "y": 180 - }, - "face=wall,facing=west,powered=false": { - "model": "betterend:block/violecite_button", - "uvlock": true, - "x": 90, - "y": 270 - }, - "face=wall,facing=west,powered=true": { - "model": "betterend:block/violecite_button_pressed", - "uvlock": true, - "x": 90, - "y": 270 - } - } -} +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "betterend:block/violecite_button", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=east,powered=true": { + "model": "betterend:block/violecite_button_pressed", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=north,powered=false": { + "model": "betterend:block/violecite_button", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "betterend:block/violecite_button_pressed", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "betterend:block/violecite_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "betterend:block/violecite_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "betterend:block/violecite_button", + "x": 180, + "y": 90 + }, + "face=ceiling,facing=west,powered=true": { + "model": "betterend:block/violecite_button_pressed", + "x": 180, + "y": 90 + }, + "face=floor,facing=east,powered=false": { + "model": "betterend:block/violecite_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "betterend:block/violecite_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "betterend:block/violecite_button" + }, + "face=floor,facing=north,powered=true": { + "model": "betterend:block/violecite_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "betterend:block/violecite_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "betterend:block/violecite_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "betterend:block/violecite_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "betterend:block/violecite_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "betterend:block/violecite_button", + "uvlock": true, + "x": 90, + "y": 90 + }, + "face=wall,facing=east,powered=true": { + "model": "betterend:block/violecite_button_pressed", + "uvlock": true, + "x": 90, + "y": 90 + }, + "face=wall,facing=north,powered=false": { + "model": "betterend:block/violecite_button", + "uvlock": true, + "x": 90 + }, + "face=wall,facing=north,powered=true": { + "model": "betterend:block/violecite_button_pressed", + "uvlock": true, + "x": 90 + }, + "face=wall,facing=south,powered=false": { + "model": "betterend:block/violecite_button", + "uvlock": true, + "x": 90, + "y": 180 + }, + "face=wall,facing=south,powered=true": { + "model": "betterend:block/violecite_button_pressed", + "uvlock": true, + "x": 90, + "y": 180 + }, + "face=wall,facing=west,powered=false": { + "model": "betterend:block/violecite_button", + "uvlock": true, + "x": 90, + "y": 270 + }, + "face=wall,facing=west,powered=true": { + "model": "betterend:block/violecite_button_pressed", + "uvlock": true, + "x": 90, + "y": 270 + } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/violecite_pillar.json b/src/main/resources/assets/betterend/blockstates/violecite_pillar.json index 122c20b5..90618711 100644 --- a/src/main/resources/assets/betterend/blockstates/violecite_pillar.json +++ b/src/main/resources/assets/betterend/blockstates/violecite_pillar.json @@ -1,7 +1,7 @@ -{ - "variants": { - "axis=x": { "model": "betterend:block/violecite_pillar", "x": 90, "y": 270 }, - "axis=y": { "model": "betterend:block/violecite_pillar" }, - "axis=z": { "model": "betterend:block/violecite_pillar", "x": 90 } - } -} +{ + "variants": { + "axis=x": { "model": "betterend:block/violecite_pillar", "x": 90, "y": 270 }, + "axis=y": { "model": "betterend:block/violecite_pillar" }, + "axis=z": { "model": "betterend:block/violecite_pillar", "x": 90 } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/violecite_plate.json b/src/main/resources/assets/betterend/blockstates/violecite_plate.json index 7adc867f..83aba147 100644 --- a/src/main/resources/assets/betterend/blockstates/violecite_plate.json +++ b/src/main/resources/assets/betterend/blockstates/violecite_plate.json @@ -1,10 +1,10 @@ -{ - "variants": { - "powered=false": { - "model": "betterend:block/violecite_pressure_plate_up" - }, - "powered=true": { - "model": "betterend:block/violecite_pressure_plate_down" - } - } -} +{ + "variants": { + "powered=false": { + "model": "betterend:block/violecite_pressure_plate_up" + }, + "powered=true": { + "model": "betterend:block/violecite_pressure_plate_down" + } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/violecite_slab.json b/src/main/resources/assets/betterend/blockstates/violecite_slab.json index 1e4a0b4c..d27cf448 100644 --- a/src/main/resources/assets/betterend/blockstates/violecite_slab.json +++ b/src/main/resources/assets/betterend/blockstates/violecite_slab.json @@ -1,15 +1,15 @@ -{ - "variants": { - "type=bottom": { - "model": "betterend:block/violecite_half_slab" - }, - "type=double": { - "model": "betterend:block/violecite" - }, - "type=top": { - "model": "betterend:block/violecite_half_slab", - "uvlock": true, - "x": 180 - } - } -} +{ + "variants": { + "type=bottom": { + "model": "betterend:block/violecite_half_slab" + }, + "type=double": { + "model": "betterend:block/violecite" + }, + "type=top": { + "model": "betterend:block/violecite_half_slab", + "uvlock": true, + "x": 180 + } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/violecite_small_tiles.json b/src/main/resources/assets/betterend/blockstates/violecite_small_tiles.json index 711b5b92..6f7d8561 100644 --- a/src/main/resources/assets/betterend/blockstates/violecite_small_tiles.json +++ b/src/main/resources/assets/betterend/blockstates/violecite_small_tiles.json @@ -1,7 +1,7 @@ -{ - "variants": { - "": { - "model": "betterend:block/violecite_small_tiles" - } - } -} +{ + "variants": { + "": { + "model": "betterend:block/violecite_small_tiles" + } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/violecite_stairs.json b/src/main/resources/assets/betterend/blockstates/violecite_stairs.json index 3231569f..bd76aa03 100644 --- a/src/main/resources/assets/betterend/blockstates/violecite_stairs.json +++ b/src/main/resources/assets/betterend/blockstates/violecite_stairs.json @@ -1,209 +1,209 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "betterend:block/violecite_inner_stairs", - "uvlock": true, - "y": 270 - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "betterend:block/violecite_inner_stairs" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "betterend:block/violecite_outer_stairs", - "uvlock": true, - "y": 270 - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "betterend:block/violecite_outer_stairs" - }, - "facing=east,half=bottom,shape=straight": { - "model": "betterend:block/violecite_stairs" - }, - "facing=east,half=top,shape=inner_left": { - "model": "betterend:block/violecite_inner_stairs", - "uvlock": true, - "x": 180 - }, - "facing=east,half=top,shape=inner_right": { - "model": "betterend:block/violecite_inner_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=east,half=top,shape=outer_left": { - "model": "betterend:block/violecite_outer_stairs", - "uvlock": true, - "x": 180 - }, - "facing=east,half=top,shape=outer_right": { - "model": "betterend:block/violecite_outer_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=east,half=top,shape=straight": { - "model": "betterend:block/violecite_stairs", - "uvlock": true, - "x": 180 - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "betterend:block/violecite_inner_stairs", - "uvlock": true, - "y": 180 - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "betterend:block/violecite_inner_stairs", - "uvlock": true, - "y": 270 - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "betterend:block/violecite_outer_stairs", - "uvlock": true, - "y": 180 - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "betterend:block/violecite_outer_stairs", - "uvlock": true, - "y": 270 - }, - "facing=north,half=bottom,shape=straight": { - "model": "betterend:block/violecite_stairs", - "uvlock": true, - "y": 270 - }, - "facing=north,half=top,shape=inner_left": { - "model": "betterend:block/violecite_inner_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=north,half=top,shape=inner_right": { - "model": "betterend:block/violecite_inner_stairs", - "uvlock": true, - "x": 180 - }, - "facing=north,half=top,shape=outer_left": { - "model": "betterend:block/violecite_outer_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=north,half=top,shape=outer_right": { - "model": "betterend:block/violecite_outer_stairs", - "uvlock": true, - "x": 180 - }, - "facing=north,half=top,shape=straight": { - "model": "betterend:block/violecite_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "betterend:block/violecite_inner_stairs" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "betterend:block/violecite_inner_stairs", - "uvlock": true, - "y": 90 - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "betterend:block/violecite_outer_stairs" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "betterend:block/violecite_outer_stairs", - "uvlock": true, - "y": 90 - }, - "facing=south,half=bottom,shape=straight": { - "model": "betterend:block/violecite_stairs", - "uvlock": true, - "y": 90 - }, - "facing=south,half=top,shape=inner_left": { - "model": "betterend:block/violecite_inner_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=south,half=top,shape=inner_right": { - "model": "betterend:block/violecite_inner_stairs", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=south,half=top,shape=outer_left": { - "model": "betterend:block/violecite_outer_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=south,half=top,shape=outer_right": { - "model": "betterend:block/violecite_outer_stairs", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=south,half=top,shape=straight": { - "model": "betterend:block/violecite_stairs", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "betterend:block/violecite_inner_stairs", - "uvlock": true, - "y": 90 - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "betterend:block/violecite_inner_stairs", - "uvlock": true, - "y": 180 - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "betterend:block/violecite_outer_stairs", - "uvlock": true, - "y": 90 - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "betterend:block/violecite_outer_stairs", - "uvlock": true, - "y": 180 - }, - "facing=west,half=bottom,shape=straight": { - "model": "betterend:block/violecite_stairs", - "uvlock": true, - "y": 180 - }, - "facing=west,half=top,shape=inner_left": { - "model": "betterend:block/violecite_inner_stairs", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=west,half=top,shape=inner_right": { - "model": "betterend:block/violecite_inner_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=west,half=top,shape=outer_left": { - "model": "betterend:block/violecite_outer_stairs", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=west,half=top,shape=outer_right": { - "model": "betterend:block/violecite_outer_stairs", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=west,half=top,shape=straight": { - "model": "betterend:block/violecite_stairs", - "uvlock": true, - "x": 180, - "y": 180 - } - } -} +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "betterend:block/violecite_inner_stairs", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "betterend:block/violecite_inner_stairs" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "betterend:block/violecite_outer_stairs", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "betterend:block/violecite_outer_stairs" + }, + "facing=east,half=bottom,shape=straight": { + "model": "betterend:block/violecite_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "betterend:block/violecite_inner_stairs", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "betterend:block/violecite_inner_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "betterend:block/violecite_outer_stairs", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "betterend:block/violecite_outer_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "betterend:block/violecite_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "betterend:block/violecite_inner_stairs", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "betterend:block/violecite_inner_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "betterend:block/violecite_outer_stairs", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "betterend:block/violecite_outer_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "betterend:block/violecite_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "betterend:block/violecite_inner_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "betterend:block/violecite_inner_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "betterend:block/violecite_outer_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "betterend:block/violecite_outer_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "betterend:block/violecite_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "betterend:block/violecite_inner_stairs" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "betterend:block/violecite_inner_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "betterend:block/violecite_outer_stairs" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "betterend:block/violecite_outer_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "betterend:block/violecite_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "betterend:block/violecite_inner_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "betterend:block/violecite_inner_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "betterend:block/violecite_outer_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "betterend:block/violecite_outer_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "betterend:block/violecite_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "betterend:block/violecite_inner_stairs", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "betterend:block/violecite_inner_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "betterend:block/violecite_outer_stairs", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "betterend:block/violecite_outer_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "betterend:block/violecite_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "betterend:block/violecite_inner_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "betterend:block/violecite_inner_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "betterend:block/violecite_outer_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "betterend:block/violecite_outer_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "betterend:block/violecite_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/violecite_tile.json b/src/main/resources/assets/betterend/blockstates/violecite_tile.json index 43157f62..f735990c 100644 --- a/src/main/resources/assets/betterend/blockstates/violecite_tile.json +++ b/src/main/resources/assets/betterend/blockstates/violecite_tile.json @@ -1,7 +1,7 @@ -{ - "variants": { - "": { - "model": "betterend:block/violecite_tile" - } - } -} +{ + "variants": { + "": { + "model": "betterend:block/violecite_tile" + } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/violecite_wall.json b/src/main/resources/assets/betterend/blockstates/violecite_wall.json index fae6a469..afb41db1 100644 --- a/src/main/resources/assets/betterend/blockstates/violecite_wall.json +++ b/src/main/resources/assets/betterend/blockstates/violecite_wall.json @@ -1,90 +1,90 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "betterend:block/violecite_wall_post" - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "betterend:block/violecite_wall_side", - "uvlock": true - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "betterend:block/violecite_wall_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "betterend:block/violecite_wall_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "betterend:block/violecite_wall_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "betterend:block/violecite_wall_side_tall", - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "betterend:block/violecite_wall_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "betterend:block/violecite_wall_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "betterend:block/violecite_wall_side_tall", - "y": 270, - "uvlock": true - } - } - ] -} +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "betterend:block/violecite_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "betterend:block/violecite_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "betterend:block/violecite_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "betterend:block/violecite_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "betterend:block/violecite_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "betterend:block/violecite_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "betterend:block/violecite_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "betterend:block/violecite_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "betterend:block/violecite_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} diff --git a/src/main/resources/assets/betterend/lang/zh_cn.json b/src/main/resources/assets/betterend/lang/zh_cn.json index 5fd313e0..9ca78189 100644 --- a/src/main/resources/assets/betterend/lang/zh_cn.json +++ b/src/main/resources/assets/betterend/lang/zh_cn.json @@ -1,160 +1,160 @@ -{ - "itemGroup.betterend.items": "更好的末地", - - "biome.betterend.foggy_mushroomland": "雾霭蘑è‡å²›", - "biome.betterend.dust_wastelands": "尘土飞扬的è’地", - "biome.betterend.chorus_forest": "å’唱森林", - "biome.betterend.megalake": "末际湖", - - "entity.betterend.dragonfly": "蜻蜓", - "item.betterend.spawn_egg_dragonfly": "蜻蜓刷怪蛋", - - "entity.betterend.end_slime": "末地å²èޱ姆", - "item.betterend.spawn_egg_end_slime": "末地å²èŽ±å§†åˆ·æ€ªè›‹", - - "block.betterend.end_mycelium": "末地èŒä¸", - "block.betterend.end_moss": "末地苔石", - "block.betterend.endstone_dust": "末地沙", - - "block.betterend.end_mycelium_path": "末地èŒä¸å¾„", - "block.betterend.end_moss_path": "末地苔藓径", - - "block.betterend.ender_ore": "末影矿", - "block.betterend.terminite_block": "终界é“å—", - "block.betterend.aeternium_block": "太å¤åˆé‡‘å—", - "block.betterend.ender_block": "末影å—", - "block.betterend.end_stone_smelter": "末地石冶炼炉", - - "item.betterend.ender_dust": "末影粉", - "item.betterend.terminite_ingot": "终界é“é”­", - "item.betterend.aeternium_ingot": "太å¤åˆé‡‘é”­", - "item.betterend.terminite_helmet": "终界é“头盔", - "item.betterend.terminite_chestplate": "终界é“胸甲", - "item.betterend.terminite_leggings": "ç»ˆç•Œé“æŠ¤è…¿", - "item.betterend.terminite_boots": "终界é“é´å­", - "item.betterend.terminite_shovel": "终界é“锹", - "item.betterend.terminite_sword": "终界é“剑", - "item.betterend.terminite_pickaxe": "终界é“é•", - "item.betterend.terminite_axe": "ç»ˆç•Œé“æ–§", - "item.betterend.terminite_hoe": "终界é“锄", - "item.betterend.terminite_hammer": "终界é“匠锤", - "item.betterend.aeternium_helmet": "太å¤åˆé‡‘头盔", - "item.betterend.aeternium_chestplate": "太å¤åˆé‡‘胸甲", - "item.betterend.aeternium_leggings": "太å¤åˆé‡‘护腿", - "item.betterend.aeternium_boots": "太å¤åˆé‡‘é´å­", - "item.betterend.aeternium_shovel": "太å¤åˆé‡‘锹", - "item.betterend.aeternium_sword": "太å¤åˆé‡‘剑", - "item.betterend.aeternium_pickaxe": "太å¤åˆé‡‘é•", - "item.betterend.aeternium_axe": "太å¤åˆé‡‘æ–§", - "item.betterend.aeternium_hoe": "太å¤åˆé‡‘锄", - "item.betterend.aeternium_hammer": "太å¤åˆé‡‘匠锤", - "item.betterend.iron_hammer": "é“匠锤", - "item.betterend.golden_hammer": "金匠锤", - "item.betterend.diamond_hammer": "钻石匠锤", - "item.betterend.netherite_hammer": "下届åˆé‡‘匠锤", - - "effect.betterend.end_veil": "末地é¢å…·", - "enchantment.betterend.end_veil": "末地é¢å…·", - "item.minecraft.potion.effect.end_veil": "末地é¢å…·è¯æ°´", - "item.minecraft.potion.effect.long_end_veil": "末地é¢å…·è¯æ°´", - "item.minecraft.splash_potion.effect.end_veil": "喷溅型末地é¢å…·è¯æ°´", - "item.minecraft.splash_potion.effect.long_end_veil": "喷溅型末地é¢å…·è¯æ°´", - "item.minecraft.lingering_potion.effect.end_veil": "滞留型末地é¢å…·è¯æ°´", - "item.minecraft.lingering_potion.effect.long_end_veil": "滞留型末地é¢å…·è¯æ°´", - "item.minecraft.tipped_arrow.effect.end_veil": "末地é¢å…·ä¹‹ç®­", - "item.minecraft.tipped_arrow.effect.long_end_veil": "末地é¢å…·ä¹‹ç®­", - - "block.betterend.mossy_glowshroom_sapling": "苔光è‡ç§å­", - "block.betterend.mossy_glowshroom_cap": "苔光è‡èŒç›–", - "block.betterend.mossy_glowshroom_fur": "苔光è‡èŒç»’", - "block.betterend.mossy_glowshroom_hymenophore": "苔光è‡èŒè¤¶", - "block.betterend.mossy_glowshroom_bark": "苔光è‡èŒæœ¨", - "block.betterend.mossy_glowshroom_barrel": "è‹”å…‰è‡æœ¨æ¡¶", - "block.betterend.mossy_glowshroom_button": "è‹”å…‰è‡æŒ‰é’®", - "block.betterend.mossy_glowshroom_chest": "è‹”å…‰è‡æœ¨ç®±", - "block.betterend.mossy_glowshroom_crafting_table": "苔光è‡å·¥ä½œå°", - "block.betterend.mossy_glowshroom_door": "è‹”å…‰è‡æœ¨é—¨", - "block.betterend.mossy_glowshroom_fence": "è‹”å…‰è‡æœ¨æ …æ ", - "block.betterend.mossy_glowshroom_gate": "è‹”å…‰è‡æœ¨æ …æ é—¨", - "block.betterend.mossy_glowshroom_ladder": "è‹”å…‰è‡æœ¨æ¢¯", - "block.betterend.mossy_glowshroom_log": "苔光è‡åŽŸæœ¨", - "block.betterend.mossy_glowshroom_planks": "è‹”å…‰è‡æœ¨æ¿", - "block.betterend.mossy_glowshroom_plate": "苔光è‡åŽ‹åŠ›æ¿", - "block.betterend.mossy_glowshroom_sign": "苔光è‡å‘Šç¤ºç‰Œ", - "block.betterend.mossy_glowshroom_slab": "苔光è‡å°é˜¶", - "block.betterend.mossy_glowshroom_stairs": "è‹”å…‰è‡æ¥¼æ¢¯", - "block.betterend.mossy_glowshroom_stripped_bark": "去皮苔光è‡èŒæœ¨", - "block.betterend.mossy_glowshroom_stripped_log": "去皮苔光è‡åŽŸæœ¨", - "block.betterend.mossy_glowshroom_trapdoor": "è‹”å…‰è‡æ´»æ¿é—¨", - - "block.betterend.umbrella_moss": "伞状苔藓", - "block.betterend.umbrella_moss_tall": "高伞状苔藓", - "block.betterend.creeping_moss": "åŒåŒè‹”è—“", - - "block.betterend.blue_vine_seed": "è“è—¤ç§å­", - "block.betterend.blue_vine": "è“è—¤", - "block.betterend.blue_vine_lantern": "è“è—¤ç¯", - "block.betterend.blue_vine_fur": "è“è—¤èŒæ¯›", - - "block.betterend.dense_vine": "茂密藤蔓", - "block.betterend.bubble_coral": "气泡çŠç‘š", - "block.betterend.aurora_crystal": "æžå…‰æ°´æ™¶", - - "category.rei.damage.amount&dmg": "工具伤害:%s", - - "block.betterend.pythadendron_bark": "å’唱木树皮", - "block.betterend.pythadendron_barrel": "å’唱木桶", - "block.betterend.pythadendron_button": "å’唱木按钮", - "block.betterend.pythadendron_chest": "å’唱木箱å­", - "block.betterend.pythadendron_crafting_table": "å’唱木工作å°", - "block.betterend.pythadendron_door": "å’唱木门", - "block.betterend.pythadendron_fence": "å’唱木栅æ ", - "block.betterend.pythadendron_gate": "å’唱木栅æ é—¨", - "block.betterend.pythadendron_ladder": "å’唱木梯", - "block.betterend.pythadendron_log": "å’唱木原木", - "block.betterend.pythadendron_planks": "å’唱木æ¿", - "block.betterend.pythadendron_plate": "å’唱木压力æ¿", - "block.betterend.pythadendron_sign": "å’唱木告示牌", - "block.betterend.pythadendron_slab": "å’唱木å°é˜¶", - "block.betterend.pythadendron_stairs": "å’唱木楼梯", - "block.betterend.pythadendron_stripped_bark": "去皮å’唱木树皮", - "block.betterend.pythadendron_stripped_log": "去皮å’唱木原木", - "block.betterend.pythadendron_trapdoor": "å’唱木活æ¿é—¨", - - "block.betterend.chorus_nylium": "å’å”±èŒå²©", - "block.betterend.chorus_nylium_path": "å’å”±èŒå²©å¾„", - "block.betterend.chorus_grass": "å’å”±èŒè‰", - - "block.betterend.end_lily": "末地ç¡è޲", - "block.betterend.end_lily_seed": "末地ç¡è޲ç§å­", - "item.betterend.end_lily_leaf": "末地ç¡è޲å¶å­", - "item.betterend.end_lily_leaf_dried": "末地ç¡èŽ²æž¯å¶", - - "block.betterend.violecite": "紫罗兰石", - "block.betterend.violecite_bricks": "紫罗兰石砖", - "block.betterend.violecite_bricks_slab": "紫罗兰石砖å°é˜¶", - "block.betterend.violecite_bricks_stairs": "紫罗兰石砖楼梯", - "block.betterend.violecite_bricks_wall": "紫罗兰石砖墙", - "block.betterend.violecite_button": "紫罗兰石按钮", - "block.betterend.violecite_pillar": "紫罗兰石柱", - "block.betterend.violecite_plate": "紫罗兰石压力æ¿", - "block.betterend.violecite_slab": "紫罗兰石å°é˜¶", - "block.betterend.violecite_tiles": "紫罗兰石瓷砖", - "block.betterend.violecite_stairs": "紫罗兰石楼梯", - "block.betterend.violecite_polished": "磨制紫罗兰石", - "block.betterend.violecite_wall": "紫罗兰石墙", - - "block.betterend.flavolite": "香料石", - "block.betterend.flavolite_bricks": "香料石砖", - "block.betterend.flavolite_bricks_slab": "香料石砖å°é˜¶", - "block.betterend.flavolite_bricks_stairs": "香料石砖楼梯", - "block.betterend.flavolite_bricks_wall": "香料石砖墙", - "block.betterend.flavolite_button": "香料石按钮", - "block.betterend.flavolite_pillar": "香料石柱", - "block.betterend.flavolite_plate": "香料石压力æ¿", - "block.betterend.flavolite_slab": "香料石å°é˜¶", - "block.betterend.flavolite_tiles": "香料石瓷砖", - "block.betterend.flavolite_stairs": "香料石楼梯", - "block.betterend.flavolite_polished": "磨制香料石", - "block.betterend.flavolite_wall": "香料石墙" -} +{ + "itemGroup.betterend.items": "更好的末地", + + "biome.betterend.foggy_mushroomland": "雾霭蘑è‡å²›", + "biome.betterend.dust_wastelands": "尘土飞扬的è’地", + "biome.betterend.chorus_forest": "å’唱森林", + "biome.betterend.megalake": "末际湖", + + "entity.betterend.dragonfly": "蜻蜓", + "item.betterend.spawn_egg_dragonfly": "蜻蜓刷怪蛋", + + "entity.betterend.end_slime": "末地å²èޱ姆", + "item.betterend.spawn_egg_end_slime": "末地å²èŽ±å§†åˆ·æ€ªè›‹", + + "block.betterend.end_mycelium": "末地èŒä¸", + "block.betterend.end_moss": "末地苔石", + "block.betterend.endstone_dust": "末地沙", + + "block.betterend.end_mycelium_path": "末地èŒä¸å¾„", + "block.betterend.end_moss_path": "末地苔藓径", + + "block.betterend.ender_ore": "末影矿", + "block.betterend.terminite_block": "终界é“å—", + "block.betterend.aeternium_block": "太å¤åˆé‡‘å—", + "block.betterend.ender_block": "末影å—", + "block.betterend.end_stone_smelter": "末地石冶炼炉", + + "item.betterend.ender_dust": "末影粉", + "item.betterend.terminite_ingot": "终界é“é”­", + "item.betterend.aeternium_ingot": "太å¤åˆé‡‘é”­", + "item.betterend.terminite_helmet": "终界é“头盔", + "item.betterend.terminite_chestplate": "终界é“胸甲", + "item.betterend.terminite_leggings": "ç»ˆç•Œé“æŠ¤è…¿", + "item.betterend.terminite_boots": "终界é“é´å­", + "item.betterend.terminite_shovel": "终界é“锹", + "item.betterend.terminite_sword": "终界é“剑", + "item.betterend.terminite_pickaxe": "终界é“é•", + "item.betterend.terminite_axe": "ç»ˆç•Œé“æ–§", + "item.betterend.terminite_hoe": "终界é“锄", + "item.betterend.terminite_hammer": "终界é“匠锤", + "item.betterend.aeternium_helmet": "太å¤åˆé‡‘头盔", + "item.betterend.aeternium_chestplate": "太å¤åˆé‡‘胸甲", + "item.betterend.aeternium_leggings": "太å¤åˆé‡‘护腿", + "item.betterend.aeternium_boots": "太å¤åˆé‡‘é´å­", + "item.betterend.aeternium_shovel": "太å¤åˆé‡‘锹", + "item.betterend.aeternium_sword": "太å¤åˆé‡‘剑", + "item.betterend.aeternium_pickaxe": "太å¤åˆé‡‘é•", + "item.betterend.aeternium_axe": "太å¤åˆé‡‘æ–§", + "item.betterend.aeternium_hoe": "太å¤åˆé‡‘锄", + "item.betterend.aeternium_hammer": "太å¤åˆé‡‘匠锤", + "item.betterend.iron_hammer": "é“匠锤", + "item.betterend.golden_hammer": "金匠锤", + "item.betterend.diamond_hammer": "钻石匠锤", + "item.betterend.netherite_hammer": "下届åˆé‡‘匠锤", + + "effect.betterend.end_veil": "末地é¢å…·", + "enchantment.betterend.end_veil": "末地é¢å…·", + "item.minecraft.potion.effect.end_veil": "末地é¢å…·è¯æ°´", + "item.minecraft.potion.effect.long_end_veil": "末地é¢å…·è¯æ°´", + "item.minecraft.splash_potion.effect.end_veil": "喷溅型末地é¢å…·è¯æ°´", + "item.minecraft.splash_potion.effect.long_end_veil": "喷溅型末地é¢å…·è¯æ°´", + "item.minecraft.lingering_potion.effect.end_veil": "滞留型末地é¢å…·è¯æ°´", + "item.minecraft.lingering_potion.effect.long_end_veil": "滞留型末地é¢å…·è¯æ°´", + "item.minecraft.tipped_arrow.effect.end_veil": "末地é¢å…·ä¹‹ç®­", + "item.minecraft.tipped_arrow.effect.long_end_veil": "末地é¢å…·ä¹‹ç®­", + + "block.betterend.mossy_glowshroom_sapling": "苔光è‡ç§å­", + "block.betterend.mossy_glowshroom_cap": "苔光è‡èŒç›–", + "block.betterend.mossy_glowshroom_fur": "苔光è‡èŒç»’", + "block.betterend.mossy_glowshroom_hymenophore": "苔光è‡èŒè¤¶", + "block.betterend.mossy_glowshroom_bark": "苔光è‡èŒæœ¨", + "block.betterend.mossy_glowshroom_barrel": "è‹”å…‰è‡æœ¨æ¡¶", + "block.betterend.mossy_glowshroom_button": "è‹”å…‰è‡æŒ‰é’®", + "block.betterend.mossy_glowshroom_chest": "è‹”å…‰è‡æœ¨ç®±", + "block.betterend.mossy_glowshroom_crafting_table": "苔光è‡å·¥ä½œå°", + "block.betterend.mossy_glowshroom_door": "è‹”å…‰è‡æœ¨é—¨", + "block.betterend.mossy_glowshroom_fence": "è‹”å…‰è‡æœ¨æ …æ ", + "block.betterend.mossy_glowshroom_gate": "è‹”å…‰è‡æœ¨æ …æ é—¨", + "block.betterend.mossy_glowshroom_ladder": "è‹”å…‰è‡æœ¨æ¢¯", + "block.betterend.mossy_glowshroom_log": "苔光è‡åŽŸæœ¨", + "block.betterend.mossy_glowshroom_planks": "è‹”å…‰è‡æœ¨æ¿", + "block.betterend.mossy_glowshroom_plate": "苔光è‡åŽ‹åŠ›æ¿", + "block.betterend.mossy_glowshroom_sign": "苔光è‡å‘Šç¤ºç‰Œ", + "block.betterend.mossy_glowshroom_slab": "苔光è‡å°é˜¶", + "block.betterend.mossy_glowshroom_stairs": "è‹”å…‰è‡æ¥¼æ¢¯", + "block.betterend.mossy_glowshroom_stripped_bark": "去皮苔光è‡èŒæœ¨", + "block.betterend.mossy_glowshroom_stripped_log": "去皮苔光è‡åŽŸæœ¨", + "block.betterend.mossy_glowshroom_trapdoor": "è‹”å…‰è‡æ´»æ¿é—¨", + + "block.betterend.umbrella_moss": "伞状苔藓", + "block.betterend.umbrella_moss_tall": "高伞状苔藓", + "block.betterend.creeping_moss": "åŒåŒè‹”è—“", + + "block.betterend.blue_vine_seed": "è“è—¤ç§å­", + "block.betterend.blue_vine": "è“è—¤", + "block.betterend.blue_vine_lantern": "è“è—¤ç¯", + "block.betterend.blue_vine_fur": "è“è—¤èŒæ¯›", + + "block.betterend.dense_vine": "茂密藤蔓", + "block.betterend.bubble_coral": "气泡çŠç‘š", + "block.betterend.aurora_crystal": "æžå…‰æ°´æ™¶", + + "category.rei.damage.amount&dmg": "工具伤害:%s", + + "block.betterend.pythadendron_bark": "å’唱木树皮", + "block.betterend.pythadendron_barrel": "å’唱木桶", + "block.betterend.pythadendron_button": "å’唱木按钮", + "block.betterend.pythadendron_chest": "å’唱木箱å­", + "block.betterend.pythadendron_crafting_table": "å’唱木工作å°", + "block.betterend.pythadendron_door": "å’唱木门", + "block.betterend.pythadendron_fence": "å’唱木栅æ ", + "block.betterend.pythadendron_gate": "å’唱木栅æ é—¨", + "block.betterend.pythadendron_ladder": "å’唱木梯", + "block.betterend.pythadendron_log": "å’唱木原木", + "block.betterend.pythadendron_planks": "å’唱木æ¿", + "block.betterend.pythadendron_plate": "å’唱木压力æ¿", + "block.betterend.pythadendron_sign": "å’唱木告示牌", + "block.betterend.pythadendron_slab": "å’唱木å°é˜¶", + "block.betterend.pythadendron_stairs": "å’唱木楼梯", + "block.betterend.pythadendron_stripped_bark": "去皮å’唱木树皮", + "block.betterend.pythadendron_stripped_log": "去皮å’唱木原木", + "block.betterend.pythadendron_trapdoor": "å’唱木活æ¿é—¨", + + "block.betterend.chorus_nylium": "å’å”±èŒå²©", + "block.betterend.chorus_nylium_path": "å’å”±èŒå²©å¾„", + "block.betterend.chorus_grass": "å’å”±èŒè‰", + + "block.betterend.end_lily": "末地ç¡è޲", + "block.betterend.end_lily_seed": "末地ç¡è޲ç§å­", + "item.betterend.end_lily_leaf": "末地ç¡è޲å¶å­", + "item.betterend.end_lily_leaf_dried": "末地ç¡èŽ²æž¯å¶", + + "block.betterend.violecite": "紫罗兰石", + "block.betterend.violecite_bricks": "紫罗兰石砖", + "block.betterend.violecite_bricks_slab": "紫罗兰石砖å°é˜¶", + "block.betterend.violecite_bricks_stairs": "紫罗兰石砖楼梯", + "block.betterend.violecite_bricks_wall": "紫罗兰石砖墙", + "block.betterend.violecite_button": "紫罗兰石按钮", + "block.betterend.violecite_pillar": "紫罗兰石柱", + "block.betterend.violecite_plate": "紫罗兰石压力æ¿", + "block.betterend.violecite_slab": "紫罗兰石å°é˜¶", + "block.betterend.violecite_tiles": "紫罗兰石瓷砖", + "block.betterend.violecite_stairs": "紫罗兰石楼梯", + "block.betterend.violecite_polished": "磨制紫罗兰石", + "block.betterend.violecite_wall": "紫罗兰石墙", + + "block.betterend.flavolite": "香料石", + "block.betterend.flavolite_bricks": "香料石砖", + "block.betterend.flavolite_bricks_slab": "香料石砖å°é˜¶", + "block.betterend.flavolite_bricks_stairs": "香料石砖楼梯", + "block.betterend.flavolite_bricks_wall": "香料石砖墙", + "block.betterend.flavolite_button": "香料石按钮", + "block.betterend.flavolite_pillar": "香料石柱", + "block.betterend.flavolite_plate": "香料石压力æ¿", + "block.betterend.flavolite_slab": "香料石å°é˜¶", + "block.betterend.flavolite_tiles": "香料石瓷砖", + "block.betterend.flavolite_stairs": "香料石楼梯", + "block.betterend.flavolite_polished": "磨制香料石", + "block.betterend.flavolite_wall": "香料石墙" +} diff --git a/src/main/resources/assets/betterend/materialmaps/block/aurora_crystal.json b/src/main/resources/assets/betterend/materialmaps/block/aurora_crystal.json index c2b812b6..a72e6e79 100644 --- a/src/main/resources/assets/betterend/materialmaps/block/aurora_crystal.json +++ b/src/main/resources/assets/betterend/materialmaps/block/aurora_crystal.json @@ -1,3 +1,3 @@ -{ - "defaultMaterial": "betterend:glow_all" -} +{ + "defaultMaterial": "betterend:glow_all" +} diff --git a/src/main/resources/assets/betterend/materialmaps/block/blue_vine_fur.json b/src/main/resources/assets/betterend/materialmaps/block/blue_vine_fur.json index 1bda5144..f50cc590 100644 --- a/src/main/resources/assets/betterend/materialmaps/block/blue_vine_fur.json +++ b/src/main/resources/assets/betterend/materialmaps/block/blue_vine_fur.json @@ -1,3 +1,3 @@ -{ - "defaultMaterial": "betterend:waving_wall_glow_all" -} +{ + "defaultMaterial": "betterend:waving_wall_glow_all" +} diff --git a/src/main/resources/assets/betterend/materialmaps/block/blue_vine_lantern.json b/src/main/resources/assets/betterend/materialmaps/block/blue_vine_lantern.json index c2b812b6..a72e6e79 100644 --- a/src/main/resources/assets/betterend/materialmaps/block/blue_vine_lantern.json +++ b/src/main/resources/assets/betterend/materialmaps/block/blue_vine_lantern.json @@ -1,3 +1,3 @@ -{ - "defaultMaterial": "betterend:glow_all" -} +{ + "defaultMaterial": "betterend:glow_all" +} diff --git a/src/main/resources/assets/betterend/materialmaps/block/bubble_coral.json b/src/main/resources/assets/betterend/materialmaps/block/bubble_coral.json index a016044a..3201413f 100644 --- a/src/main/resources/assets/betterend/materialmaps/block/bubble_coral.json +++ b/src/main/resources/assets/betterend/materialmaps/block/bubble_coral.json @@ -1,3 +1,3 @@ -{ - "defaultMaterial": "betterend:noao" -} +{ + "defaultMaterial": "betterend:noao" +} diff --git a/src/main/resources/assets/betterend/materialmaps/block/creeping_moss.json b/src/main/resources/assets/betterend/materialmaps/block/creeping_moss.json index 1701827c..3b73d687 100644 --- a/src/main/resources/assets/betterend/materialmaps/block/creeping_moss.json +++ b/src/main/resources/assets/betterend/materialmaps/block/creeping_moss.json @@ -1,14 +1,14 @@ -{ - "defaultMap": { - "spriteMap": [ - { - "sprite": "betterend:block/creeping_moss_spores", - "material": "betterend:wave_glow_50_half" - }, - { - "sprite": "betterend:block/creeping_moss_leaves", - "material": "betterend:waving_floor" - } - ] - } +{ + "defaultMap": { + "spriteMap": [ + { + "sprite": "betterend:block/creeping_moss_spores", + "material": "betterend:wave_glow_50_half" + }, + { + "sprite": "betterend:block/creeping_moss_leaves", + "material": "betterend:waving_floor" + } + ] + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/materialmaps/block/cyan_moss.json b/src/main/resources/assets/betterend/materialmaps/block/cyan_moss.json index 27167c02..1cc4c628 100644 --- a/src/main/resources/assets/betterend/materialmaps/block/cyan_moss.json +++ b/src/main/resources/assets/betterend/materialmaps/block/cyan_moss.json @@ -1,3 +1,3 @@ -{ - "defaultMaterial": "betterend:waving_wall_glow_inc" -} +{ + "defaultMaterial": "betterend:waving_wall_glow_inc" +} diff --git a/src/main/resources/assets/betterend/materialmaps/block/dense_vine.json b/src/main/resources/assets/betterend/materialmaps/block/dense_vine.json index 966e25dd..3b66a139 100644 --- a/src/main/resources/assets/betterend/materialmaps/block/dense_vine.json +++ b/src/main/resources/assets/betterend/materialmaps/block/dense_vine.json @@ -1,14 +1,14 @@ -{ - "defaultMap": { - "spriteMap": [ - { - "sprite": "betterend:block/dense_vine_bottom", - "material": "betterend:wave_glow_50_half" - }, - { - "sprite": "betterend:block/dense_vine", - "material": "betterend:waving" - } - ] - } +{ + "defaultMap": { + "spriteMap": [ + { + "sprite": "betterend:block/dense_vine_bottom", + "material": "betterend:wave_glow_50_half" + }, + { + "sprite": "betterend:block/dense_vine", + "material": "betterend:waving" + } + ] + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/materialmaps/block/end_lily.json b/src/main/resources/assets/betterend/materialmaps/block/end_lily.json index a4fb010b..b3dc124f 100644 --- a/src/main/resources/assets/betterend/materialmaps/block/end_lily.json +++ b/src/main/resources/assets/betterend/materialmaps/block/end_lily.json @@ -1,14 +1,14 @@ -{ - "defaultMap": { - "spriteMap": [ - { - "sprite": "betterend:block/end_lily_flower", - "material": "betterend:glow_inc" - }, - { - "sprite": "betterend:block/end_lily_flower_small", - "material": "betterend:glow_inc" - } - ] - } +{ + "defaultMap": { + "spriteMap": [ + { + "sprite": "betterend:block/end_lily_flower", + "material": "betterend:glow_inc" + }, + { + "sprite": "betterend:block/end_lily_flower_small", + "material": "betterend:glow_inc" + } + ] + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/materialmaps/block/flavolite_lantern.json b/src/main/resources/assets/betterend/materialmaps/block/flavolite_lantern.json new file mode 100644 index 00000000..31a6585c --- /dev/null +++ b/src/main/resources/assets/betterend/materialmaps/block/flavolite_lantern.json @@ -0,0 +1,10 @@ +{ + "defaultMap": { + "spriteMap": [ + { + "sprite": "betterend:block/aurora_crystal", + "material": "betterend:glow_all" + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/materialmaps/block/lantern_end_stone.json b/src/main/resources/assets/betterend/materialmaps/block/lantern_end_stone.json new file mode 100644 index 00000000..31a6585c --- /dev/null +++ b/src/main/resources/assets/betterend/materialmaps/block/lantern_end_stone.json @@ -0,0 +1,10 @@ +{ + "defaultMap": { + "spriteMap": [ + { + "sprite": "betterend:block/aurora_crystal", + "material": "betterend:glow_all" + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_fur.json b/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_fur.json index 8fbc8eb6..5879aa38 100644 --- a/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_fur.json +++ b/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_fur.json @@ -1,3 +1,3 @@ -{ - "defaultMaterial": "betterend:waving_wall_inverted_glow_all" -} +{ + "defaultMaterial": "betterend:waving_wall_inverted_glow_all" +} diff --git a/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_hymenophore.json b/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_hymenophore.json index c2b812b6..a72e6e79 100644 --- a/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_hymenophore.json +++ b/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_hymenophore.json @@ -1,3 +1,3 @@ -{ - "defaultMaterial": "betterend:glow_all" -} +{ + "defaultMaterial": "betterend:glow_all" +} diff --git a/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_sapling.json b/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_sapling.json index 03b96547..83329294 100644 --- a/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_sapling.json +++ b/src/main/resources/assets/betterend/materialmaps/block/mossy_glowshroom_sapling.json @@ -1,3 +1,3 @@ -{ - "defaultMaterial": "betterend:waving_floor_glow_50_blue" -} +{ + "defaultMaterial": "betterend:waving_floor_glow_50_blue" +} diff --git a/src/main/resources/assets/betterend/materialmaps/block/tail_moss.json b/src/main/resources/assets/betterend/materialmaps/block/tail_moss.json index 8161d329..45210670 100644 --- a/src/main/resources/assets/betterend/materialmaps/block/tail_moss.json +++ b/src/main/resources/assets/betterend/materialmaps/block/tail_moss.json @@ -1,3 +1,3 @@ -{ - "defaultMaterial": "betterend:waving_wall" -} +{ + "defaultMaterial": "betterend:waving_wall" +} diff --git a/src/main/resources/assets/betterend/materialmaps/block/umbrella_moss.json b/src/main/resources/assets/betterend/materialmaps/block/umbrella_moss.json index d80e90a5..ce5ae008 100644 --- a/src/main/resources/assets/betterend/materialmaps/block/umbrella_moss.json +++ b/src/main/resources/assets/betterend/materialmaps/block/umbrella_moss.json @@ -1,22 +1,22 @@ -{ - "defaultMap": { - "spriteMap": [ - { - "sprite": "betterend:block/umbrella_moss_sporophyte", - "material": "betterend:wave_glow_all" - }, - { - "sprite": "betterend:block/umbrella_moss_small", - "material": "betterend:waving_floor" - }, - { - "sprite": "betterend:block/umbrella_moss_up", - "material": "betterend:waving_floor" - }, - { - "sprite": "betterend:block/umbrella_moss_end", - "material": "betterend:waving_floor" - } - ] - } +{ + "defaultMap": { + "spriteMap": [ + { + "sprite": "betterend:block/umbrella_moss_sporophyte", + "material": "betterend:wave_glow_all" + }, + { + "sprite": "betterend:block/umbrella_moss_small", + "material": "betterend:waving_floor" + }, + { + "sprite": "betterend:block/umbrella_moss_up", + "material": "betterend:waving_floor" + }, + { + "sprite": "betterend:block/umbrella_moss_end", + "material": "betterend:waving_floor" + } + ] + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/materialmaps/block/umbrella_moss_tall.json b/src/main/resources/assets/betterend/materialmaps/block/umbrella_moss_tall.json index c729b4d8..60f98759 100644 --- a/src/main/resources/assets/betterend/materialmaps/block/umbrella_moss_tall.json +++ b/src/main/resources/assets/betterend/materialmaps/block/umbrella_moss_tall.json @@ -1,22 +1,22 @@ -{ - "defaultMap": { - "spriteMap": [ - { - "sprite": "betterend:block/umbrella_moss_sporophyte", - "material": "betterend:wave_glow_all" - }, - { - "sprite": "betterend:block/umbrella_moss_up", - "material": "betterend:waving" - }, - { - "sprite": "betterend:block/umbrella_moss_end", - "material": "betterend:waving" - }, - { - "sprite": "betterend:block/umbrella_moss_bottom", - "material": "betterend:waving_floor" - } - ] - } +{ + "defaultMap": { + "spriteMap": [ + { + "sprite": "betterend:block/umbrella_moss_sporophyte", + "material": "betterend:wave_glow_all" + }, + { + "sprite": "betterend:block/umbrella_moss_up", + "material": "betterend:waving" + }, + { + "sprite": "betterend:block/umbrella_moss_end", + "material": "betterend:waving" + }, + { + "sprite": "betterend:block/umbrella_moss_bottom", + "material": "betterend:waving_floor" + } + ] + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/materialmaps/block/violecite_lantern.json b/src/main/resources/assets/betterend/materialmaps/block/violecite_lantern.json new file mode 100644 index 00000000..31a6585c --- /dev/null +++ b/src/main/resources/assets/betterend/materialmaps/block/violecite_lantern.json @@ -0,0 +1,10 @@ +{ + "defaultMap": { + "spriteMap": [ + { + "sprite": "betterend:block/aurora_crystal", + "material": "betterend:glow_all" + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/materialmaps/particle/glowing_sphere.json b/src/main/resources/assets/betterend/materialmaps/particle/glowing_sphere.json index 9ddcf936..ab909d8e 100644 --- a/src/main/resources/assets/betterend/materialmaps/particle/glowing_sphere.json +++ b/src/main/resources/assets/betterend/materialmaps/particle/glowing_sphere.json @@ -1,3 +1,3 @@ -{ - "material": "canvas:emissive_no_diffuse" +{ + "material": "canvas:emissive_no_diffuse" } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/materialmaps/particle/portal_sphere.json b/src/main/resources/assets/betterend/materialmaps/particle/portal_sphere.json index 9ddcf936..ab909d8e 100644 --- a/src/main/resources/assets/betterend/materialmaps/particle/portal_sphere.json +++ b/src/main/resources/assets/betterend/materialmaps/particle/portal_sphere.json @@ -1,3 +1,3 @@ -{ - "material": "canvas:emissive_no_diffuse" +{ + "material": "canvas:emissive_no_diffuse" } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/materials/glow_10.json b/src/main/resources/assets/betterend/materials/glow_10.json index b7e484ad..c7c0f142 100644 --- a/src/main/resources/assets/betterend/materials/glow_10.json +++ b/src/main/resources/assets/betterend/materials/glow_10.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "canvas:shaders/material/default.vert", - "fragmentSource": "betterend:shaders/material/glow_10.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_10.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/glow_20_half.json b/src/main/resources/assets/betterend/materials/glow_20_half.json index 3ed9bf23..6de3bccb 100644 --- a/src/main/resources/assets/betterend/materials/glow_20_half.json +++ b/src/main/resources/assets/betterend/materials/glow_20_half.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "canvas:shaders/material/default.vert", - "fragmentSource": "betterend:shaders/material/glow_20_half.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_20_half.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/glow_33.json b/src/main/resources/assets/betterend/materials/glow_33.json index f46cadaa..c31eb737 100644 --- a/src/main/resources/assets/betterend/materials/glow_33.json +++ b/src/main/resources/assets/betterend/materials/glow_33.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "canvas:shaders/material/default.vert", - "fragmentSource": "betterend:shaders/material/glow_33.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_33.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/glow_50.json b/src/main/resources/assets/betterend/materials/glow_50.json index 51c1620a..93f884b2 100644 --- a/src/main/resources/assets/betterend/materials/glow_50.json +++ b/src/main/resources/assets/betterend/materials/glow_50.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "canvas:shaders/material/default.vert", - "fragmentSource": "betterend:shaders/material/glow_50.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_50.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/glow_50_half.json b/src/main/resources/assets/betterend/materials/glow_50_half.json index bbc2233f..880543c3 100644 --- a/src/main/resources/assets/betterend/materials/glow_50_half.json +++ b/src/main/resources/assets/betterend/materials/glow_50_half.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "canvas:shaders/material/default.vert", - "fragmentSource": "betterend:shaders/material/glow_50_half.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_50_half.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/glow_all.json b/src/main/resources/assets/betterend/materials/glow_all.json index 7bc59ca7..e4c41e04 100644 --- a/src/main/resources/assets/betterend/materials/glow_all.json +++ b/src/main/resources/assets/betterend/materials/glow_all.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "canvas:shaders/material/default.vert", - "fragmentSource": "betterend:shaders/material/glow_all.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_all.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/glow_all_half.json b/src/main/resources/assets/betterend/materials/glow_all_half.json index 24cbf346..791dc1ce 100644 --- a/src/main/resources/assets/betterend/materials/glow_all_half.json +++ b/src/main/resources/assets/betterend/materials/glow_all_half.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "canvas:shaders/material/default.vert", - "fragmentSource": "betterend:shaders/material/glow_all_half.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_all_half.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/glow_inc.json b/src/main/resources/assets/betterend/materials/glow_inc.json index bbb22a51..7862979c 100644 --- a/src/main/resources/assets/betterend/materials/glow_inc.json +++ b/src/main/resources/assets/betterend/materials/glow_inc.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "canvas:shaders/material/default.vert", - "fragmentSource": "betterend:shaders/material/glow_inc.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_inc.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/glow_transparent.json b/src/main/resources/assets/betterend/materials/glow_transparent.json index e2711368..220edc02 100644 --- a/src/main/resources/assets/betterend/materials/glow_transparent.json +++ b/src/main/resources/assets/betterend/materials/glow_transparent.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "canvas:shaders/material/default.vert", - "fragmentSource": "betterend:shaders/material/glow_transparent.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "betterend:shaders/material/glow_transparent.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/large_wave_glow_50_half.json b/src/main/resources/assets/betterend/materials/large_wave_glow_50_half.json index df4d43d6..3e270dbf 100644 --- a/src/main/resources/assets/betterend/materials/large_wave_glow_50_half.json +++ b/src/main/resources/assets/betterend/materials/large_wave_glow_50_half.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/wave_large.vert", - "fragmentSource": "betterend:shaders/material/glow_50_half.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave_large.vert", + "fragmentSource": "betterend:shaders/material/glow_50_half.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/large_wave_glow_inc.json b/src/main/resources/assets/betterend/materials/large_wave_glow_inc.json index 1fd992b1..75324c11 100644 --- a/src/main/resources/assets/betterend/materials/large_wave_glow_inc.json +++ b/src/main/resources/assets/betterend/materials/large_wave_glow_inc.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/wave_large.vert", - "fragmentSource": "betterend:shaders/material/glow_inc.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave_large.vert", + "fragmentSource": "betterend:shaders/material/glow_inc.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/noao.json b/src/main/resources/assets/betterend/materials/noao.json index 7652d030..7681e741 100644 --- a/src/main/resources/assets/betterend/materials/noao.json +++ b/src/main/resources/assets/betterend/materials/noao.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "canvas:shaders/material/default.vert", - "fragmentSource": "canvas:shaders/material/default.frag", - "disableAo": false, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "canvas:shaders/material/default.frag", + "disableAo": false, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/noshade.json b/src/main/resources/assets/betterend/materials/noshade.json index ffc32c09..258d1a61 100644 --- a/src/main/resources/assets/betterend/materials/noshade.json +++ b/src/main/resources/assets/betterend/materials/noshade.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "canvas:shaders/material/default.vert", - "fragmentSource": "canvas:shaders/material/default.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "canvas:shaders/material/default.vert", + "fragmentSource": "canvas:shaders/material/default.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/offset_floor.json b/src/main/resources/assets/betterend/materials/offset_floor.json index 4e6bf34e..bcd03f29 100644 --- a/src/main/resources/assets/betterend/materials/offset_floor.json +++ b/src/main/resources/assets/betterend/materials/offset_floor.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/offset_floor.vert", - "fragmentSource": "canvas:shaders/material/default.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/offset_floor.vert", + "fragmentSource": "canvas:shaders/material/default.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/small_wave_glow_50_half.json b/src/main/resources/assets/betterend/materials/small_wave_glow_50_half.json index ecf415e6..6bf358c7 100644 --- a/src/main/resources/assets/betterend/materials/small_wave_glow_50_half.json +++ b/src/main/resources/assets/betterend/materials/small_wave_glow_50_half.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/small_wave.vert", - "fragmentSource": "betterend:shaders/material/glow_50_half.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/small_wave.vert", + "fragmentSource": "betterend:shaders/material/glow_50_half.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/wave_glow_33.json b/src/main/resources/assets/betterend/materials/wave_glow_33.json index df18184f..18e471c0 100644 --- a/src/main/resources/assets/betterend/materials/wave_glow_33.json +++ b/src/main/resources/assets/betterend/materials/wave_glow_33.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/wave.vert", - "fragmentSource": "betterend:shaders/material/glow_33.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave.vert", + "fragmentSource": "betterend:shaders/material/glow_33.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/wave_glow_33_half.json b/src/main/resources/assets/betterend/materials/wave_glow_33_half.json index c40b5f6a..bb80fa5c 100644 --- a/src/main/resources/assets/betterend/materials/wave_glow_33_half.json +++ b/src/main/resources/assets/betterend/materials/wave_glow_33_half.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/wave.vert", - "fragmentSource": "betterend:shaders/material/glow_33_half.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave.vert", + "fragmentSource": "betterend:shaders/material/glow_33_half.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/wave_glow_50_half.json b/src/main/resources/assets/betterend/materials/wave_glow_50_half.json index ac6d5690..71c5ba12 100644 --- a/src/main/resources/assets/betterend/materials/wave_glow_50_half.json +++ b/src/main/resources/assets/betterend/materials/wave_glow_50_half.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/wave.vert", - "fragmentSource": "betterend:shaders/material/glow_50_half.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave.vert", + "fragmentSource": "betterend:shaders/material/glow_50_half.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/wave_glow_all.json b/src/main/resources/assets/betterend/materials/wave_glow_all.json index 819681c0..b5483e3c 100644 --- a/src/main/resources/assets/betterend/materials/wave_glow_all.json +++ b/src/main/resources/assets/betterend/materials/wave_glow_all.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/wave.vert", - "fragmentSource": "betterend:shaders/material/glow_all.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave.vert", + "fragmentSource": "betterend:shaders/material/glow_all.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/wave_glow_inc.json b/src/main/resources/assets/betterend/materials/wave_glow_inc.json index e3c2b735..27dea5e5 100644 --- a/src/main/resources/assets/betterend/materials/wave_glow_inc.json +++ b/src/main/resources/assets/betterend/materials/wave_glow_inc.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/wave.vert", - "fragmentSource": "betterend:shaders/material/glow_inc.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave.vert", + "fragmentSource": "betterend:shaders/material/glow_inc.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/waving.json b/src/main/resources/assets/betterend/materials/waving.json index 71f35bb3..f717541e 100644 --- a/src/main/resources/assets/betterend/materials/waving.json +++ b/src/main/resources/assets/betterend/materials/waving.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/wave.vert", - "fragmentSource": "canvas:shaders/material/default.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave.vert", + "fragmentSource": "canvas:shaders/material/default.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/waving_floor.json b/src/main/resources/assets/betterend/materials/waving_floor.json index 5f325724..760ef3d7 100644 --- a/src/main/resources/assets/betterend/materials/waving_floor.json +++ b/src/main/resources/assets/betterend/materials/waving_floor.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/wave_floor.vert", - "fragmentSource": "canvas:shaders/material/default.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave_floor.vert", + "fragmentSource": "canvas:shaders/material/default.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/waving_floor_glow_50.json b/src/main/resources/assets/betterend/materials/waving_floor_glow_50.json index b8328abe..d8dae14e 100644 --- a/src/main/resources/assets/betterend/materials/waving_floor_glow_50.json +++ b/src/main/resources/assets/betterend/materials/waving_floor_glow_50.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/wave_floor.vert", - "fragmentSource": "betterend:shaders/material/glow_50.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave_floor.vert", + "fragmentSource": "betterend:shaders/material/glow_50.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/waving_floor_glow_50_blue.json b/src/main/resources/assets/betterend/materials/waving_floor_glow_50_blue.json index cc617620..1eeb1425 100644 --- a/src/main/resources/assets/betterend/materials/waving_floor_glow_50_blue.json +++ b/src/main/resources/assets/betterend/materials/waving_floor_glow_50_blue.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/wave_floor.vert", - "fragmentSource": "betterend:shaders/material/glow_50_blue.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave_floor.vert", + "fragmentSource": "betterend:shaders/material/glow_50_blue.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/waving_large.json b/src/main/resources/assets/betterend/materials/waving_large.json index 3750a965..9188cd82 100644 --- a/src/main/resources/assets/betterend/materials/waving_large.json +++ b/src/main/resources/assets/betterend/materials/waving_large.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/wave_large.vert", - "fragmentSource": "canvas:shaders/material/default.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wave_large.vert", + "fragmentSource": "canvas:shaders/material/default.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/waving_small.json b/src/main/resources/assets/betterend/materials/waving_small.json index 19a9696e..a87df6ab 100644 --- a/src/main/resources/assets/betterend/materials/waving_small.json +++ b/src/main/resources/assets/betterend/materials/waving_small.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/small_wave.vert", - "fragmentSource": "canvas:shaders/material/default.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/small_wave.vert", + "fragmentSource": "canvas:shaders/material/default.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/waving_wall.json b/src/main/resources/assets/betterend/materials/waving_wall.json index 41d94a37..02cc16ab 100644 --- a/src/main/resources/assets/betterend/materials/waving_wall.json +++ b/src/main/resources/assets/betterend/materials/waving_wall.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/wall_wave.vert", - "fragmentSource": "canvas:shaders/material/default.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wall_wave.vert", + "fragmentSource": "canvas:shaders/material/default.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/waving_wall_glow_all.json b/src/main/resources/assets/betterend/materials/waving_wall_glow_all.json index 5133fbe8..d483600f 100644 --- a/src/main/resources/assets/betterend/materials/waving_wall_glow_all.json +++ b/src/main/resources/assets/betterend/materials/waving_wall_glow_all.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/wall_wave.vert", - "fragmentSource": "betterend:shaders/material/glow_all.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wall_wave.vert", + "fragmentSource": "betterend:shaders/material/glow_all.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/materials/waving_wall_inverted_glow_all.json b/src/main/resources/assets/betterend/materials/waving_wall_inverted_glow_all.json index 1c7e9cbc..ce179e09 100644 --- a/src/main/resources/assets/betterend/materials/waving_wall_inverted_glow_all.json +++ b/src/main/resources/assets/betterend/materials/waving_wall_inverted_glow_all.json @@ -1,10 +1,10 @@ -{ - "layers": [ - { - "vertexSource": "betterend:shaders/material/wall_wave_inverted.vert", - "fragmentSource": "betterend:shaders/material/glow_all.frag", - "disableAo": true, - "disableDiffuse": true - } - ] -} +{ + "layers": [ + { + "vertexSource": "betterend:shaders/material/wall_wave_inverted.vert", + "fragmentSource": "betterend:shaders/material/glow_all.frag", + "disableAo": true, + "disableDiffuse": true + } + ] +} diff --git a/src/main/resources/assets/betterend/models/block/aurora_crystal.json b/src/main/resources/assets/betterend/models/block/aurora_crystal.json index 120e8d23..5e6e8690 100644 --- a/src/main/resources/assets/betterend/models/block/aurora_crystal.json +++ b/src/main/resources/assets/betterend/models/block/aurora_crystal.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/tint_cube_noshade", - "textures": { - "texture": "betterend:block/aurora_crystal" - } +{ + "parent": "betterend:block/tint_cube_noshade", + "textures": { + "texture": "betterend:block/aurora_crystal" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/aurora_crystal_2.json b/src/main/resources/assets/betterend/models/block/aurora_crystal_2.json index c7b29818..e0a91b63 100644 --- a/src/main/resources/assets/betterend/models/block/aurora_crystal_2.json +++ b/src/main/resources/assets/betterend/models/block/aurora_crystal_2.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/tint_cube_noshade", - "textures": { - "texture": "betterend:block/aurora_crystal_2" - } +{ + "parent": "betterend:block/tint_cube_noshade", + "textures": { + "texture": "betterend:block/aurora_crystal_2" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/blue_vine.json b/src/main/resources/assets/betterend/models/block/blue_vine.json index 4bdc7a03..915b1a4c 100644 --- a/src/main/resources/assets/betterend/models/block/blue_vine.json +++ b/src/main/resources/assets/betterend/models/block/blue_vine.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/cross_no_distortion", - "textures": { - "texture": "betterend:block/blue_vine" - } +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/blue_vine" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/blue_vine_fur.json b/src/main/resources/assets/betterend/models/block/blue_vine_fur.json index 086382f8..ca0adbd4 100644 --- a/src/main/resources/assets/betterend/models/block/blue_vine_fur.json +++ b/src/main/resources/assets/betterend/models/block/blue_vine_fur.json @@ -1,120 +1,120 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/blue_vine_fur", - "texture": "betterend:block/blue_vine_fur", - "spore": "betterend:block/blue_vine_fur" - }, - "elements": [ - { - "__comment": "PlaneY1", - "from": [ 0, -0.001, -10 ], - "to": [ 16, 0, 6 ], - "rotation": { "origin": [ 0, 0, 6 ], "axis": "x", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY1", - "from": [ 0, 0, 10 ], - "to": [ 16, 0.001, 26 ], - "rotation": { "origin": [ 0, 0, 10 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY4", - "from": [ 10, -0.001, 0 ], - "to": [ 26, 0, 16 ], - "rotation": { "origin": [ 10, 0, 16 ], "axis": "z", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 90 }, - "up": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture", "rotation": 270 } - } - }, - { - "__comment": "PlaneY4", - "from": [ -10, 0, 2 ], - "to": [ 6, 0.001, 18 ], - "rotation": { "origin": [ 6, 0, 18 ], "axis": "z", "angle": -22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 }, - "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 270 } - } - }, - { - "__comment": "PlaneX6", - "from": [ 0, 0, -6.5 ], - "to": [ 0.001, 16, 16 ], - "rotation": { "origin": [ 0, 16, 16 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX6", - "from": [ -6.5, 0, 15.999 ], - "to": [ 16, 16, 16 ], - "rotation": { "origin": [ 16, 16, 16 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneY1", - "from": [ 0, -0.001, -9 ], - "to": [ 16, 0, 7 ], - "rotation": { "origin": [ 0, 0, 7 ], "axis": "x", "angle": 45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 }, - "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY1", - "from": [ 0, 0, 9 ], - "to": [ 16, 0.001, 25 ], - "rotation": { "origin": [ 0, 0, 9 ], "axis": "x", "angle": -45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY4", - "from": [ 9, -0.001, 0 ], - "to": [ 25, 0, 16 ], - "rotation": { "origin": [ 9, 0, 16 ], "axis": "z", "angle": 45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 90 }, - "up": { "uv": [ 16, 16, 0, 0 ], "texture": "#texture", "rotation": 270 } - } - }, - { - "__comment": "PlaneY4", - "from": [ -9, 0, 2 ], - "to": [ 7, 0.001, 18 ], - "rotation": { "origin": [ 7, 0, 18 ], "axis": "z", "angle": -45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 270 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/blue_vine_fur", + "texture": "betterend:block/blue_vine_fur", + "spore": "betterend:block/blue_vine_fur" + }, + "elements": [ + { + "__comment": "PlaneY1", + "from": [ 0, -0.001, -10 ], + "to": [ 16, 0, 6 ], + "rotation": { "origin": [ 0, 0, 6 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, 0, 10 ], + "to": [ 16, 0.001, 26 ], + "rotation": { "origin": [ 0, 0, 10 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY4", + "from": [ 10, -0.001, 0 ], + "to": [ 26, 0, 16 ], + "rotation": { "origin": [ 10, 0, 16 ], "axis": "z", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneY4", + "from": [ -10, 0, 2 ], + "to": [ 6, 0.001, 18 ], + "rotation": { "origin": [ 6, 0, 18 ], "axis": "z", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneX6", + "from": [ 0, 0, -6.5 ], + "to": [ 0.001, 16, 16 ], + "rotation": { "origin": [ 0, 16, 16 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX6", + "from": [ -6.5, 0, 15.999 ], + "to": [ 16, 16, 16 ], + "rotation": { "origin": [ 16, 16, 16 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, -0.001, -9 ], + "to": [ 16, 0, 7 ], + "rotation": { "origin": [ 0, 0, 7 ], "axis": "x", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, 0, 9 ], + "to": [ 16, 0.001, 25 ], + "rotation": { "origin": [ 0, 0, 9 ], "axis": "x", "angle": -45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY4", + "from": [ 9, -0.001, 0 ], + "to": [ 25, 0, 16 ], + "rotation": { "origin": [ 9, 0, 16 ], "axis": "z", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 16, 16, 0, 0 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneY4", + "from": [ -9, 0, 2 ], + "to": [ 7, 0.001, 18 ], + "rotation": { "origin": [ 7, 0, 18 ], "axis": "z", "angle": -45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/blue_vine_fur_wall.json b/src/main/resources/assets/betterend/models/block/blue_vine_fur_wall.json index cf9d222f..8fdadbfe 100644 --- a/src/main/resources/assets/betterend/models/block/blue_vine_fur_wall.json +++ b/src/main/resources/assets/betterend/models/block/blue_vine_fur_wall.json @@ -1,64 +1,64 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/blue_vine_fur", - "texture": "betterend:block/blue_vine_fur" - }, - "elements": [ - { - "__comment": "PlaneY1", - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 0.001 ], - "rotation": { "origin": [ 0, 16, 0 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ 0, -3, 0 ], - "to": [ 16, 13, 0.001 ], - "rotation": { "origin": [ 0, 13, 0 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 16, 16, 0, 0 ], "texture": "#texture" }, - "south": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ 0, -8, 0 ], - "to": [ 16, 8, 0.001 ], - "rotation": { "origin": [ 0, 8, 0 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ -2, -12, 0 ], - "to": [ 14, 4, 0.001 ], - "rotation": { "origin": [ -2, 4, 0 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 16, 16, 0, 0 ], "texture": "#texture" }, - "south": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ 3, -15, 0 ], - "to": [ 19, 1, 0.001 ], - "rotation": { "origin": [ 3, 1, 0 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/blue_vine_fur", + "texture": "betterend:block/blue_vine_fur" + }, + "elements": [ + { + "__comment": "PlaneY1", + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 0.001 ], + "rotation": { "origin": [ 0, 16, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, -3, 0 ], + "to": [ 16, 13, 0.001 ], + "rotation": { "origin": [ 0, 13, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 16, 16, 0, 0 ], "texture": "#texture" }, + "south": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, -8, 0 ], + "to": [ 16, 8, 0.001 ], + "rotation": { "origin": [ 0, 8, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ -2, -12, 0 ], + "to": [ 14, 4, 0.001 ], + "rotation": { "origin": [ -2, 4, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 16, 16, 0, 0 ], "texture": "#texture" }, + "south": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 3, -15, 0 ], + "to": [ 19, 1, 0.001 ], + "rotation": { "origin": [ 3, 1, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/blue_vine_roots.json b/src/main/resources/assets/betterend/models/block/blue_vine_roots.json index 0df8affc..a2093fef 100644 --- a/src/main/resources/assets/betterend/models/block/blue_vine_roots.json +++ b/src/main/resources/assets/betterend/models/block/blue_vine_roots.json @@ -1,76 +1,76 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/blue_vine", - "texture": "betterend:block/blue_vine", - "roots": "betterend:block/blue_vine_roots" - }, - "elements": [ - { - "__comment": "PlaneX1", - "from": [ 2.375, 0, 2.25 ], - "to": [ 2.376, 16, 18.25 ], - "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX1", - "from": [ 13.75, 0, 2.25 ], - "to": [ 13.751, 16, 18.25 ], - "rotation": { "origin": [ 13.75, 0, 2.25 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 5, 0, 0.5 ], - "to": [ 5.001, 16, 16.5 ], - "rotation": { "origin": [ 5, 0, 0.5 ], "axis": "y", "angle": 22.5 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } - } - }, - { - "__comment": "PlaneZ5", - "from": [ 0.5, 0, 11 ], - "to": [ 16.5, 16, 11.001 ], - "rotation": { "origin": [ 0.5, 0, 11 ], "axis": "y", "angle": 22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 11, 0, 0.5 ], - "to": [ 11.001, 16, 16.5 ], - "rotation": { "origin": [ 11, 0, 0.5 ], "axis": "y", "angle": -22.5 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } - } - }, - { - "__comment": "PlaneZ5", - "from": [ 0.5, 0, 5 ], - "to": [ 16.5, 16, 5.001 ], - "rotation": { "origin": [ 0.5, 0, 5 ], "axis": "y", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/blue_vine", + "texture": "betterend:block/blue_vine", + "roots": "betterend:block/blue_vine_roots" + }, + "elements": [ + { + "__comment": "PlaneX1", + "from": [ 2.375, 0, 2.25 ], + "to": [ 2.376, 16, 18.25 ], + "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX1", + "from": [ 13.75, 0, 2.25 ], + "to": [ 13.751, 16, 18.25 ], + "rotation": { "origin": [ 13.75, 0, 2.25 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 5, 0, 0.5 ], + "to": [ 5.001, 16, 16.5 ], + "rotation": { "origin": [ 5, 0, 0.5 ], "axis": "y", "angle": 22.5 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneZ5", + "from": [ 0.5, 0, 11 ], + "to": [ 16.5, 16, 11.001 ], + "rotation": { "origin": [ 0.5, 0, 11 ], "axis": "y", "angle": 22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 11, 0, 0.5 ], + "to": [ 11.001, 16, 16.5 ], + "rotation": { "origin": [ 11, 0, 0.5 ], "axis": "y", "angle": -22.5 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneZ5", + "from": [ 0.5, 0, 5 ], + "to": [ 16.5, 16, 5.001 ], + "rotation": { "origin": [ 0.5, 0, 5 ], "axis": "y", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/blue_vine_seed_0.json b/src/main/resources/assets/betterend/models/block/blue_vine_seed_0.json index 19c0e477..4d8135e6 100644 --- a/src/main/resources/assets/betterend/models/block/blue_vine_seed_0.json +++ b/src/main/resources/assets/betterend/models/block/blue_vine_seed_0.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/cross_no_distortion", - "textures": { - "texture": "betterend:block/blue_vine_0" - } +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/blue_vine_0" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/blue_vine_seed_1.json b/src/main/resources/assets/betterend/models/block/blue_vine_seed_1.json index d702300d..a23c592d 100644 --- a/src/main/resources/assets/betterend/models/block/blue_vine_seed_1.json +++ b/src/main/resources/assets/betterend/models/block/blue_vine_seed_1.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/cross_no_distortion", - "textures": { - "texture": "betterend:block/blue_vine_1" - } +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/blue_vine_1" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/blue_vine_seed_2.json b/src/main/resources/assets/betterend/models/block/blue_vine_seed_2.json index 2c38fe55..e098b6be 100644 --- a/src/main/resources/assets/betterend/models/block/blue_vine_seed_2.json +++ b/src/main/resources/assets/betterend/models/block/blue_vine_seed_2.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/cross_no_distortion", - "textures": { - "texture": "betterend:block/blue_vine_2" - } +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/blue_vine_2" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/blue_vine_seed_3.json b/src/main/resources/assets/betterend/models/block/blue_vine_seed_3.json index 78a23f65..ea8ded1c 100644 --- a/src/main/resources/assets/betterend/models/block/blue_vine_seed_3.json +++ b/src/main/resources/assets/betterend/models/block/blue_vine_seed_3.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/cross_no_distortion", - "textures": { - "texture": "betterend:block/blue_vine_3" - } +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/blue_vine_3" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/blue_vine_top.json b/src/main/resources/assets/betterend/models/block/blue_vine_top.json index be895b06..64eec639 100644 --- a/src/main/resources/assets/betterend/models/block/blue_vine_top.json +++ b/src/main/resources/assets/betterend/models/block/blue_vine_top.json @@ -1,76 +1,76 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/blue_vine", - "texture": "betterend:block/blue_vine", - "roots": "betterend:block/blue_vine_roots" - }, - "elements": [ - { - "__comment": "PlaneX1", - "from": [ 2.375, 0, 2.25 ], - "to": [ 2.376, 16, 18.25 ], - "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX1", - "from": [ 13.75, 0, 2.25 ], - "to": [ 13.751, 16, 18.25 ], - "rotation": { "origin": [ 13.75, 0, 2.25 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 5, 0, 0.5 ], - "to": [ 5.001, 16, 16.5 ], - "rotation": { "origin": [ 5, 0, 0.5 ], "axis": "y", "angle": 22.5 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" }, - "east": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } - } - }, - { - "__comment": "PlaneZ5", - "from": [ 0.5, 0, 11 ], - "to": [ 16.5, 16, 11.001 ], - "rotation": { "origin": [ 0.5, 0, 11 ], "axis": "y", "angle": 22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" }, - "south": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 11, 0, 0.5 ], - "to": [ 11.001, 16, 16.5 ], - "rotation": { "origin": [ 11, 0, 0.5 ], "axis": "y", "angle": -22.5 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" }, - "east": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } - } - }, - { - "__comment": "PlaneZ5", - "from": [ 0.5, 0, 5 ], - "to": [ 16.5, 16, 5.001 ], - "rotation": { "origin": [ 0.5, 0, 5 ], "axis": "y", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" }, - "south": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/blue_vine", + "texture": "betterend:block/blue_vine", + "roots": "betterend:block/blue_vine_roots" + }, + "elements": [ + { + "__comment": "PlaneX1", + "from": [ 2.375, 0, 2.25 ], + "to": [ 2.376, 16, 18.25 ], + "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX1", + "from": [ 13.75, 0, 2.25 ], + "to": [ 13.751, 16, 18.25 ], + "rotation": { "origin": [ 13.75, 0, 2.25 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 5, 0, 0.5 ], + "to": [ 5.001, 16, 16.5 ], + "rotation": { "origin": [ 5, 0, 0.5 ], "axis": "y", "angle": 22.5 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" }, + "east": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneZ5", + "from": [ 0.5, 0, 11 ], + "to": [ 16.5, 16, 11.001 ], + "rotation": { "origin": [ 0.5, 0, 11 ], "axis": "y", "angle": 22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" }, + "south": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 11, 0, 0.5 ], + "to": [ 11.001, 16, 16.5 ], + "rotation": { "origin": [ 11, 0, 0.5 ], "axis": "y", "angle": -22.5 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" }, + "east": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneZ5", + "from": [ 0.5, 0, 5 ], + "to": [ 16.5, 16, 5.001 ], + "rotation": { "origin": [ 0.5, 0, 5 ], "axis": "y", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" }, + "south": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/bubble_coral_1.json b/src/main/resources/assets/betterend/models/block/bubble_coral_1.json index 2ba9ef71..53ab03d0 100644 --- a/src/main/resources/assets/betterend/models/block/bubble_coral_1.json +++ b/src/main/resources/assets/betterend/models/block/bubble_coral_1.json @@ -1,127 +1,127 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "parent": "block/block", - "textures": { - "particle": "betterend:block/bubble_coral", - "texture": "betterend:block/bubble_coral" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 4, 0, 2 ], - "to": [ 9, 10, 7 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "north": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, - "south": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, - "west": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, - "east": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 10, 0, 5 ], - "to": [ 14, 7, 9 ], - "faces": { - "down": { "uv": [ 0, 5, 4, 9 ], "texture": "#texture" }, - "up": { "uv": [ 0, 5, 4, 9 ], "texture": "#texture" }, - "north": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, - "south": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, - "west": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, - "east": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 4, 0, 8 ], - "to": [ 9, 8, 13 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "north": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, - "south": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, - "west": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, - "east": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 0, 0, 5 ], - "to": [ 3, 5, 8 ], - "faces": { - "down": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, - "up": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, - "north": { "uv": [ 13, 11, 16, 16 ], "texture": "#texture" }, - "south": { "uv": [ 13, 11, 16, 16 ], "texture": "#texture" }, - "west": { "uv": [ 13, 11, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 13, 11, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 0, 0, 12 ], - "to": [ 3, 5, 15 ], - "faces": { - "down": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, - "up": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, - "north": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, - "south": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, - "west": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, - "east": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 12, 0, 10 ], - "to": [ 15, 5, 13 ], - "faces": { - "down": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, - "up": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, - "north": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, - "south": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, - "west": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, - "east": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 12, 0, 1 ], - "to": [ 14, 4, 3 ], - "faces": { - "down": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, - "up": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, - "north": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, - "south": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, - "west": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, - "east": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 1, 0, 1 ], - "to": [ 3, 4, 3 ], - "faces": { - "down": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, - "up": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, - "north": { "uv": [ 13, 12, 15, 16 ], "texture": "#texture" }, - "south": { "uv": [ 13, 12, 15, 16 ], "texture": "#texture" }, - "west": { "uv": [ 13, 12, 15, 16 ], "texture": "#texture" }, - "east": { "uv": [ 13, 12, 15, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 9, 0, 14 ], - "to": [ 11, 4, 16 ], - "faces": { - "down": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, - "up": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, - "north": { "uv": [ 9, 12, 11, 16 ], "texture": "#texture" }, - "south": { "uv": [ 9, 12, 11, 16 ], "texture": "#texture" }, - "west": { "uv": [ 9, 12, 11, 16 ], "texture": "#texture" }, - "east": { "uv": [ 9, 12, 11, 16 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "parent": "block/block", + "textures": { + "particle": "betterend:block/bubble_coral", + "texture": "betterend:block/bubble_coral" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 4, 0, 2 ], + "to": [ 9, 10, 7 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "north": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, + "south": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, + "west": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, + "east": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 10, 0, 5 ], + "to": [ 14, 7, 9 ], + "faces": { + "down": { "uv": [ 0, 5, 4, 9 ], "texture": "#texture" }, + "up": { "uv": [ 0, 5, 4, 9 ], "texture": "#texture" }, + "north": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, + "south": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, + "west": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, + "east": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 4, 0, 8 ], + "to": [ 9, 8, 13 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "north": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, + "south": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, + "west": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, + "east": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 0, 0, 5 ], + "to": [ 3, 5, 8 ], + "faces": { + "down": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, + "up": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, + "north": { "uv": [ 13, 11, 16, 16 ], "texture": "#texture" }, + "south": { "uv": [ 13, 11, 16, 16 ], "texture": "#texture" }, + "west": { "uv": [ 13, 11, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 13, 11, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 0, 0, 12 ], + "to": [ 3, 5, 15 ], + "faces": { + "down": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, + "up": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, + "north": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, + "south": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, + "west": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, + "east": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 12, 0, 10 ], + "to": [ 15, 5, 13 ], + "faces": { + "down": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, + "up": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, + "north": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, + "south": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, + "west": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, + "east": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 12, 0, 1 ], + "to": [ 14, 4, 3 ], + "faces": { + "down": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, + "up": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, + "north": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, + "south": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, + "west": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, + "east": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 1, 0, 1 ], + "to": [ 3, 4, 3 ], + "faces": { + "down": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, + "up": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, + "north": { "uv": [ 13, 12, 15, 16 ], "texture": "#texture" }, + "south": { "uv": [ 13, 12, 15, 16 ], "texture": "#texture" }, + "west": { "uv": [ 13, 12, 15, 16 ], "texture": "#texture" }, + "east": { "uv": [ 13, 12, 15, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 9, 0, 14 ], + "to": [ 11, 4, 16 ], + "faces": { + "down": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, + "up": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, + "north": { "uv": [ 9, 12, 11, 16 ], "texture": "#texture" }, + "south": { "uv": [ 9, 12, 11, 16 ], "texture": "#texture" }, + "west": { "uv": [ 9, 12, 11, 16 ], "texture": "#texture" }, + "east": { "uv": [ 9, 12, 11, 16 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/bubble_coral_2.json b/src/main/resources/assets/betterend/models/block/bubble_coral_2.json index e612d83e..eeb1e1fd 100644 --- a/src/main/resources/assets/betterend/models/block/bubble_coral_2.json +++ b/src/main/resources/assets/betterend/models/block/bubble_coral_2.json @@ -1,100 +1,100 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/bubble_coral", - "texture": "betterend:block/bubble_coral" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 2, 0, 1 ], - "to": [ 7, 10, 6 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "north": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, - "south": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, - "west": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, - "east": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 10, 0, 2 ], - "to": [ 14, 7, 6 ], - "faces": { - "down": { "uv": [ 0, 5, 4, 9 ], "texture": "#texture" }, - "up": { "uv": [ 0, 5, 4, 9 ], "texture": "#texture" }, - "north": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, - "south": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, - "west": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, - "east": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 6, 0, 8 ], - "to": [ 11, 8, 13 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "north": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, - "south": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, - "west": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, - "east": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 2, 0, 8 ], - "to": [ 5, 5, 11 ], - "faces": { - "down": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, - "up": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, - "north": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, - "south": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, - "west": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, - "east": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 12, 0, 12 ], - "to": [ 15, 5, 15 ], - "faces": { - "down": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, - "up": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, - "north": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, - "south": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, - "west": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, - "east": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 13, 0, 8 ], - "to": [ 15, 4, 10 ], - "faces": { - "down": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, - "up": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, - "north": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, - "south": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, - "west": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, - "east": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 3, 0, 13 ], - "to": [ 5, 4, 15 ], - "faces": { - "down": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, - "up": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, - "north": { "uv": [ 9, 12, 11, 16 ], "texture": "#texture" }, - "south": { "uv": [ 9, 12, 11, 16 ], "texture": "#texture" }, - "west": { "uv": [ 9, 12, 11, 16 ], "texture": "#texture" }, - "east": { "uv": [ 9, 12, 11, 16 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/bubble_coral", + "texture": "betterend:block/bubble_coral" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 2, 0, 1 ], + "to": [ 7, 10, 6 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "north": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, + "south": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, + "west": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, + "east": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 10, 0, 2 ], + "to": [ 14, 7, 6 ], + "faces": { + "down": { "uv": [ 0, 5, 4, 9 ], "texture": "#texture" }, + "up": { "uv": [ 0, 5, 4, 9 ], "texture": "#texture" }, + "north": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, + "south": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, + "west": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, + "east": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 6, 0, 8 ], + "to": [ 11, 8, 13 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "north": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, + "south": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, + "west": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, + "east": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 2, 0, 8 ], + "to": [ 5, 5, 11 ], + "faces": { + "down": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, + "up": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, + "north": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, + "south": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, + "west": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, + "east": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 12, 0, 12 ], + "to": [ 15, 5, 15 ], + "faces": { + "down": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, + "up": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, + "north": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, + "south": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, + "west": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, + "east": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 13, 0, 8 ], + "to": [ 15, 4, 10 ], + "faces": { + "down": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, + "up": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, + "north": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, + "south": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, + "west": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, + "east": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 3, 0, 13 ], + "to": [ 5, 4, 15 ], + "faces": { + "down": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, + "up": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, + "north": { "uv": [ 9, 12, 11, 16 ], "texture": "#texture" }, + "south": { "uv": [ 9, 12, 11, 16 ], "texture": "#texture" }, + "west": { "uv": [ 9, 12, 11, 16 ], "texture": "#texture" }, + "east": { "uv": [ 9, 12, 11, 16 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/bubble_coral_3.json b/src/main/resources/assets/betterend/models/block/bubble_coral_3.json index ec33fe42..b023ca3d 100644 --- a/src/main/resources/assets/betterend/models/block/bubble_coral_3.json +++ b/src/main/resources/assets/betterend/models/block/bubble_coral_3.json @@ -1,100 +1,100 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/bubble_coral", - "texture": "betterend:block/bubble_coral" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 3, 0, 1 ], - "to": [ 8, 10, 6 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "north": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, - "south": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, - "west": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, - "east": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 10, 0, 11 ], - "to": [ 14, 7, 15 ], - "faces": { - "down": { "uv": [ 0, 5, 4, 9 ], "texture": "#texture" }, - "up": { "uv": [ 0, 5, 4, 9 ], "texture": "#texture" }, - "north": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, - "south": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, - "west": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, - "east": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 3, 0, 8 ], - "to": [ 8, 8, 13 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "north": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, - "south": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, - "west": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, - "east": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 11, 0, 1 ], - "to": [ 14, 5, 4 ], - "faces": { - "down": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, - "up": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, - "north": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, - "south": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, - "west": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, - "east": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 1, 0, 14 ], - "to": [ 3, 4, 16 ], - "faces": { - "down": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, - "up": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, - "north": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, - "south": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, - "west": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, - "east": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 0, 0, 4 ], - "to": [ 2, 4, 6 ], - "faces": { - "down": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, - "up": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, - "north": { "uv": [ 13, 12, 15, 16 ], "texture": "#texture" }, - "south": { "uv": [ 13, 12, 15, 16 ], "texture": "#texture" }, - "west": { "uv": [ 13, 12, 15, 16 ], "texture": "#texture" }, - "east": { "uv": [ 13, 12, 15, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 9, 0, 5 ], - "to": [ 14, 12, 10 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "north": { "uv": [ 6, 4, 11, 16 ], "texture": "#texture" }, - "south": { "uv": [ 6, 4, 11, 16 ], "texture": "#texture" }, - "west": { "uv": [ 6, 4, 11, 16 ], "texture": "#texture" }, - "east": { "uv": [ 6, 4, 11, 16 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/bubble_coral", + "texture": "betterend:block/bubble_coral" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 3, 0, 1 ], + "to": [ 8, 10, 6 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "north": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, + "south": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, + "west": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" }, + "east": { "uv": [ 5, 6, 10, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 10, 0, 11 ], + "to": [ 14, 7, 15 ], + "faces": { + "down": { "uv": [ 0, 5, 4, 9 ], "texture": "#texture" }, + "up": { "uv": [ 0, 5, 4, 9 ], "texture": "#texture" }, + "north": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, + "south": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, + "west": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" }, + "east": { "uv": [ 5, 9, 9, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 3, 0, 8 ], + "to": [ 8, 8, 13 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "north": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, + "south": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, + "west": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" }, + "east": { "uv": [ 8, 8, 13, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 11, 0, 1 ], + "to": [ 14, 5, 4 ], + "faces": { + "down": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, + "up": { "uv": [ 0, 9, 3, 12 ], "texture": "#texture" }, + "north": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, + "south": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, + "west": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" }, + "east": { "uv": [ 7, 11, 10, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 1, 0, 14 ], + "to": [ 3, 4, 16 ], + "faces": { + "down": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, + "up": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, + "north": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, + "south": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, + "west": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" }, + "east": { "uv": [ 10, 11, 12, 15 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 0, 0, 4 ], + "to": [ 2, 4, 6 ], + "faces": { + "down": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, + "up": { "uv": [ 0, 12, 2, 14 ], "texture": "#texture" }, + "north": { "uv": [ 13, 12, 15, 16 ], "texture": "#texture" }, + "south": { "uv": [ 13, 12, 15, 16 ], "texture": "#texture" }, + "west": { "uv": [ 13, 12, 15, 16 ], "texture": "#texture" }, + "east": { "uv": [ 13, 12, 15, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 9, 0, 5 ], + "to": [ 14, 12, 10 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "north": { "uv": [ 6, 4, 11, 16 ], "texture": "#texture" }, + "south": { "uv": [ 6, 4, 11, 16 ], "texture": "#texture" }, + "west": { "uv": [ 6, 4, 11, 16 ], "texture": "#texture" }, + "east": { "uv": [ 6, 4, 11, 16 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/chorus_nylium_path.json b/src/main/resources/assets/betterend/models/block/chorus_nylium_path.json index 8dcbf941..34fa8e53 100644 --- a/src/main/resources/assets/betterend/models/block/chorus_nylium_path.json +++ b/src/main/resources/assets/betterend/models/block/chorus_nylium_path.json @@ -1,7 +1,7 @@ -{ "parent": "betterend:block/path", - "textures": { - "top": "betterend:block/chorus_nylium_path_top", - "side": "betterend:block/chorus_nylium_side", - "bottom": "block/end_stone" - } -} +{ "parent": "betterend:block/path", + "textures": { + "top": "betterend:block/chorus_nylium_path_top", + "side": "betterend:block/chorus_nylium_side", + "bottom": "block/end_stone" + } +} diff --git a/src/main/resources/assets/betterend/models/block/chorus_outer_stairs.json b/src/main/resources/assets/betterend/models/block/chorus_outer_stairs.json index 797a3dac..de2c9e18 100644 --- a/src/main/resources/assets/betterend/models/block/chorus_outer_stairs.json +++ b/src/main/resources/assets/betterend/models/block/chorus_outer_stairs.json @@ -1,8 +1,8 @@ -{ - "parent": "block/outer_stairs", - "textures": { - "bottom": "betterend:block/chorus_planks", - "side": "betterend:block/chorus_planks", - "top": "betterend:block/chorus_planks" - } -} +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "betterend:block/chorus_planks", + "side": "betterend:block/chorus_planks", + "top": "betterend:block/chorus_planks" + } +} diff --git a/src/main/resources/assets/betterend/models/block/chorus_plant_center.json b/src/main/resources/assets/betterend/models/block/chorus_plant_center.json index 9ec24155..c3a149cc 100644 --- a/src/main/resources/assets/betterend/models/block/chorus_plant_center.json +++ b/src/main/resources/assets/betterend/models/block/chorus_plant_center.json @@ -1,23 +1,23 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "parent": "block/block", - "textures": { - "particle": "betterend:block/chorus_plant", - "texture": "betterend:block/chorus_plant" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 4, 4, 4 ], - "to": [ 12, 12, 12 ], - "faces": { - "down": { "uv": [ 4, 4, 12, 12 ], "texture": "#texture" }, - "up": { "uv": [ 4, 4, 12, 12 ], "texture": "#texture" }, - "north": { "uv": [ 4, 4, 12, 12 ], "texture": "#texture" }, - "south": { "uv": [ 4, 4, 12, 12 ], "texture": "#texture" }, - "west": { "uv": [ 4, 4, 12, 12 ], "texture": "#texture" }, - "east": { "uv": [ 4, 4, 12, 12 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "parent": "block/block", + "textures": { + "particle": "betterend:block/chorus_plant", + "texture": "betterend:block/chorus_plant" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 4, 4, 4 ], + "to": [ 12, 12, 12 ], + "faces": { + "down": { "uv": [ 4, 4, 12, 12 ], "texture": "#texture" }, + "up": { "uv": [ 4, 4, 12, 12 ], "texture": "#texture" }, + "north": { "uv": [ 4, 4, 12, 12 ], "texture": "#texture" }, + "south": { "uv": [ 4, 4, 12, 12 ], "texture": "#texture" }, + "west": { "uv": [ 4, 4, 12, 12 ], "texture": "#texture" }, + "east": { "uv": [ 4, 4, 12, 12 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/chorus_plant_flower.json b/src/main/resources/assets/betterend/models/block/chorus_plant_flower.json index f22c2f23..3ee74dc6 100644 --- a/src/main/resources/assets/betterend/models/block/chorus_plant_flower.json +++ b/src/main/resources/assets/betterend/models/block/chorus_plant_flower.json @@ -1,51 +1,51 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "parent": "block/block", - "textures": { - "particle": "betterend:block/chorus_plant_flower_side", - "side": "betterend:block/chorus_plant_flower_side", - "top": "betterend:block/chorus_plant_flower_top", - "bottom": "betterend:block/chorus_plant_flower_bottom" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 0, 2, 2 ], - "to": [ 16, 14, 14 ], - "faces": { - "down": { "uv": [ 0, 2, 16, 14 ], "texture": "#bottom" }, - "up": { "uv": [ 0, 2, 16, 14 ], "texture": "#top" }, - "north": { "uv": [ 0, 2, 16, 14 ], "texture": "#side" }, - "south": { "uv": [ 0, 2, 16, 14 ], "texture": "#side" }, - "west": { "uv": [ 2, 2, 14, 14 ], "texture": "#side" }, - "east": { "uv": [ 2, 2, 14, 14 ], "texture": "#side" } - } - }, - { - "__comment": "Box1", - "from": [ 2, 2, 0 ], - "to": [ 14, 14, 16 ], - "faces": { - "down": { "uv": [ 2, 0, 14, 16 ], "texture": "#bottom" }, - "up": { "uv": [ 2, 0, 14, 16 ], "texture": "#top" }, - "north": { "uv": [ 2, 2, 14, 14 ], "texture": "#side" }, - "south": { "uv": [ 2, 2, 14, 14 ], "texture": "#side" }, - "west": { "uv": [ 0, 2, 16, 14 ], "texture": "#side" }, - "east": { "uv": [ 0, 2, 16, 14 ], "texture": "#side" } - } - }, - { - "__comment": "Box1", - "from": [ 2, 0, 2 ], - "to": [ 14, 16, 14 ], - "faces": { - "down": { "uv": [ 2, 2, 14, 14 ], "texture": "#bottom" }, - "up": { "uv": [ 2, 2, 14, 14 ], "texture": "#top" }, - "north": { "uv": [ 2, 0, 14, 16 ], "texture": "#side" }, - "south": { "uv": [ 2, 0, 14, 16 ], "texture": "#side" }, - "west": { "uv": [ 2, 0, 14, 16 ], "texture": "#side" }, - "east": { "uv": [ 2, 0, 14, 16 ], "texture": "#side" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "parent": "block/block", + "textures": { + "particle": "betterend:block/chorus_plant_flower_side", + "side": "betterend:block/chorus_plant_flower_side", + "top": "betterend:block/chorus_plant_flower_top", + "bottom": "betterend:block/chorus_plant_flower_bottom" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 0, 2, 2 ], + "to": [ 16, 14, 14 ], + "faces": { + "down": { "uv": [ 0, 2, 16, 14 ], "texture": "#bottom" }, + "up": { "uv": [ 0, 2, 16, 14 ], "texture": "#top" }, + "north": { "uv": [ 0, 2, 16, 14 ], "texture": "#side" }, + "south": { "uv": [ 0, 2, 16, 14 ], "texture": "#side" }, + "west": { "uv": [ 2, 2, 14, 14 ], "texture": "#side" }, + "east": { "uv": [ 2, 2, 14, 14 ], "texture": "#side" } + } + }, + { + "__comment": "Box1", + "from": [ 2, 2, 0 ], + "to": [ 14, 14, 16 ], + "faces": { + "down": { "uv": [ 2, 0, 14, 16 ], "texture": "#bottom" }, + "up": { "uv": [ 2, 0, 14, 16 ], "texture": "#top" }, + "north": { "uv": [ 2, 2, 14, 14 ], "texture": "#side" }, + "south": { "uv": [ 2, 2, 14, 14 ], "texture": "#side" }, + "west": { "uv": [ 0, 2, 16, 14 ], "texture": "#side" }, + "east": { "uv": [ 0, 2, 16, 14 ], "texture": "#side" } + } + }, + { + "__comment": "Box1", + "from": [ 2, 0, 2 ], + "to": [ 14, 16, 14 ], + "faces": { + "down": { "uv": [ 2, 2, 14, 14 ], "texture": "#bottom" }, + "up": { "uv": [ 2, 2, 14, 14 ], "texture": "#top" }, + "north": { "uv": [ 2, 0, 14, 16 ], "texture": "#side" }, + "south": { "uv": [ 2, 0, 14, 16 ], "texture": "#side" }, + "west": { "uv": [ 2, 0, 14, 16 ], "texture": "#side" }, + "east": { "uv": [ 2, 0, 14, 16 ], "texture": "#side" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/chorus_plant_flower_open.json b/src/main/resources/assets/betterend/models/block/chorus_plant_flower_open.json index 83fdaf4f..58713358 100644 --- a/src/main/resources/assets/betterend/models/block/chorus_plant_flower_open.json +++ b/src/main/resources/assets/betterend/models/block/chorus_plant_flower_open.json @@ -1,175 +1,175 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/chorus_plant_flower_petal", - "texture": "betterend:block/chorus_plant_flower_petal", - "center": "betterend:block/chorus_plant_flower_center", - "texture1": "betterend:block/chorus_plant_flower_fur" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 4, 0, 4 ], - "to": [ 12, 2, 12 ], - "faces": { - "down": { "uv": [ 0, 8, 8, 16 ], "texture": "#center" }, - "up": { "uv": [ 0, 0, 8, 8 ], "texture": "#center" }, - "north": { "uv": [ 8, 14, 16, 16 ], "texture": "#center" }, - "south": { "uv": [ 8, 14, 16, 16 ], "texture": "#center" }, - "west": { "uv": [ 8, 14, 16, 16 ], "texture": "#center" }, - "east": { "uv": [ 8, 14, 16, 16 ], "texture": "#center" } - } - }, - { - "__comment": "PlaneY2", - "from": [ 4.5, 1.125, 16 ], - "to": [ 20.5, 1.126, 32 ], - "rotation": { "origin": [ 4.5, 1.125, 16 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY2", - "from": [ 0, 1.25, 4.5 ], - "to": [ 16, 1.251, 20.5 ], - "rotation": { "origin": [ 0, 1.25, 4.5 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY2", - "from": [ -4.5, 1.375, -16 ], - "to": [ 11.5, 1.376, 0 ], - "rotation": { "origin": [ 11.5, 1.375, 0 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY2", - "from": [ 0, 1, -4.5 ], - "to": [ 16, 1.001, 11.5 ], - "rotation": { "origin": [ 16, 1, 11.5 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX6", - "from": [ 11, 0.999, 0.5 ], - "to": [ 20, 0.9999999, 16.5 ], - "rotation": { "origin": [ 11, 1, 0.5 ], "axis": "z", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture", "rotation": 90 }, - "up": { "uv": [ 16, 16, 0, 7 ], "texture": "#texture", "rotation": 270 } - } - }, - { - "__comment": "PlaneX6", - "from": [ 19.25, 4.374, 0.5 ], - "to": [ 28.25, 4.375, 16.5 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 9 ], "texture": "#texture", "rotation": 90 }, - "up": { "uv": [ 16, 9, 0, 0 ], "texture": "#texture", "rotation": 270 } - } - }, - { - "__comment": "PlaneY11", - "from": [ -3, 0.999, 0 ], - "to": [ 5, 0.9999999, 16 ], - "rotation": { "origin": [ 5, 1, 0 ], "axis": "z", "angle": -22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture", "rotation": 270 }, - "up": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture", "rotation": 270 } - } - }, - { - "__comment": "PlaneY11", - "from": [ -10.375, 3.999, 0 ], - "to": [ -2.375, 4, 16 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 8 ], "texture": "#texture", "rotation": 270 }, - "up": { "uv": [ 0, 0, 16, 8 ], "texture": "#texture", "rotation": 270 } - } - }, - { - "__comment": "PlaneY13", - "from": [ -0.5, 1, 11 ], - "to": [ 15.5, 1.001, 20 ], - "rotation": { "origin": [ -0.5, 1, 11 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY13", - "from": [ -0.5, 4.5, 19.25 ], - "to": [ 15.5, 4.501, 28.25 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 9 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 16, 9 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY18", - "from": [ 1, 0.999, -4 ], - "to": [ 17, 0.9999999, 5 ], - "rotation": { "origin": [ 1, 1, 5 ], "axis": "x", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture", "rotation": 180 }, - "up": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY18", - "from": [ 1, 4.374, -12.25 ], - "to": [ 17, 4.375, -3.25 ], - "rotation": { "origin": [ 1, 4.375, -3.25 ], "axis": "x", "angle": 0 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 8 ], "texture": "#texture", "rotation": 180 }, - "up": { "uv": [ 0, 0, 16, 8 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX20", - "from": [ 2, 1, 2 ], - "to": [ 2.001, 8, 18 ], - "rotation": { "origin": [ 2, 1, 2 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 9, 16, 16 ], "texture": "#texture1" }, - "east": { "uv": [ 0, 9, 16, 16 ], "texture": "#texture1" } - } - }, - { - "__comment": "PlaneX20", - "from": [ 14, 1, 2 ], - "to": [ 14.001, 8, 18 ], - "rotation": { "origin": [ 14, 1, 2 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 9, 16, 16 ], "texture": "#texture1" }, - "east": { "uv": [ 0, 9, 16, 16 ], "texture": "#texture1" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/chorus_plant_flower_petal", + "texture": "betterend:block/chorus_plant_flower_petal", + "center": "betterend:block/chorus_plant_flower_center", + "texture1": "betterend:block/chorus_plant_flower_fur" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 4, 0, 4 ], + "to": [ 12, 2, 12 ], + "faces": { + "down": { "uv": [ 0, 8, 8, 16 ], "texture": "#center" }, + "up": { "uv": [ 0, 0, 8, 8 ], "texture": "#center" }, + "north": { "uv": [ 8, 14, 16, 16 ], "texture": "#center" }, + "south": { "uv": [ 8, 14, 16, 16 ], "texture": "#center" }, + "west": { "uv": [ 8, 14, 16, 16 ], "texture": "#center" }, + "east": { "uv": [ 8, 14, 16, 16 ], "texture": "#center" } + } + }, + { + "__comment": "PlaneY2", + "from": [ 4.5, 1.125, 16 ], + "to": [ 20.5, 1.126, 32 ], + "rotation": { "origin": [ 4.5, 1.125, 16 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY2", + "from": [ 0, 1.25, 4.5 ], + "to": [ 16, 1.251, 20.5 ], + "rotation": { "origin": [ 0, 1.25, 4.5 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY2", + "from": [ -4.5, 1.375, -16 ], + "to": [ 11.5, 1.376, 0 ], + "rotation": { "origin": [ 11.5, 1.375, 0 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY2", + "from": [ 0, 1, -4.5 ], + "to": [ 16, 1.001, 11.5 ], + "rotation": { "origin": [ 16, 1, 11.5 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX6", + "from": [ 11, 0.999, 0.5 ], + "to": [ 20, 0.9999999, 16.5 ], + "rotation": { "origin": [ 11, 1, 0.5 ], "axis": "z", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 16, 16, 0, 7 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneX6", + "from": [ 19.25, 4.374, 0.5 ], + "to": [ 28.25, 4.375, 16.5 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 9 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 16, 9, 0, 0 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneY11", + "from": [ -3, 0.999, 0 ], + "to": [ 5, 0.9999999, 16 ], + "rotation": { "origin": [ 5, 1, 0 ], "axis": "z", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneY11", + "from": [ -10.375, 3.999, 0 ], + "to": [ -2.375, 4, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 8 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 8 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneY13", + "from": [ -0.5, 1, 11 ], + "to": [ 15.5, 1.001, 20 ], + "rotation": { "origin": [ -0.5, 1, 11 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY13", + "from": [ -0.5, 4.5, 19.25 ], + "to": [ 15.5, 4.501, 28.25 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 9 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 9 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY18", + "from": [ 1, 0.999, -4 ], + "to": [ 17, 0.9999999, 5 ], + "rotation": { "origin": [ 1, 1, 5 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 0, 8, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY18", + "from": [ 1, 4.374, -12.25 ], + "to": [ 17, 4.375, -3.25 ], + "rotation": { "origin": [ 1, 4.375, -3.25 ], "axis": "x", "angle": 0 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 8 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 8 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX20", + "from": [ 2, 1, 2 ], + "to": [ 2.001, 8, 18 ], + "rotation": { "origin": [ 2, 1, 2 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 9, 16, 16 ], "texture": "#texture1" }, + "east": { "uv": [ 0, 9, 16, 16 ], "texture": "#texture1" } + } + }, + { + "__comment": "PlaneX20", + "from": [ 14, 1, 2 ], + "to": [ 14.001, 8, 18 ], + "rotation": { "origin": [ 14, 1, 2 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 9, 16, 16 ], "texture": "#texture1" }, + "east": { "uv": [ 0, 9, 16, 16 ], "texture": "#texture1" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/chorus_plant_roots.json b/src/main/resources/assets/betterend/models/block/chorus_plant_roots.json index f577c244..8690f2c9 100644 --- a/src/main/resources/assets/betterend/models/block/chorus_plant_roots.json +++ b/src/main/resources/assets/betterend/models/block/chorus_plant_roots.json @@ -1,49 +1,49 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/chorus_plant_roots", - "texture": "betterend:block/chorus_plant_roots" - }, - "elements": [ - { - "__comment": "PlaneX4", - "from": [ 6, 0, 0 ], - "to": [ 6.001, 16, 16 ], - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneZ5", - "from": [ 0, 0, 6 ], - "to": [ 16, 16, 6.001 ], - "shade": false, - "faces": { - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneZ5", - "from": [ 0, 0, 10 ], - "to": [ 16, 16, 10.001 ], - "shade": false, - "faces": { - "north": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "south": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 10, 0, 0 ], - "to": [ 10.001, 16, 16 ], - "shade": false, - "faces": { - "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/chorus_plant_roots", + "texture": "betterend:block/chorus_plant_roots" + }, + "elements": [ + { + "__comment": "PlaneX4", + "from": [ 6, 0, 0 ], + "to": [ 6.001, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneZ5", + "from": [ 0, 0, 6 ], + "to": [ 16, 16, 6.001 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneZ5", + "from": [ 0, 0, 10 ], + "to": [ 16, 16, 10.001 ], + "shade": false, + "faces": { + "north": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "south": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 10, 0, 0 ], + "to": [ 10.001, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/chorus_plant_stem.json b/src/main/resources/assets/betterend/models/block/chorus_plant_stem.json index b3e6601f..af1adcdb 100644 --- a/src/main/resources/assets/betterend/models/block/chorus_plant_stem.json +++ b/src/main/resources/assets/betterend/models/block/chorus_plant_stem.json @@ -1,45 +1,45 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/chorus_plant", - "texture": "betterend:block/chorus_plant", - "needles": "betterend:block/chorus_plant_needles" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 5, 0, 5 ], - "to": [ 11, 8, 11 ], - "faces": { - "down": { "uv": [ 5, 5, 11, 11 ], "texture": "#texture" }, - "up": { "uv": [ 5, 5, 11, 11 ], "texture": "#texture" }, - "north": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, - "south": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, - "west": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, - "east": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX2", - "from": [ 0, 0, 0 ], - "to": [ 0.001, 8, 22.5 ], - "rotation": { "origin": [ 0, 0, 0 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" }, - "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" } - } - }, - { - "__comment": "PlaneX2", - "from": [ 16, 0, 0 ], - "to": [ 16.001, 8, 22.5 ], - "rotation": { "origin": [ 16, 0, 0 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" }, - "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/chorus_plant", + "texture": "betterend:block/chorus_plant", + "needles": "betterend:block/chorus_plant_needles" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 5, 0, 5 ], + "to": [ 11, 8, 11 ], + "faces": { + "down": { "uv": [ 5, 5, 11, 11 ], "texture": "#texture" }, + "up": { "uv": [ 5, 5, 11, 11 ], "texture": "#texture" }, + "north": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, + "south": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, + "west": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, + "east": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX2", + "from": [ 0, 0, 0 ], + "to": [ 0.001, 8, 22.5 ], + "rotation": { "origin": [ 0, 0, 0 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" }, + "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" } + } + }, + { + "__comment": "PlaneX2", + "from": [ 16, 0, 0 ], + "to": [ 16.001, 8, 22.5 ], + "rotation": { "origin": [ 16, 0, 0 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" }, + "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/chorus_plant_stem_2.json b/src/main/resources/assets/betterend/models/block/chorus_plant_stem_2.json index 893841a8..c2f85896 100644 --- a/src/main/resources/assets/betterend/models/block/chorus_plant_stem_2.json +++ b/src/main/resources/assets/betterend/models/block/chorus_plant_stem_2.json @@ -1,45 +1,45 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/chorus_plant", - "texture": "betterend:block/chorus_plant", - "needles": "betterend:block/chorus_plant_needles_2" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 5, 0, 5 ], - "to": [ 11, 8, 11 ], - "faces": { - "down": { "uv": [ 5, 5, 11, 11 ], "texture": "#texture" }, - "up": { "uv": [ 5, 5, 11, 11 ], "texture": "#texture" }, - "north": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, - "south": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, - "west": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, - "east": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX2", - "from": [ 0, 0, 0 ], - "to": [ 0.001, 8, 22.5 ], - "rotation": { "origin": [ 0, 0, 0 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" }, - "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" } - } - }, - { - "__comment": "PlaneX2", - "from": [ 16, 0, 0 ], - "to": [ 16.001, 8, 22.5 ], - "rotation": { "origin": [ 16, 0, 0 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" }, - "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/chorus_plant", + "texture": "betterend:block/chorus_plant", + "needles": "betterend:block/chorus_plant_needles_2" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 5, 0, 5 ], + "to": [ 11, 8, 11 ], + "faces": { + "down": { "uv": [ 5, 5, 11, 11 ], "texture": "#texture" }, + "up": { "uv": [ 5, 5, 11, 11 ], "texture": "#texture" }, + "north": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, + "south": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, + "west": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, + "east": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX2", + "from": [ 0, 0, 0 ], + "to": [ 0.001, 8, 22.5 ], + "rotation": { "origin": [ 0, 0, 0 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" }, + "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" } + } + }, + { + "__comment": "PlaneX2", + "from": [ 16, 0, 0 ], + "to": [ 16.001, 8, 22.5 ], + "rotation": { "origin": [ 16, 0, 0 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" }, + "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/chorus_plant_stem_3.json b/src/main/resources/assets/betterend/models/block/chorus_plant_stem_3.json index aaae8628..36c94c3f 100644 --- a/src/main/resources/assets/betterend/models/block/chorus_plant_stem_3.json +++ b/src/main/resources/assets/betterend/models/block/chorus_plant_stem_3.json @@ -1,45 +1,45 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/chorus_plant", - "texture": "betterend:block/chorus_plant", - "needles": "betterend:block/chorus_plant_needles_3" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 5, 0, 5 ], - "to": [ 11, 8, 11 ], - "faces": { - "down": { "uv": [ 5, 5, 11, 11 ], "texture": "#texture" }, - "up": { "uv": [ 5, 5, 11, 11 ], "texture": "#texture" }, - "north": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, - "south": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, - "west": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, - "east": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX2", - "from": [ 0, 0, 0 ], - "to": [ 0.001, 8, 22.5 ], - "rotation": { "origin": [ 0, 0, 0 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" }, - "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" } - } - }, - { - "__comment": "PlaneX2", - "from": [ 16, 0, 0 ], - "to": [ 16.001, 8, 22.5 ], - "rotation": { "origin": [ 16, 0, 0 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" }, - "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/chorus_plant", + "texture": "betterend:block/chorus_plant", + "needles": "betterend:block/chorus_plant_needles_3" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 5, 0, 5 ], + "to": [ 11, 8, 11 ], + "faces": { + "down": { "uv": [ 5, 5, 11, 11 ], "texture": "#texture" }, + "up": { "uv": [ 5, 5, 11, 11 ], "texture": "#texture" }, + "north": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, + "south": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, + "west": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, + "east": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX2", + "from": [ 0, 0, 0 ], + "to": [ 0.001, 8, 22.5 ], + "rotation": { "origin": [ 0, 0, 0 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" }, + "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" } + } + }, + { + "__comment": "PlaneX2", + "from": [ 16, 0, 0 ], + "to": [ 16.001, 8, 22.5 ], + "rotation": { "origin": [ 16, 0, 0 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" }, + "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/chorus_plant_stem_4.json b/src/main/resources/assets/betterend/models/block/chorus_plant_stem_4.json index 3659621a..227edb67 100644 --- a/src/main/resources/assets/betterend/models/block/chorus_plant_stem_4.json +++ b/src/main/resources/assets/betterend/models/block/chorus_plant_stem_4.json @@ -1,45 +1,45 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/chorus_plant", - "texture": "betterend:block/chorus_plant", - "needles": "betterend:block/chorus_plant_needles_4" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 5, 0, 5 ], - "to": [ 11, 8, 11 ], - "faces": { - "down": { "uv": [ 5, 5, 11, 11 ], "texture": "#texture" }, - "up": { "uv": [ 5, 5, 11, 11 ], "texture": "#texture" }, - "north": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, - "south": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, - "west": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, - "east": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX2", - "from": [ 0, 0, 0 ], - "to": [ 0.001, 8, 22.5 ], - "rotation": { "origin": [ 0, 0, 0 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" }, - "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" } - } - }, - { - "__comment": "PlaneX2", - "from": [ 16, 0, 0 ], - "to": [ 16.001, 8, 22.5 ], - "rotation": { "origin": [ 16, 0, 0 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" }, - "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/chorus_plant", + "texture": "betterend:block/chorus_plant", + "needles": "betterend:block/chorus_plant_needles_4" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 5, 0, 5 ], + "to": [ 11, 8, 11 ], + "faces": { + "down": { "uv": [ 5, 5, 11, 11 ], "texture": "#texture" }, + "up": { "uv": [ 5, 5, 11, 11 ], "texture": "#texture" }, + "north": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, + "south": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, + "west": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" }, + "east": { "uv": [ 5, 8, 11, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX2", + "from": [ 0, 0, 0 ], + "to": [ 0.001, 8, 22.5 ], + "rotation": { "origin": [ 0, 0, 0 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" }, + "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" } + } + }, + { + "__comment": "PlaneX2", + "from": [ 16, 0, 0 ], + "to": [ 16.001, 8, 22.5 ], + "rotation": { "origin": [ 16, 0, 0 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" }, + "east": { "uv": [ 0, 0, 16, 8 ], "texture": "#needles" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/creeping_moss.json b/src/main/resources/assets/betterend/models/block/creeping_moss.json index 01a9b37f..7b302528 100644 --- a/src/main/resources/assets/betterend/models/block/creeping_moss.json +++ b/src/main/resources/assets/betterend/models/block/creeping_moss.json @@ -1,120 +1,120 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/creeping_moss_leaves", - "texture": "betterend:block/creeping_moss_leaves", - "spore": "betterend:block/creeping_moss_spores" - }, - "elements": [ - { - "__comment": "PlaneY1", - "from": [ 0, -0.001, -10 ], - "to": [ 16, 0, 6 ], - "rotation": { "origin": [ 0, 0, 6 ], "axis": "x", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY1", - "from": [ 0, 0, 10 ], - "to": [ 16, 0.001, 26 ], - "rotation": { "origin": [ 0, 0, 10 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY4", - "from": [ 10, -0.001, 0 ], - "to": [ 26, 0, 16 ], - "rotation": { "origin": [ 10, 0, 16 ], "axis": "z", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 90 }, - "up": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture", "rotation": 270 } - } - }, - { - "__comment": "PlaneY4", - "from": [ -10, 0, 2 ], - "to": [ 6, 0.001, 18 ], - "rotation": { "origin": [ 6, 0, 18 ], "axis": "z", "angle": -22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 }, - "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 270 } - } - }, - { - "__comment": "PlaneX6", - "from": [ 0, 0, -6.5 ], - "to": [ 0.001, 16, 16 ], - "rotation": { "origin": [ 0, 16, 16 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX6", - "from": [ -6.5, 0, 15.999 ], - "to": [ 16, 16, 16 ], - "rotation": { "origin": [ 16, 16, 16 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneY1", - "from": [ 0, -0.001, -9 ], - "to": [ 16, 0, 7 ], - "rotation": { "origin": [ 0, 0, 7 ], "axis": "x", "angle": 45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 }, - "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY1", - "from": [ 0, 0, 9 ], - "to": [ 16, 0.001, 25 ], - "rotation": { "origin": [ 0, 0, 9 ], "axis": "x", "angle": -45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY4", - "from": [ 9, -0.001, 0 ], - "to": [ 25, 0, 16 ], - "rotation": { "origin": [ 9, 0, 16 ], "axis": "z", "angle": 45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 90 }, - "up": { "uv": [ 16, 16, 0, 0 ], "texture": "#texture", "rotation": 270 } - } - }, - { - "__comment": "PlaneY4", - "from": [ -9, 0, 2 ], - "to": [ 7, 0.001, 18 ], - "rotation": { "origin": [ 7, 0, 18 ], "axis": "z", "angle": -45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 270 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/creeping_moss_leaves", + "texture": "betterend:block/creeping_moss_leaves", + "spore": "betterend:block/creeping_moss_spores" + }, + "elements": [ + { + "__comment": "PlaneY1", + "from": [ 0, -0.001, -10 ], + "to": [ 16, 0, 6 ], + "rotation": { "origin": [ 0, 0, 6 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, 0, 10 ], + "to": [ 16, 0.001, 26 ], + "rotation": { "origin": [ 0, 0, 10 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY4", + "from": [ 10, -0.001, 0 ], + "to": [ 26, 0, 16 ], + "rotation": { "origin": [ 10, 0, 16 ], "axis": "z", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneY4", + "from": [ -10, 0, 2 ], + "to": [ 6, 0.001, 18 ], + "rotation": { "origin": [ 6, 0, 18 ], "axis": "z", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneX6", + "from": [ 0, 0, -6.5 ], + "to": [ 0.001, 16, 16 ], + "rotation": { "origin": [ 0, 16, 16 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX6", + "from": [ -6.5, 0, 15.999 ], + "to": [ 16, 16, 16 ], + "rotation": { "origin": [ 16, 16, 16 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, -0.001, -9 ], + "to": [ 16, 0, 7 ], + "rotation": { "origin": [ 0, 0, 7 ], "axis": "x", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, 0, 9 ], + "to": [ 16, 0.001, 25 ], + "rotation": { "origin": [ 0, 0, 9 ], "axis": "x", "angle": -45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY4", + "from": [ 9, -0.001, 0 ], + "to": [ 25, 0, 16 ], + "rotation": { "origin": [ 9, 0, 16 ], "axis": "z", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 16, 16, 0, 0 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneY4", + "from": [ -9, 0, 2 ], + "to": [ 7, 0.001, 18 ], + "rotation": { "origin": [ 7, 0, 18 ], "axis": "z", "angle": -45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/crop_block_inverted.json b/src/main/resources/assets/betterend/models/block/crop_block_inverted.json index 8d5c9a19..b7794ac1 100644 --- a/src/main/resources/assets/betterend/models/block/crop_block_inverted.json +++ b/src/main/resources/assets/betterend/models/block/crop_block_inverted.json @@ -1,40 +1,40 @@ -{ - "ambientocclusion": false, - "textures": { - "particle": "#texture" - }, - "elements": [ - { "from": [ 4, 0, 0 ], - "to": [ 4, 16, 16 ], - "shade": false, - "faces": { - "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } - } - }, - { "from": [ 12, 0, 0 ], - "to": [ 12, 16, 16 ], - "shade": false, - "faces": { - "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } - } - }, - { "from": [ 0, 0, 4 ], - "to": [ 16, 16, 4 ], - "shade": false, - "faces": { - "north": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "south": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } - } - }, - { "from": [ 0, 0, 12 ], - "to": [ 16, 16, 12 ], - "shade": false, - "faces": { - "north": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "south": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } - } - } - ] -} +{ + "ambientocclusion": false, + "textures": { + "particle": "#texture" + }, + "elements": [ + { "from": [ 4, 0, 0 ], + "to": [ 4, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } + } + }, + { "from": [ 12, 0, 0 ], + "to": [ 12, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } + } + }, + { "from": [ 0, 0, 4 ], + "to": [ 16, 16, 4 ], + "shade": false, + "faces": { + "north": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "south": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } + } + }, + { "from": [ 0, 0, 12 ], + "to": [ 16, 16, 12 ], + "shade": false, + "faces": { + "north": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "south": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } + } + } + ] +} diff --git a/src/main/resources/assets/betterend/models/block/cross_inverted.json b/src/main/resources/assets/betterend/models/block/cross_inverted.json index 5f4f8f7a..f9318db3 100644 --- a/src/main/resources/assets/betterend/models/block/cross_inverted.json +++ b/src/main/resources/assets/betterend/models/block/cross_inverted.json @@ -1,26 +1,26 @@ -{ - "ambientocclusion": false, - "textures": { - "particle": "#cross" - }, - "elements": [ - { "from": [ 0.8, 0, 8 ], - "to": [ 15.2, 16, 8 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, - "shade": false, - "faces": { - "north": { "uv": [ 16, 0, 0, 16 ], "texture": "#cross" }, - "south": { "uv": [ 16, 0, 0, 16 ], "texture": "#cross" } - } - }, - { "from": [ 8, 0, 0.8 ], - "to": [ 8, 16, 15.2 ], - "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, - "shade": false, - "faces": { - "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#cross" }, - "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#cross" } - } - } - ] -} +{ + "ambientocclusion": false, + "textures": { + "particle": "#cross" + }, + "elements": [ + { "from": [ 0.8, 0, 8 ], + "to": [ 15.2, 16, 8 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "north": { "uv": [ 16, 0, 0, 16 ], "texture": "#cross" }, + "south": { "uv": [ 16, 0, 0, 16 ], "texture": "#cross" } + } + }, + { "from": [ 8, 0, 0.8 ], + "to": [ 8, 16, 15.2 ], + "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true }, + "shade": false, + "faces": { + "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#cross" }, + "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#cross" } + } + } + ] +} diff --git a/src/main/resources/assets/betterend/models/block/cross_no_distortion.json b/src/main/resources/assets/betterend/models/block/cross_no_distortion.json index dc78e239..b49ed6ac 100644 --- a/src/main/resources/assets/betterend/models/block/cross_no_distortion.json +++ b/src/main/resources/assets/betterend/models/block/cross_no_distortion.json @@ -1,29 +1,29 @@ -{ - "textures": { - "particle": "#texture" - }, - "elements": [ - { - "__comment": "PlaneX1", - "from": [ 2.375, 0, 2.25 ], - "to": [ 2.376, 16, 18.25 ], - "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX1", - "from": [ 13.75, 0, 2.25 ], - "to": [ 13.751, 16, 18.25 ], - "rotation": { "origin": [ 13.75, 0, 2.25 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - } - ] +{ + "textures": { + "particle": "#texture" + }, + "elements": [ + { + "__comment": "PlaneX1", + "from": [ 2.375, 0, 2.25 ], + "to": [ 2.376, 16, 18.25 ], + "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX1", + "from": [ 13.75, 0, 2.25 ], + "to": [ 13.751, 16, 18.25 ], + "rotation": { "origin": [ 13.75, 0, 2.25 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/cross_no_distortion_inverted.json b/src/main/resources/assets/betterend/models/block/cross_no_distortion_inverted.json index 429eb5ea..74f12df2 100644 --- a/src/main/resources/assets/betterend/models/block/cross_no_distortion_inverted.json +++ b/src/main/resources/assets/betterend/models/block/cross_no_distortion_inverted.json @@ -1,29 +1,29 @@ -{ - "textures": { - "particle": "#texture" - }, - "elements": [ - { - "__comment": "PlaneX1", - "from": [ 2.375, 0, 2.25 ], - "to": [ 2.376, 16, 18.25 ], - "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX1", - "from": [ 13.75, 0, 2.25 ], - "to": [ 13.751, 16, 18.25 ], - "rotation": { "origin": [ 13.75, 0, 2.25 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } - } - } - ] +{ + "textures": { + "particle": "#texture" + }, + "elements": [ + { + "__comment": "PlaneX1", + "from": [ 2.375, 0, 2.25 ], + "to": [ 2.376, 16, 18.25 ], + "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX1", + "from": [ 13.75, 0, 2.25 ], + "to": [ 13.751, 16, 18.25 ], + "rotation": { "origin": [ 13.75, 0, 2.25 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/crystal_grass_1.json b/src/main/resources/assets/betterend/models/block/crystal_grass_1.json index 02f092b4..730eca21 100644 --- a/src/main/resources/assets/betterend/models/block/crystal_grass_1.json +++ b/src/main/resources/assets/betterend/models/block/crystal_grass_1.json @@ -1,126 +1,126 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/crystal_grass_2", - "texture": "betterend:block/crystal_grass_2" - }, - "elements": [ - { - "__comment": "PlaneX3", - "from": [ 2, 0, 2 ], - "to": [ 2.001, 9, 18 ], - "rotation": { "origin": [ 2, 0, 2 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 14, 0, 2 ], - "to": [ 14.001, 9, 18 ], - "rotation": { "origin": [ 14, 0, 2 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 5.5, 8.5, 5.5 ], - "to": [ 10.5, 8.501, 10.5 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 4.5, 8, 8 ], - "to": [ 9.5, 8.001, 13 ], - "rotation": { "origin": [ 4.5, 8, 8 ], "axis": "y", "angle": 45 }, - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 1.125, 3.5, 1 ], - "to": [ 6.125, 3.501, 6 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 0.125, 3, 3.5 ], - "to": [ 5.125, 3.001, 8.5 ], - "rotation": { "origin": [ 0.125, 3, 3.5 ], "axis": "y", "angle": 45 }, - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 9.75, 3.5, 1.25 ], - "to": [ 14.75, 3.501, 6.25 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 8.75, 3, 3.75 ], - "to": [ 13.75, 3.001, 8.75 ], - "rotation": { "origin": [ 8.75, 3, 3.75 ], "axis": "y", "angle": 45 }, - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 9, 4.5, 9.125 ], - "to": [ 14, 4.501, 14.125 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 8, 4, 11.625 ], - "to": [ 13, 4.001, 16.625 ], - "rotation": { "origin": [ 8, 4, 11.625 ], "axis": "y", "angle": 45 }, - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 2, 4.5, 9 ], - "to": [ 7, 4.501, 14 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 1, 4, 11.5 ], - "to": [ 6, 4.001, 16.5 ], - "rotation": { "origin": [ 1, 4, 11.5 ], "axis": "y", "angle": 45 }, - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/crystal_grass_2", + "texture": "betterend:block/crystal_grass_2" + }, + "elements": [ + { + "__comment": "PlaneX3", + "from": [ 2, 0, 2 ], + "to": [ 2.001, 9, 18 ], + "rotation": { "origin": [ 2, 0, 2 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 14, 0, 2 ], + "to": [ 14.001, 9, 18 ], + "rotation": { "origin": [ 14, 0, 2 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 5.5, 8.5, 5.5 ], + "to": [ 10.5, 8.501, 10.5 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 4.5, 8, 8 ], + "to": [ 9.5, 8.001, 13 ], + "rotation": { "origin": [ 4.5, 8, 8 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 1.125, 3.5, 1 ], + "to": [ 6.125, 3.501, 6 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 0.125, 3, 3.5 ], + "to": [ 5.125, 3.001, 8.5 ], + "rotation": { "origin": [ 0.125, 3, 3.5 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 9.75, 3.5, 1.25 ], + "to": [ 14.75, 3.501, 6.25 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 8.75, 3, 3.75 ], + "to": [ 13.75, 3.001, 8.75 ], + "rotation": { "origin": [ 8.75, 3, 3.75 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 9, 4.5, 9.125 ], + "to": [ 14, 4.501, 14.125 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 8, 4, 11.625 ], + "to": [ 13, 4.001, 16.625 ], + "rotation": { "origin": [ 8, 4, 11.625 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 2, 4.5, 9 ], + "to": [ 7, 4.501, 14 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 1, 4, 11.5 ], + "to": [ 6, 4.001, 16.5 ], + "rotation": { "origin": [ 1, 4, 11.5 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/crystal_grass_2.json b/src/main/resources/assets/betterend/models/block/crystal_grass_2.json index efecc979..0a306ec7 100644 --- a/src/main/resources/assets/betterend/models/block/crystal_grass_2.json +++ b/src/main/resources/assets/betterend/models/block/crystal_grass_2.json @@ -1,107 +1,107 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/crystal_grass_3", - "texture": "betterend:block/crystal_grass_3" - }, - "elements": [ - { - "__comment": "PlaneX3", - "from": [ 2, 0, 2 ], - "to": [ 2.001, 9, 18 ], - "rotation": { "origin": [ 2, 0, 2 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 14, 0, 2 ], - "to": [ 14.001, 9, 18 ], - "rotation": { "origin": [ 14, 0, 2 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 3, 8.5, 3 ], - "to": [ 8, 8.501, 8 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 2, 8, 5.5 ], - "to": [ 7, 8.001, 10.5 ], - "rotation": { "origin": [ 2, 8, 5.5 ], "axis": "y", "angle": 45 }, - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 8.375, 8.5, 2.625 ], - "to": [ 13.375, 8.501, 7.625 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 7.375, 8, 5.125 ], - "to": [ 12.375, 8.001, 10.125 ], - "rotation": { "origin": [ 7.375, 8, 5.125 ], "axis": "y", "angle": 45 }, - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 3.5, 4.5, 7.5 ], - "to": [ 8.5, 4.501, 12.5 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 2.5, 4, 10 ], - "to": [ 7.5, 4.001, 15 ], - "rotation": { "origin": [ 2.5, 4, 10 ], "axis": "y", "angle": 45 }, - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 8, 5, 7 ], - "to": [ 13, 5.001, 12 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 7, 4.5, 9.5 ], - "to": [ 12, 4.501, 14.5 ], - "rotation": { "origin": [ 7, 4.5, 9.5 ], "axis": "y", "angle": 45 }, - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/crystal_grass_3", + "texture": "betterend:block/crystal_grass_3" + }, + "elements": [ + { + "__comment": "PlaneX3", + "from": [ 2, 0, 2 ], + "to": [ 2.001, 9, 18 ], + "rotation": { "origin": [ 2, 0, 2 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 14, 0, 2 ], + "to": [ 14.001, 9, 18 ], + "rotation": { "origin": [ 14, 0, 2 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 3, 8.5, 3 ], + "to": [ 8, 8.501, 8 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 2, 8, 5.5 ], + "to": [ 7, 8.001, 10.5 ], + "rotation": { "origin": [ 2, 8, 5.5 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 8.375, 8.5, 2.625 ], + "to": [ 13.375, 8.501, 7.625 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 7.375, 8, 5.125 ], + "to": [ 12.375, 8.001, 10.125 ], + "rotation": { "origin": [ 7.375, 8, 5.125 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 3.5, 4.5, 7.5 ], + "to": [ 8.5, 4.501, 12.5 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 2.5, 4, 10 ], + "to": [ 7.5, 4.001, 15 ], + "rotation": { "origin": [ 2.5, 4, 10 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 8, 5, 7 ], + "to": [ 13, 5.001, 12 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 7, 4.5, 9.5 ], + "to": [ 12, 4.501, 14.5 ], + "rotation": { "origin": [ 7, 4.5, 9.5 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/crystal_grass_3.json b/src/main/resources/assets/betterend/models/block/crystal_grass_3.json index 496b9e74..7a36c9a1 100644 --- a/src/main/resources/assets/betterend/models/block/crystal_grass_3.json +++ b/src/main/resources/assets/betterend/models/block/crystal_grass_3.json @@ -1,50 +1,50 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/crystal_grass_4", - "texture": "betterend:block/crystal_grass_4" - }, - "elements": [ - { - "__comment": "PlaneX3", - "from": [ 2.5, 0, 2.5 ], - "to": [ 2.501, 9, 18.5 ], - "rotation": { "origin": [ 2.5, 0, 2.5 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 13.5, 0, 2.5 ], - "to": [ 13.501, 9, 18.5 ], - "rotation": { "origin": [ 13.5, 0, 2.5 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 5.5, 8.5, 5.5 ], - "to": [ 10.5, 8.501, 10.5 ], - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 4.5, 8, 8 ], - "to": [ 9.5, 8.001, 13 ], - "rotation": { "origin": [ 4.5, 8, 8 ], "axis": "y", "angle": 45 }, - "faces": { - "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/crystal_grass_4", + "texture": "betterend:block/crystal_grass_4" + }, + "elements": [ + { + "__comment": "PlaneX3", + "from": [ 2.5, 0, 2.5 ], + "to": [ 2.501, 9, 18.5 ], + "rotation": { "origin": [ 2.5, 0, 2.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 13.5, 0, 2.5 ], + "to": [ 13.501, 9, 18.5 ], + "rotation": { "origin": [ 13.5, 0, 2.5 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 7, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 7, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 5.5, 8.5, 5.5 ], + "to": [ 10.5, 8.501, 10.5 ], + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 4.5, 8, 8 ], + "to": [ 9.5, 8.001, 13 ], + "rotation": { "origin": [ 4.5, 8, 8 ], "axis": "y", "angle": 45 }, + "faces": { + "down": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 5, 5 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/crystal_grass_4.json b/src/main/resources/assets/betterend/models/block/crystal_grass_4.json index 7bc54778..deacfba0 100644 --- a/src/main/resources/assets/betterend/models/block/crystal_grass_4.json +++ b/src/main/resources/assets/betterend/models/block/crystal_grass_4.json @@ -1,31 +1,31 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/crystal_grass_5", - "texture": "betterend:block/crystal_grass_5" - }, - "elements": [ - { - "__comment": "PlaneX3", - "from": [ 2.5, 0, 2.5 ], - "to": [ 2.501, 10, 18.5 ], - "rotation": { "origin": [ 2.5, 0, 2.5 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 6, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 16, 6, 0, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 13.5, 0, 2.5 ], - "to": [ 13.501, 10, 18.5 ], - "rotation": { "origin": [ 13.5, 0, 2.5 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 6, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 16, 6, 0, 16 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/crystal_grass_5", + "texture": "betterend:block/crystal_grass_5" + }, + "elements": [ + { + "__comment": "PlaneX3", + "from": [ 2.5, 0, 2.5 ], + "to": [ 2.501, 10, 18.5 ], + "rotation": { "origin": [ 2.5, 0, 2.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 6, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 6, 0, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 13.5, 0, 2.5 ], + "to": [ 13.501, 10, 18.5 ], + "rotation": { "origin": [ 13.5, 0, 2.5 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 6, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 16, 6, 0, 16 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/cube_noshade.json b/src/main/resources/assets/betterend/models/block/cube_noshade.json index 2f64924d..41beca9c 100644 --- a/src/main/resources/assets/betterend/models/block/cube_noshade.json +++ b/src/main/resources/assets/betterend/models/block/cube_noshade.json @@ -1,22 +1,22 @@ -{ - "parent": "block/block", - "textures": { - "particle": "#texture" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "down" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "up" }, - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "north" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "south" }, - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "west" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "east" } - } - } - ] +{ + "parent": "block/block", + "textures": { + "particle": "#texture" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "up" }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "north" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "east" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/dense_vine_top.json b/src/main/resources/assets/betterend/models/block/dense_vine_top.json index bec20fbc..4260f1e4 100644 --- a/src/main/resources/assets/betterend/models/block/dense_vine_top.json +++ b/src/main/resources/assets/betterend/models/block/dense_vine_top.json @@ -1,76 +1,76 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/dense_vine", - "texture": "betterend:block/dense_vine", - "roots": "betterend:block/dense_vine_roots" - }, - "elements": [ - { - "__comment": "PlaneX1", - "from": [ 2.375, 0, 2.25 ], - "to": [ 2.376, 16, 18.25 ], - "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX1", - "from": [ 13.75, 0, 2.25 ], - "to": [ 13.751, 16, 18.25 ], - "rotation": { "origin": [ 13.75, 0, 2.25 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 5, 0, 0.5 ], - "to": [ 5.001, 16, 16.5 ], - "rotation": { "origin": [ 5, 0, 0.5 ], "axis": "y", "angle": 22.5 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" }, - "east": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } - } - }, - { - "__comment": "PlaneZ5", - "from": [ 0.5, 0, 11 ], - "to": [ 16.5, 16, 11.001 ], - "rotation": { "origin": [ 0.5, 0, 11 ], "axis": "y", "angle": 22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" }, - "south": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 11, 0, 0.5 ], - "to": [ 11.001, 16, 16.5 ], - "rotation": { "origin": [ 11, 0, 0.5 ], "axis": "y", "angle": -22.5 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" }, - "east": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } - } - }, - { - "__comment": "PlaneZ5", - "from": [ 0.5, 0, 5 ], - "to": [ 16.5, 16, 5.001 ], - "rotation": { "origin": [ 0.5, 0, 5 ], "axis": "y", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" }, - "south": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/dense_vine", + "texture": "betterend:block/dense_vine", + "roots": "betterend:block/dense_vine_roots" + }, + "elements": [ + { + "__comment": "PlaneX1", + "from": [ 2.375, 0, 2.25 ], + "to": [ 2.376, 16, 18.25 ], + "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX1", + "from": [ 13.75, 0, 2.25 ], + "to": [ 13.751, 16, 18.25 ], + "rotation": { "origin": [ 13.75, 0, 2.25 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 5, 0, 0.5 ], + "to": [ 5.001, 16, 16.5 ], + "rotation": { "origin": [ 5, 0, 0.5 ], "axis": "y", "angle": 22.5 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" }, + "east": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneZ5", + "from": [ 0.5, 0, 11 ], + "to": [ 16.5, 16, 11.001 ], + "rotation": { "origin": [ 0.5, 0, 11 ], "axis": "y", "angle": 22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" }, + "south": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 11, 0, 0.5 ], + "to": [ 11.001, 16, 16.5 ], + "rotation": { "origin": [ 11, 0, 0.5 ], "axis": "y", "angle": -22.5 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" }, + "east": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneZ5", + "from": [ 0.5, 0, 5 ], + "to": [ 16.5, 16, 5.001 ], + "rotation": { "origin": [ 0.5, 0, 5 ], "axis": "y", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" }, + "south": { "uv": [ 0, 16, 16, 0 ], "texture": "#roots" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lily_roots.json b/src/main/resources/assets/betterend/models/block/end_lily_roots.json index a5ceb46e..532b7701 100644 --- a/src/main/resources/assets/betterend/models/block/end_lily_roots.json +++ b/src/main/resources/assets/betterend/models/block/end_lily_roots.json @@ -1,76 +1,76 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/end_lily_stem", - "texture": "betterend:block/end_lily_stem", - "roots": "betterend:block/end_lily_roots" - }, - "elements": [ - { - "__comment": "PlaneX1", - "from": [ 2.375, 0, 2.25 ], - "to": [ 2.376, 16, 18.25 ], - "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX1", - "from": [ 13.75, 0, 2.25 ], - "to": [ 13.751, 16, 18.25 ], - "rotation": { "origin": [ 13.75, 0, 2.25 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 5, 0, 0.5 ], - "to": [ 5.001, 16, 16.5 ], - "rotation": { "origin": [ 5, 0, 0.5 ], "axis": "y", "angle": 22.5 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } - } - }, - { - "__comment": "PlaneZ5", - "from": [ 0.5, 0, 11 ], - "to": [ 16.5, 16, 11.001 ], - "rotation": { "origin": [ 0.5, 0, 11 ], "axis": "y", "angle": 22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 11, 0, 0.5 ], - "to": [ 11.001, 16, 16.5 ], - "rotation": { "origin": [ 11, 0, 0.5 ], "axis": "y", "angle": -22.5 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } - } - }, - { - "__comment": "PlaneZ5", - "from": [ 0.5, 0, 5 ], - "to": [ 16.5, 16, 5.001 ], - "rotation": { "origin": [ 0.5, 0, 5 ], "axis": "y", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/end_lily_stem", + "texture": "betterend:block/end_lily_stem", + "roots": "betterend:block/end_lily_roots" + }, + "elements": [ + { + "__comment": "PlaneX1", + "from": [ 2.375, 0, 2.25 ], + "to": [ 2.376, 16, 18.25 ], + "rotation": { "origin": [ 2.375, 0, 2.25 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX1", + "from": [ 13.75, 0, 2.25 ], + "to": [ 13.751, 16, 18.25 ], + "rotation": { "origin": [ 13.75, 0, 2.25 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 5, 0, 0.5 ], + "to": [ 5.001, 16, 16.5 ], + "rotation": { "origin": [ 5, 0, 0.5 ], "axis": "y", "angle": 22.5 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneZ5", + "from": [ 0.5, 0, 11 ], + "to": [ 16.5, 16, 11.001 ], + "rotation": { "origin": [ 0.5, 0, 11 ], "axis": "y", "angle": 22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 11, 0, 0.5 ], + "to": [ 11.001, 16, 16.5 ], + "rotation": { "origin": [ 11, 0, 0.5 ], "axis": "y", "angle": -22.5 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneZ5", + "from": [ 0.5, 0, 5 ], + "to": [ 16.5, 16, 5.001 ], + "rotation": { "origin": [ 0.5, 0, 5 ], "axis": "y", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lily_seed_0.json b/src/main/resources/assets/betterend/models/block/end_lily_seed_0.json index 9dd4d3b8..260f4b64 100644 --- a/src/main/resources/assets/betterend/models/block/end_lily_seed_0.json +++ b/src/main/resources/assets/betterend/models/block/end_lily_seed_0.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/cross_no_distortion", - "textures": { - "texture": "betterend:block/end_lily_0" - } +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/end_lily_0" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lily_seed_1.json b/src/main/resources/assets/betterend/models/block/end_lily_seed_1.json index 022cbad7..d047b4b5 100644 --- a/src/main/resources/assets/betterend/models/block/end_lily_seed_1.json +++ b/src/main/resources/assets/betterend/models/block/end_lily_seed_1.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/cross_no_distortion", - "textures": { - "texture": "betterend:block/end_lily_1" - } +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/end_lily_1" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lily_seed_2.json b/src/main/resources/assets/betterend/models/block/end_lily_seed_2.json index 9b481f83..2590f5b6 100644 --- a/src/main/resources/assets/betterend/models/block/end_lily_seed_2.json +++ b/src/main/resources/assets/betterend/models/block/end_lily_seed_2.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/cross_no_distortion", - "textures": { - "texture": "betterend:block/end_lily_2" - } +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/end_lily_2" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lily_seed_3.json b/src/main/resources/assets/betterend/models/block/end_lily_seed_3.json index b0eec9e2..6c4fb07e 100644 --- a/src/main/resources/assets/betterend/models/block/end_lily_seed_3.json +++ b/src/main/resources/assets/betterend/models/block/end_lily_seed_3.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/cross_no_distortion", - "textures": { - "texture": "betterend:block/end_lily_3" - } +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/end_lily_3" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lily_stem.json b/src/main/resources/assets/betterend/models/block/end_lily_stem.json index 2edb1931..ec631ff9 100644 --- a/src/main/resources/assets/betterend/models/block/end_lily_stem.json +++ b/src/main/resources/assets/betterend/models/block/end_lily_stem.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/cross_no_distortion", - "textures": { - "texture": "betterend:block/end_lily_stem" - } +{ + "parent": "betterend:block/cross_no_distortion", + "textures": { + "texture": "betterend:block/end_lily_stem" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lily_top.json b/src/main/resources/assets/betterend/models/block/end_lily_top.json index fe478e7e..1f228fd1 100644 --- a/src/main/resources/assets/betterend/models/block/end_lily_top.json +++ b/src/main/resources/assets/betterend/models/block/end_lily_top.json @@ -1,92 +1,92 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/end_lily_leaf", - "leaf": "betterend:block/end_lily_leaf", - "flower": "betterend:block/end_lily_flower" - }, - "elements": [ - { - "__comment": "PlaneX2", - "from": [ 8, 0, 0 ], - "to": [ 8.001, 16, 16 ], - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" } - } - }, - { - "__comment": "PlaneZ3", - "from": [ 0, 0, 8 ], - "to": [ 16, 16, 8.001 ], - "shade": false, - "faces": { - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" } - } - }, - { - "__comment": "PlaneX2", - "from": [ 2.5, 0, 2.5 ], - "to": [ 2.501, 16, 18.5 ], - "rotation": { "origin": [ 2.5, 0, 2.5 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 2.5, 0, 16, 16 ], "texture": "#flower" }, - "east": { "uv": [ 0, 0, 13.5, 16 ], "texture": "#flower" } - } - }, - { - "__comment": "PlaneZ3", - "from": [ 2.5, 0, 13.5 ], - "to": [ 18.5, 16, 13.501 ], - "rotation": { "origin": [ 2.5, 0, 13.5 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 0, 14.5, 16 ], "texture": "#flower" }, - "south": { "uv": [ 1.5, 0, 16, 16 ], "texture": "#flower" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 8, 0.029, 8 ], - "to": [ 24, 0.029, 24 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 270 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf" } - } - }, - { - "__comment": "PlaneY6", - "from": [ -8, 0.026, 8 ], - "to": [ 8, 0.026, 24 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 180 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 90 } - } - }, - { - "__comment": "PlaneY6", - "from": [ -8, 0.023, -8 ], - "to": [ 8, 0.023, 8 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 90 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 180 } - } - }, - { - "__comment": "PlaneY6", - "from": [ 8, 0.02, -8 ], - "to": [ 24, 0.02, 8 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 270 } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/end_lily_leaf", + "leaf": "betterend:block/end_lily_leaf", + "flower": "betterend:block/end_lily_flower" + }, + "elements": [ + { + "__comment": "PlaneX2", + "from": [ 8, 0, 0 ], + "to": [ 8.001, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" } + } + }, + { + "__comment": "PlaneZ3", + "from": [ 0, 0, 8 ], + "to": [ 16, 16, 8.001 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" } + } + }, + { + "__comment": "PlaneX2", + "from": [ 2.5, 0, 2.5 ], + "to": [ 2.501, 16, 18.5 ], + "rotation": { "origin": [ 2.5, 0, 2.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 2.5, 0, 16, 16 ], "texture": "#flower" }, + "east": { "uv": [ 0, 0, 13.5, 16 ], "texture": "#flower" } + } + }, + { + "__comment": "PlaneZ3", + "from": [ 2.5, 0, 13.5 ], + "to": [ 18.5, 16, 13.501 ], + "rotation": { "origin": [ 2.5, 0, 13.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 14.5, 16 ], "texture": "#flower" }, + "south": { "uv": [ 1.5, 0, 16, 16 ], "texture": "#flower" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 8, 0.029, 8 ], + "to": [ 24, 0.029, 24 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf" } + } + }, + { + "__comment": "PlaneY6", + "from": [ -8, 0.026, 8 ], + "to": [ 8, 0.026, 24 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 90 } + } + }, + { + "__comment": "PlaneY6", + "from": [ -8, 0.023, -8 ], + "to": [ 8, 0.023, 8 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 90 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 180 } + } + }, + { + "__comment": "PlaneY6", + "from": [ 8, 0.02, -8 ], + "to": [ 24, 0.02, 8 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 270 } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lily_top_small.json b/src/main/resources/assets/betterend/models/block/end_lily_top_small.json index 20a49449..d61f1b43 100644 --- a/src/main/resources/assets/betterend/models/block/end_lily_top_small.json +++ b/src/main/resources/assets/betterend/models/block/end_lily_top_small.json @@ -1,62 +1,62 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/end_lily_leaf", - "leaf": "betterend:block/end_lily_leaf_small", - "flower": "betterend:block/end_lily_flower_small" - }, - "elements": [ - { - "__comment": "PlaneX2", - "from": [ 8, 0, 0 ], - "to": [ 8.001, 16, 16 ], - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" } - } - }, - { - "__comment": "PlaneZ3", - "from": [ 0, 0, 8 ], - "to": [ 16, 16, 8.001 ], - "shade": false, - "faces": { - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" } - } - }, - { - "__comment": "PlaneX2", - "from": [ 2.5, 0, 2.5 ], - "to": [ 2.501, 16, 18.5 ], - "rotation": { "origin": [ 2.5, 0, 2.5 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 2.5, 0, 16, 16 ], "texture": "#flower" }, - "east": { "uv": [ 0, 0, 13.5, 16 ], "texture": "#flower" } - } - }, - { - "__comment": "PlaneZ3", - "from": [ 2.5, 0, 13.5 ], - "to": [ 18.5, 16, 13.501 ], - "rotation": { "origin": [ 2.5, 0, 13.5 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 0, 14.5, 16 ], "texture": "#flower" }, - "south": { "uv": [ 1.5, 0, 16, 16 ], "texture": "#flower" } - } - }, - { - "__comment": "PlaneY6", - "from": [ 0, 0.02, 0 ], - "to": [ 16, 0.02, 16 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 270 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/end_lily_leaf", + "leaf": "betterend:block/end_lily_leaf_small", + "flower": "betterend:block/end_lily_flower_small" + }, + "elements": [ + { + "__comment": "PlaneX2", + "from": [ 8, 0, 0 ], + "to": [ 8.001, 16, 16 ], + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" } + } + }, + { + "__comment": "PlaneZ3", + "from": [ 0, 0, 8 ], + "to": [ 16, 16, 8.001 ], + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#flower" } + } + }, + { + "__comment": "PlaneX2", + "from": [ 2.5, 0, 2.5 ], + "to": [ 2.501, 16, 18.5 ], + "rotation": { "origin": [ 2.5, 0, 2.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 2.5, 0, 16, 16 ], "texture": "#flower" }, + "east": { "uv": [ 0, 0, 13.5, 16 ], "texture": "#flower" } + } + }, + { + "__comment": "PlaneZ3", + "from": [ 2.5, 0, 13.5 ], + "to": [ 18.5, 16, 13.501 ], + "rotation": { "origin": [ 2.5, 0, 13.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 14.5, 16 ], "texture": "#flower" }, + "south": { "uv": [ 1.5, 0, 16, 16 ], "texture": "#flower" } + } + }, + { + "__comment": "PlaneY6", + "from": [ 0, 0.02, 0 ], + "to": [ 16, 0.02, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lily_top_small_2.json b/src/main/resources/assets/betterend/models/block/end_lily_top_small_2.json index 6aa8cbb0..a8f9089f 100644 --- a/src/main/resources/assets/betterend/models/block/end_lily_top_small_2.json +++ b/src/main/resources/assets/betterend/models/block/end_lily_top_small_2.json @@ -1,19 +1,19 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/end_lily_leaf", - "leaf": "betterend:block/end_lily_leaf_small" - }, - "elements": [ - { - "__comment": "PlaneY6", - "from": [ 0, 0.02, 0 ], - "to": [ 16, 0.02, 16 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 270 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/end_lily_leaf", + "leaf": "betterend:block/end_lily_leaf_small" + }, + "elements": [ + { + "__comment": "PlaneY6", + "from": [ 0, 0.02, 0 ], + "to": [ 16, 0.02, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lotus_flower.json b/src/main/resources/assets/betterend/models/block/end_lotus_flower.json index 68312cdc..0fe2f669 100644 --- a/src/main/resources/assets/betterend/models/block/end_lotus_flower.json +++ b/src/main/resources/assets/betterend/models/block/end_lotus_flower.json @@ -1,163 +1,163 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/end_lotus_center", - "texture": "betterend:block/end_lotus_center", - "petal": "betterend:block/end_lotus_petal" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 4, 0, 4 ], - "to": [ 12, 11, 12 ], - "faces": { - "down": { "uv": [ 8, 8, 16, 16 ], "texture": "#texture" }, - "up": { "uv": [ 8, 0, 16, 8 ], "texture": "#texture" }, - "north": { "uv": [ 0, 4, 8, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 5, 8, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 5, 8, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 5, 8, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY2", - "from": [ -0.5, 2, 12 ], - "to": [ 15.5, 2.001, 20 ], - "rotation": { "origin": [ -0.5, 2, 12 ], "axis": "x", "angle": -45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 8, 0, 16 ], "texture": "#petal" }, - "up": { "uv": [ 0, 8, 16, 16 ], "texture": "#petal", "rotation": 180 } - } - }, - { - "__comment": "PlaneY2", - "from": [ -0.5, 7.502, 17.5 ], - "to": [ 15.5, 7.502, 25.5 ], - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 8 ], "texture": "#petal" }, - "up": { "uv": [ 0, 0, 16, 8 ], "texture": "#petal", "rotation": 180 } - } - }, - { - "__comment": "PlaneY2", - "from": [ 0.5, 1.999, -4 ], - "to": [ 16.5, 2, 4 ], - "rotation": { "origin": [ 0.5, 2, 4 ], "axis": "x", "angle": 45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 8, 0, 16 ], "texture": "#petal", "rotation": 180 }, - "up": { "uv": [ 0, 8, 16, 16 ], "texture": "#petal" } - } - }, - { - "__comment": "PlaneY2", - "from": [ 0.5, 7.502, -9.5 ], - "to": [ 16.5, 7.502, -1.5 ], - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 8 ], "texture": "#petal", "rotation": 180 }, - "up": { "uv": [ 0, 0, 16, 8 ], "texture": "#petal" } - } - }, - { - "__comment": "PlaneY12", - "from": [ 12, 2, 0.5 ], - "to": [ 20, 2.001, 16.5 ], - "rotation": { "origin": [ 12, 2, 0.5 ], "axis": "z", "angle": 45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 8, 0, 16 ], "texture": "#petal", "rotation": 90 }, - "up": { "uv": [ 0, 8, 16, 16 ], "texture": "#petal", "rotation": 90 } - } - }, - { - "__comment": "PlaneY12", - "from": [ 17.5, 7.505, 0.5 ], - "to": [ 25.5, 7.505, 16.5 ], - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 8 ], "texture": "#petal", "rotation": 90 }, - "up": { "uv": [ 0, 0, 16, 8 ], "texture": "#petal", "rotation": 90 } - } - }, - { - "__comment": "PlaneY12", - "from": [ -4, 1.999, -0.5 ], - "to": [ 4, 2, 15.5 ], - "rotation": { "origin": [ 4, 2, -0.5 ], "axis": "z", "angle": -45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 8, 0, 16 ], "texture": "#petal", "rotation": 270 }, - "up": { "uv": [ 0, 8, 16, 16 ], "texture": "#petal", "rotation": 270 } - } - }, - { - "__comment": "PlaneY12", - "from": [ -9.5, 7.505, -0.5 ], - "to": [ -1.5, 7.505, 15.5 ], - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 8 ], "texture": "#petal", "rotation": 270 }, - "up": { "uv": [ 0, 0, 16, 8 ], "texture": "#petal", "rotation": 270 } - } - }, - { - "__comment": "PlaneY10", - "from": [ 15.5, 2.02, -10.5 ], - "to": [ 31.5, 2.02, 5.5 ], - "rotation": { "origin": [ 15.5, 2, -10.5 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#petal", "rotation": 180 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#petal" } - } - }, - { - "__comment": "PlaneY10", - "from": [ 10.5, 2.04, -0.5 ], - "to": [ 26.5, 2.04, 15.5 ], - "rotation": { "origin": [ 26.5, 2, 15.5 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#petal" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#petal", "rotation": 180 } - } - }, - { - "__comment": "PlaneY10", - "from": [ -15.5, 2.06, 10.5 ], - "to": [ 0.5, 2.06, 26.5 ], - "rotation": { "origin": [ 0.5, 2, 26.5 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#petal" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#petal", "rotation": 180 } - } - }, - { - "__comment": "PlaneY10", - "from": [ -10.4999, 2.08, 0.4999 ], - "to": [ 5.5001, 2.08, 16.4999 ], - "rotation": { "origin": [ -10.5, 2, 0.5 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#petal", "rotation": 180 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#petal" } - } - }, - { - "__comment": "Box15", - "from": [ 5, 11, 5 ], - "to": [ 11, 12, 11 ], - "faces": { - "up": { "uv": [ 9, 1, 15, 7 ], "texture": "#texture" }, - "north": { "uv": [ 1, 4, 7, 5 ], "texture": "#texture" }, - "south": { "uv": [ 1, 4, 7, 5 ], "texture": "#texture" }, - "west": { "uv": [ 1, 4, 7, 5 ], "texture": "#texture" }, - "east": { "uv": [ 5, 4, 11, 5 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/end_lotus_center", + "texture": "betterend:block/end_lotus_center", + "petal": "betterend:block/end_lotus_petal" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 4, 0, 4 ], + "to": [ 12, 11, 12 ], + "faces": { + "down": { "uv": [ 8, 8, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 8, 0, 16, 8 ], "texture": "#texture" }, + "north": { "uv": [ 0, 4, 8, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 5, 8, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 5, 8, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 5, 8, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY2", + "from": [ -0.5, 2, 12 ], + "to": [ 15.5, 2.001, 20 ], + "rotation": { "origin": [ -0.5, 2, 12 ], "axis": "x", "angle": -45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 8, 0, 16 ], "texture": "#petal" }, + "up": { "uv": [ 0, 8, 16, 16 ], "texture": "#petal", "rotation": 180 } + } + }, + { + "__comment": "PlaneY2", + "from": [ -0.5, 7.502, 17.5 ], + "to": [ 15.5, 7.502, 25.5 ], + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 8 ], "texture": "#petal" }, + "up": { "uv": [ 0, 0, 16, 8 ], "texture": "#petal", "rotation": 180 } + } + }, + { + "__comment": "PlaneY2", + "from": [ 0.5, 1.999, -4 ], + "to": [ 16.5, 2, 4 ], + "rotation": { "origin": [ 0.5, 2, 4 ], "axis": "x", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 8, 0, 16 ], "texture": "#petal", "rotation": 180 }, + "up": { "uv": [ 0, 8, 16, 16 ], "texture": "#petal" } + } + }, + { + "__comment": "PlaneY2", + "from": [ 0.5, 7.502, -9.5 ], + "to": [ 16.5, 7.502, -1.5 ], + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 8 ], "texture": "#petal", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 8 ], "texture": "#petal" } + } + }, + { + "__comment": "PlaneY12", + "from": [ 12, 2, 0.5 ], + "to": [ 20, 2.001, 16.5 ], + "rotation": { "origin": [ 12, 2, 0.5 ], "axis": "z", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 8, 0, 16 ], "texture": "#petal", "rotation": 90 }, + "up": { "uv": [ 0, 8, 16, 16 ], "texture": "#petal", "rotation": 90 } + } + }, + { + "__comment": "PlaneY12", + "from": [ 17.5, 7.505, 0.5 ], + "to": [ 25.5, 7.505, 16.5 ], + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 8 ], "texture": "#petal", "rotation": 90 }, + "up": { "uv": [ 0, 0, 16, 8 ], "texture": "#petal", "rotation": 90 } + } + }, + { + "__comment": "PlaneY12", + "from": [ -4, 1.999, -0.5 ], + "to": [ 4, 2, 15.5 ], + "rotation": { "origin": [ 4, 2, -0.5 ], "axis": "z", "angle": -45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 8, 0, 16 ], "texture": "#petal", "rotation": 270 }, + "up": { "uv": [ 0, 8, 16, 16 ], "texture": "#petal", "rotation": 270 } + } + }, + { + "__comment": "PlaneY12", + "from": [ -9.5, 7.505, -0.5 ], + "to": [ -1.5, 7.505, 15.5 ], + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 8 ], "texture": "#petal", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 8 ], "texture": "#petal", "rotation": 270 } + } + }, + { + "__comment": "PlaneY10", + "from": [ 15.5, 2.02, -10.5 ], + "to": [ 31.5, 2.02, 5.5 ], + "rotation": { "origin": [ 15.5, 2, -10.5 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#petal", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#petal" } + } + }, + { + "__comment": "PlaneY10", + "from": [ 10.5, 2.04, -0.5 ], + "to": [ 26.5, 2.04, 15.5 ], + "rotation": { "origin": [ 26.5, 2, 15.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#petal" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#petal", "rotation": 180 } + } + }, + { + "__comment": "PlaneY10", + "from": [ -15.5, 2.06, 10.5 ], + "to": [ 0.5, 2.06, 26.5 ], + "rotation": { "origin": [ 0.5, 2, 26.5 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#petal" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#petal", "rotation": 180 } + } + }, + { + "__comment": "PlaneY10", + "from": [ -10.4999, 2.08, 0.4999 ], + "to": [ 5.5001, 2.08, 16.4999 ], + "rotation": { "origin": [ -10.5, 2, 0.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#petal", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#petal" } + } + }, + { + "__comment": "Box15", + "from": [ 5, 11, 5 ], + "to": [ 11, 12, 11 ], + "faces": { + "up": { "uv": [ 9, 1, 15, 7 ], "texture": "#texture" }, + "north": { "uv": [ 1, 4, 7, 5 ], "texture": "#texture" }, + "south": { "uv": [ 1, 4, 7, 5 ], "texture": "#texture" }, + "west": { "uv": [ 1, 4, 7, 5 ], "texture": "#texture" }, + "east": { "uv": [ 5, 4, 11, 5 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lotus_flower_2.json b/src/main/resources/assets/betterend/models/block/end_lotus_flower_2.json index a6b97869..16fa56b4 100644 --- a/src/main/resources/assets/betterend/models/block/end_lotus_flower_2.json +++ b/src/main/resources/assets/betterend/models/block/end_lotus_flower_2.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/end_lotus_flower", - "textures": { - "particle": "betterend:block/end_lotus_center_2", - "texture": "betterend:block/end_lotus_center_2", - "petal": "betterend:block/end_lotus_petal_2" - } +{ + "parent": "betterend:block/end_lotus_flower", + "textures": { + "particle": "betterend:block/end_lotus_center_2", + "texture": "betterend:block/end_lotus_center_2", + "petal": "betterend:block/end_lotus_petal_2" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lotus_roots.json b/src/main/resources/assets/betterend/models/block/end_lotus_roots.json index 3e9ea343..828955f0 100644 --- a/src/main/resources/assets/betterend/models/block/end_lotus_roots.json +++ b/src/main/resources/assets/betterend/models/block/end_lotus_roots.json @@ -1,68 +1,68 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "parent": "block/block", - "textures": { - "particle": "betterend:block/end_lotus_stem", - "texture": "betterend:block/end_lotus_stem", - "roots": "betterend:block/end_lotus_roots" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 6, 0, 6 ], - "to": [ 10, 16, 10 ], - "faces": { - "down": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture", "cullface": "down" }, - "up": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture", "cullface": "up" }, - "north": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX2", - "from": [ 5, 0, 1 ], - "to": [ 5.001, 16, 17 ], - "rotation": { "origin": [ 5, 0, 1 ], "axis": "y", "angle": 22.5 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } - } - }, - { - "__comment": "PlaneX2", - "from": [ 11, 0, 1 ], - "to": [ 11.001, 16, 17 ], - "rotation": { "origin": [ 11, 0, 1 ], "axis": "y", "angle": -22.5 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } - } - }, - { - "__comment": "PlaneX2", - "from": [ 0.5, 0, 4.999 ], - "to": [ 16.5, 16, 5 ], - "rotation": { "origin": [ 0.5, 0, 5 ], "axis": "y", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } - } - }, - { - "__comment": "PlaneX2", - "from": [ 0.5, 0, 10.999 ], - "to": [ 16.5, 16, 11 ], - "rotation": { "origin": [ 0.5, 0, 11 ], "axis": "y", "angle": 22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "parent": "block/block", + "textures": { + "particle": "betterend:block/end_lotus_stem", + "texture": "betterend:block/end_lotus_stem", + "roots": "betterend:block/end_lotus_roots" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 6, 0, 6 ], + "to": [ 10, 16, 10 ], + "faces": { + "down": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture", "cullface": "down" }, + "up": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture", "cullface": "up" }, + "north": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX2", + "from": [ 5, 0, 1 ], + "to": [ 5.001, 16, 17 ], + "rotation": { "origin": [ 5, 0, 1 ], "axis": "y", "angle": 22.5 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneX2", + "from": [ 11, 0, 1 ], + "to": [ 11.001, 16, 17 ], + "rotation": { "origin": [ 11, 0, 1 ], "axis": "y", "angle": -22.5 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneX2", + "from": [ 0.5, 0, 4.999 ], + "to": [ 16.5, 16, 5 ], + "rotation": { "origin": [ 0.5, 0, 5 ], "axis": "y", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } + } + }, + { + "__comment": "PlaneX2", + "from": [ 0.5, 0, 10.999 ], + "to": [ 16.5, 16, 11 ], + "rotation": { "origin": [ 0.5, 0, 11 ], "axis": "y", "angle": 22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#roots" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lotus_stem.json b/src/main/resources/assets/betterend/models/block/end_lotus_stem.json index 0ff07e34..09384d68 100644 --- a/src/main/resources/assets/betterend/models/block/end_lotus_stem.json +++ b/src/main/resources/assets/betterend/models/block/end_lotus_stem.json @@ -1,23 +1,23 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "parent": "block/block", - "textures": { - "particle": "betterend:block/end_lotus_stem", - "texture": "betterend:block/end_lotus_stem" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 6, 0, 6 ], - "to": [ 10, 16, 10 ], - "faces": { - "down": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture", "cullface": "down" }, - "up": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture", "cullface": "up" }, - "north": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "parent": "block/block", + "textures": { + "particle": "betterend:block/end_lotus_stem", + "texture": "betterend:block/end_lotus_stem" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 6, 0, 6 ], + "to": [ 10, 16, 10 ], + "faces": { + "down": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture", "cullface": "down" }, + "up": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture", "cullface": "up" }, + "north": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lotus_stem_leaf.json b/src/main/resources/assets/betterend/models/block/end_lotus_stem_leaf.json index bfee2fc4..3b2f7100 100644 --- a/src/main/resources/assets/betterend/models/block/end_lotus_stem_leaf.json +++ b/src/main/resources/assets/betterend/models/block/end_lotus_stem_leaf.json @@ -1,34 +1,34 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "parent": "block/block", - "textures": { - "particle": "betterend:block/end_lotus_stem", - "texture": "betterend:block/end_lotus_stem", - "texture1": "betterend:block/end_lotus_leaf_cutout" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 6, 0, 6 ], - "to": [ 10, 16, 10 ], - "faces": { - "down": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture", "cullface": "down" }, - "up": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture", "cullface": "up" }, - "north": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY2", - "from": [ 0, 0, 0 ], - "to": [ 16, 0.001, 16 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "parent": "block/block", + "textures": { + "particle": "betterend:block/end_lotus_stem", + "texture": "betterend:block/end_lotus_stem", + "texture1": "betterend:block/end_lotus_leaf_cutout" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 6, 0, 6 ], + "to": [ 10, 16, 10 ], + "faces": { + "down": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture", "cullface": "down" }, + "up": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture", "cullface": "up" }, + "north": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 4, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY2", + "from": [ 0, 0, 0 ], + "to": [ 16, 0.001, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lotus_stem_top.json b/src/main/resources/assets/betterend/models/block/end_lotus_stem_top.json index 6590a0ae..c27f3e88 100644 --- a/src/main/resources/assets/betterend/models/block/end_lotus_stem_top.json +++ b/src/main/resources/assets/betterend/models/block/end_lotus_stem_top.json @@ -1,35 +1,35 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "parent": "block/block", - "textures": { - "particle": "betterend:block/end_lotus_stem", - "texture": "betterend:block/end_lotus_stem" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 6, 0, 6 ], - "to": [ 10, 12, 10 ], - "faces": { - "down": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture", "cullface": "down" }, - "north": { "uv": [ 0, 4, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 4, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 4, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 4, 4, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box2", - "from": [ 5, 12, 5 ], - "to": [ 11, 16, 11 ], - "faces": { - "down": { "uv": [ 4, 8, 10, 14 ], "texture": "#texture" }, - "up": { "uv": [ 4, 8, 10, 14 ], "texture": "#texture", "cullface": "up" }, - "north": { "uv": [ 4, 4, 10, 8 ], "texture": "#texture" }, - "south": { "uv": [ 4, 4, 10, 8 ], "texture": "#texture" }, - "west": { "uv": [ 4, 4, 10, 8 ], "texture": "#texture" }, - "east": { "uv": [ 4, 4, 10, 8 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "parent": "block/block", + "textures": { + "particle": "betterend:block/end_lotus_stem", + "texture": "betterend:block/end_lotus_stem" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 6, 0, 6 ], + "to": [ 10, 12, 10 ], + "faces": { + "down": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture", "cullface": "down" }, + "north": { "uv": [ 0, 4, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 4, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 4, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 4, 4, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box2", + "from": [ 5, 12, 5 ], + "to": [ 11, 16, 11 ], + "faces": { + "down": { "uv": [ 4, 8, 10, 14 ], "texture": "#texture" }, + "up": { "uv": [ 4, 8, 10, 14 ], "texture": "#texture", "cullface": "up" }, + "north": { "uv": [ 4, 4, 10, 8 ], "texture": "#texture" }, + "south": { "uv": [ 4, 4, 10, 8 ], "texture": "#texture" }, + "west": { "uv": [ 4, 4, 10, 8 ], "texture": "#texture" }, + "east": { "uv": [ 4, 4, 10, 8 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_lotus_stem_top_leaf.json b/src/main/resources/assets/betterend/models/block/end_lotus_stem_top_leaf.json index 3d1e9dc7..fe95b28d 100644 --- a/src/main/resources/assets/betterend/models/block/end_lotus_stem_top_leaf.json +++ b/src/main/resources/assets/betterend/models/block/end_lotus_stem_top_leaf.json @@ -1,46 +1,46 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "parent": "block/block", - "textures": { - "particle": "betterend:block/end_lotus_stem", - "texture": "betterend:block/end_lotus_stem", - "leaf": "betterend:block/end_lotus_leaf_cutout" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 6, 0, 6 ], - "to": [ 10, 12, 10 ], - "faces": { - "down": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture", "cullface": "down" }, - "north": { "uv": [ 0, 4, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 4, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 4, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 4, 4, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box2", - "from": [ 5, 12, 5 ], - "to": [ 11, 16, 11 ], - "faces": { - "down": { "uv": [ 4, 8, 10, 14 ], "texture": "#texture" }, - "up": { "uv": [ 4, 8, 10, 14 ], "texture": "#texture", "cullface": "up" }, - "north": { "uv": [ 4, 4, 10, 8 ], "texture": "#texture" }, - "south": { "uv": [ 4, 4, 10, 8 ], "texture": "#texture" }, - "west": { "uv": [ 4, 4, 10, 8 ], "texture": "#texture" }, - "east": { "uv": [ 4, 4, 10, 8 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY3", - "from": [ 0, 0, 0 ], - "to": [ 16, 0.001, 16 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#leaf" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "parent": "block/block", + "textures": { + "particle": "betterend:block/end_lotus_stem", + "texture": "betterend:block/end_lotus_stem", + "leaf": "betterend:block/end_lotus_leaf_cutout" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 6, 0, 6 ], + "to": [ 10, 12, 10 ], + "faces": { + "down": { "uv": [ 4, 0, 8, 4 ], "texture": "#texture", "cullface": "down" }, + "north": { "uv": [ 0, 4, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 4, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 4, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 4, 4, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box2", + "from": [ 5, 12, 5 ], + "to": [ 11, 16, 11 ], + "faces": { + "down": { "uv": [ 4, 8, 10, 14 ], "texture": "#texture" }, + "up": { "uv": [ 4, 8, 10, 14 ], "texture": "#texture", "cullface": "up" }, + "north": { "uv": [ 4, 4, 10, 8 ], "texture": "#texture" }, + "south": { "uv": [ 4, 4, 10, 8 ], "texture": "#texture" }, + "west": { "uv": [ 4, 4, 10, 8 ], "texture": "#texture" }, + "east": { "uv": [ 4, 4, 10, 8 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY3", + "from": [ 0, 0, 0 ], + "to": [ 16, 0.001, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#leaf" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#leaf" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_moss_path.json b/src/main/resources/assets/betterend/models/block/end_moss_path.json index f449acb8..39a4c538 100644 --- a/src/main/resources/assets/betterend/models/block/end_moss_path.json +++ b/src/main/resources/assets/betterend/models/block/end_moss_path.json @@ -1,7 +1,7 @@ -{ "parent": "betterend:block/path", - "textures": { - "top": "betterend:block/end_moss_path_top", - "side": "betterend:block/end_moss_side", - "bottom": "block/end_stone" - } -} +{ "parent": "betterend:block/path", + "textures": { + "top": "betterend:block/end_moss_path_top", + "side": "betterend:block/end_moss_side", + "bottom": "block/end_stone" + } +} diff --git a/src/main/resources/assets/betterend/models/block/end_mycelium_path.json b/src/main/resources/assets/betterend/models/block/end_mycelium_path.json index 68bc5ea4..4fc48331 100644 --- a/src/main/resources/assets/betterend/models/block/end_mycelium_path.json +++ b/src/main/resources/assets/betterend/models/block/end_mycelium_path.json @@ -1,7 +1,7 @@ -{ "parent": "betterend:block/path", - "textures": { - "top": "betterend:block/end_mycelium_path_top", - "side": "betterend:block/end_mycelium_side", - "bottom": "block/end_stone" - } -} +{ "parent": "betterend:block/path", + "textures": { + "top": "betterend:block/end_mycelium_path_top", + "side": "betterend:block/end_mycelium_side", + "bottom": "block/end_stone" + } +} diff --git a/src/main/resources/assets/betterend/models/block/end_portal_ax.json b/src/main/resources/assets/betterend/models/block/end_portal_ax.json index 2d057060..8448f5c0 100644 --- a/src/main/resources/assets/betterend/models/block/end_portal_ax.json +++ b/src/main/resources/assets/betterend/models/block/end_portal_ax.json @@ -1,16 +1,16 @@ -{ - "textures": { - "particle": "betterend:block/end_portal", - "portal": "betterend:block/end_portal" - }, - "elements": [ - { - "from": [ 0, 0, 6 ], - "to": [ 16, 16, 10 ], - "faces": { - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#portal" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#portal" } - } - } - ] +{ + "textures": { + "particle": "betterend:block/end_portal", + "portal": "betterend:block/end_portal" + }, + "elements": [ + { + "from": [ 0, 0, 6 ], + "to": [ 16, 16, 10 ], + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#portal" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#portal" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/end_portal_az.json b/src/main/resources/assets/betterend/models/block/end_portal_az.json index 93c3b6a8..35c5f76a 100644 --- a/src/main/resources/assets/betterend/models/block/end_portal_az.json +++ b/src/main/resources/assets/betterend/models/block/end_portal_az.json @@ -1,16 +1,16 @@ -{ - "textures": { - "particle": "betterend:block/end_portal", - "portal": "betterend:block/end_portal" - }, - "elements": [ - { - "from": [ 6, 0, 0 ], - "to": [ 10, 16, 16 ], - "faces": { - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#portal" }, - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#portal" } - } - } - ] +{ + "textures": { + "particle": "betterend:block/end_portal", + "portal": "betterend:block/end_portal" + }, + "elements": [ + { + "from": [ 6, 0, 0 ], + "to": [ 10, 16, 16 ], + "faces": { + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#portal" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#portal" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_bottom.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_bottom.json index 2dbf9150..9a70a5b4 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_bottom.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_bottom.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_bottom", - "textures": { - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side", - "bottom": "betterend:block/flavolite_polished" - } +{ + "parent": "betterend:block/pedestal_bottom", + "textures": { + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side", + "bottom": "betterend:block/flavolite_polished" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_column.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_column.json index f668cdd0..a5fe3af1 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_column.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_column.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_column", - "textures": { - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side", - "bottom": "betterend:block/flavolite_polished" - } +{ + "parent": "betterend:block/pedestal_column", + "textures": { + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side", + "bottom": "betterend:block/flavolite_polished" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_column_top.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_column_top.json index 3f15b9b8..d9f67d7e 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_column_top.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_column_top.json @@ -1,7 +1,7 @@ -{ - "parent": "betterend:block/pedestal_column_top", - "textures": { - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side" - } +{ + "parent": "betterend:block/pedestal_column_top", + "textures": { + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_1.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_1.json index d399728b..67aee48a 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_1.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_1.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "betterend:block/flavolite_runed_1", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side", - "bottom": "betterend:block/flavolite_polished" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "betterend:block/flavolite_runed_1", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side", + "bottom": "betterend:block/flavolite_polished" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_2.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_2.json index 65ffdfba..308256d0 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_2.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_2.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "betterend:block/flavolite_runed_2", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side", - "bottom": "betterend:block/flavolite_polished" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "betterend:block/flavolite_runed_2", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side", + "bottom": "betterend:block/flavolite_polished" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_3.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_3.json index 7afab1b7..30400a31 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_3.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_3.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "betterend:block/flavolite_runed_3", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side", - "bottom": "betterend:block/flavolite_polished" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "betterend:block/flavolite_runed_3", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side", + "bottom": "betterend:block/flavolite_polished" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_4.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_4.json index be18bb5f..fc655454 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_4.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_4.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "betterend:block/flavolite_runed_4", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side", - "bottom": "betterend:block/flavolite_polished" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "betterend:block/flavolite_runed_4", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side", + "bottom": "betterend:block/flavolite_polished" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_5.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_5.json index e8395c7d..573e4abe 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_5.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_5.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "betterend:block/flavolite_runed_5", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side", - "bottom": "betterend:block/flavolite_polished" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "betterend:block/flavolite_runed_5", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side", + "bottom": "betterend:block/flavolite_polished" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_6.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_6.json index b26f8e22..5595eff0 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_6.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_6.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "betterend:block/flavolite_runed_6", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side", - "bottom": "betterend:block/flavolite_polished" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "betterend:block/flavolite_runed_6", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side", + "bottom": "betterend:block/flavolite_polished" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_7.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_7.json index fd28499f..92fb199e 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_7.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_7.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "betterend:block/flavolite_runed_7", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side", - "bottom": "betterend:block/flavolite_polished" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "betterend:block/flavolite_runed_7", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side", + "bottom": "betterend:block/flavolite_polished" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_1.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_1.json index 1f6a7b7c..fa5baa16 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_1.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_1.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "betterend:block/flavolite_runed_active_1", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side", - "bottom": "betterend:block/flavolite_polished" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "betterend:block/flavolite_runed_active_1", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side", + "bottom": "betterend:block/flavolite_polished" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_2.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_2.json index 22129058..72d91d94 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_2.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_2.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "betterend:block/flavolite_runed_active_2", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side", - "bottom": "betterend:block/flavolite_polished" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "betterend:block/flavolite_runed_active_2", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side", + "bottom": "betterend:block/flavolite_polished" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_3.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_3.json index c500f6d1..42ab5f87 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_3.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_3.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "betterend:block/flavolite_runed_active_3", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side", - "bottom": "betterend:block/flavolite_polished" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "betterend:block/flavolite_runed_active_3", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side", + "bottom": "betterend:block/flavolite_polished" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_4.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_4.json index 2ef01019..ecaba259 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_4.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_4.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "betterend:block/flavolite_runed_active_4", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side", - "bottom": "betterend:block/flavolite_polished" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "betterend:block/flavolite_runed_active_4", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side", + "bottom": "betterend:block/flavolite_polished" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_5.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_5.json index 890e3d9e..455201c5 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_5.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_5.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "betterend:block/flavolite_runed_active_5", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side", - "bottom": "betterend:block/flavolite_polished" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "betterend:block/flavolite_runed_active_5", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side", + "bottom": "betterend:block/flavolite_polished" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_6.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_6.json index 94547e59..925e0387 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_6.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_6.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "betterend:block/flavolite_runed_active_6", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side", - "bottom": "betterend:block/flavolite_polished" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "betterend:block/flavolite_runed_active_6", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side", + "bottom": "betterend:block/flavolite_polished" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_7.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_7.json index 47eaba09..7a27ab82 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_7.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_default_active_7.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "betterend:block/flavolite_runed_active_7", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side", - "bottom": "betterend:block/flavolite_polished" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "betterend:block/flavolite_runed_active_7", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side", + "bottom": "betterend:block/flavolite_polished" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_pillar.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_pillar.json index 3ae1661f..eb4f6282 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_pillar.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_pillar.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/pedestal_pillar", - "textures": { - "pillar": "betterend:block/flavolite_pillar_side" - } +{ + "parent": "betterend:block/pedestal_pillar", + "textures": { + "pillar": "betterend:block/flavolite_pillar_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_1.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_1.json index 909cb57b..c4875609 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_1.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_1.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "betterend:block/flavolite_runed_1", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "betterend:block/flavolite_runed_1", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_2.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_2.json index 0eed1d7f..aef33fb4 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_2.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_2.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "betterend:block/flavolite_runed_2", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "betterend:block/flavolite_runed_2", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_3.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_3.json index 85caab43..5a25dd29 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_3.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_3.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "betterend:block/flavolite_runed_3", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "betterend:block/flavolite_runed_3", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_4.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_4.json index 251de68a..6f08d9cb 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_4.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_4.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "betterend:block/flavolite_runed_4", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "betterend:block/flavolite_runed_4", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_5.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_5.json index 30f3b183..f4600aff 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_5.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_5.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "betterend:block/flavolite_runed_5", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "betterend:block/flavolite_runed_5", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_6.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_6.json index 18c3ce2d..14010ebe 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_6.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_6.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "betterend:block/flavolite_runed_6", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "betterend:block/flavolite_runed_6", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_7.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_7.json index 66bcc62c..08a764c8 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_7.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_7.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "betterend:block/flavolite_runed_7", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "betterend:block/flavolite_runed_7", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_1.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_1.json index ca28b3eb..915633be 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_1.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_1.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "betterend:block/flavolite_runed_active_1", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "betterend:block/flavolite_runed_active_1", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_2.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_2.json index 06657e93..2a94bdbf 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_2.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_2.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "betterend:block/flavolite_runed_active_2", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "betterend:block/flavolite_runed_active_2", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_3.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_3.json index 30363dce..3b819a94 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_3.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_3.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "betterend:block/flavolite_runed_active_3", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "betterend:block/flavolite_runed_active_3", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_4.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_4.json index 30be7c14..2e87dd6a 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_4.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_4.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "betterend:block/flavolite_runed_active_4", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "betterend:block/flavolite_runed_active_4", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_5.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_5.json index 5ac44a9b..190e2264 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_5.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_5.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "betterend:block/flavolite_runed_active_5", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "betterend:block/flavolite_runed_active_5", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_6.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_6.json index 92fb6770..cbb7d6c7 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_6.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_6.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "betterend:block/flavolite_runed_active_6", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "betterend:block/flavolite_runed_active_6", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_7.json b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_7.json index d0c9dfc2..e85cf6a3 100644 --- a/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_7.json +++ b/src/main/resources/assets/betterend/models/block/eternal_pedestal_top_active_7.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "betterend:block/flavolite_runed_active_7", - "base": "betterend:block/flavolite_polished", - "pillar": "betterend:block/flavolite_pillar_side" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "betterend:block/flavolite_runed_active_7", + "base": "betterend:block/flavolite_polished", + "pillar": "betterend:block/flavolite_pillar_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/flavolite_runed_1.json b/src/main/resources/assets/betterend/models/block/flavolite_runed_1.json index 4a502958..79006e55 100644 --- a/src/main/resources/assets/betterend/models/block/flavolite_runed_1.json +++ b/src/main/resources/assets/betterend/models/block/flavolite_runed_1.json @@ -1,23 +1,23 @@ -{ - "parent": "block/cube", - "textures": { - "particle": "betterend:block/flavolite_polished", - "rune_1": "betterend:block/flavolite_runed_1", - "rune_2": "betterend:block/flavolite_runed_2", - "rune_3": "betterend:block/flavolite_runed_3" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } - } - } - ] +{ + "parent": "block/cube", + "textures": { + "particle": "betterend:block/flavolite_polished", + "rune_1": "betterend:block/flavolite_runed_1", + "rune_2": "betterend:block/flavolite_runed_2", + "rune_3": "betterend:block/flavolite_runed_3" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/flavolite_runed_2.json b/src/main/resources/assets/betterend/models/block/flavolite_runed_2.json index d3d89a3e..9ef15670 100644 --- a/src/main/resources/assets/betterend/models/block/flavolite_runed_2.json +++ b/src/main/resources/assets/betterend/models/block/flavolite_runed_2.json @@ -1,23 +1,23 @@ -{ - "parent": "block/cube", - "textures": { - "particle": "betterend:block/flavolite_polished", - "rune_1": "betterend:block/flavolite_runed_4", - "rune_2": "betterend:block/flavolite_runed_5", - "rune_3": "betterend:block/flavolite_runed_6" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } - } - } - ] +{ + "parent": "block/cube", + "textures": { + "particle": "betterend:block/flavolite_polished", + "rune_1": "betterend:block/flavolite_runed_4", + "rune_2": "betterend:block/flavolite_runed_5", + "rune_3": "betterend:block/flavolite_runed_6" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/flavolite_runed_3.json b/src/main/resources/assets/betterend/models/block/flavolite_runed_3.json index 61b24ad8..830d46d6 100644 --- a/src/main/resources/assets/betterend/models/block/flavolite_runed_3.json +++ b/src/main/resources/assets/betterend/models/block/flavolite_runed_3.json @@ -1,23 +1,23 @@ -{ - "parent": "block/cube", - "textures": { - "particle": "betterend:block/flavolite_polished", - "rune_1": "betterend:block/flavolite_runed_7", - "rune_2": "betterend:block/flavolite_runed_8", - "rune_3": "betterend:block/flavolite_runed_9" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } - } - } - ] +{ + "parent": "block/cube", + "textures": { + "particle": "betterend:block/flavolite_polished", + "rune_1": "betterend:block/flavolite_runed_7", + "rune_2": "betterend:block/flavolite_runed_8", + "rune_3": "betterend:block/flavolite_runed_9" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/flavolite_runed_active_1.json b/src/main/resources/assets/betterend/models/block/flavolite_runed_active_1.json index 9ce2251a..1cb2bb14 100644 --- a/src/main/resources/assets/betterend/models/block/flavolite_runed_active_1.json +++ b/src/main/resources/assets/betterend/models/block/flavolite_runed_active_1.json @@ -1,23 +1,23 @@ -{ - "parent": "block/cube", - "textures": { - "particle": "betterend:block/flavolite_polished", - "rune_1": "betterend:block/flavolite_runed_active_1", - "rune_2": "betterend:block/flavolite_runed_active_2", - "rune_3": "betterend:block/flavolite_runed_active_3" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } - } - } - ] +{ + "parent": "block/cube", + "textures": { + "particle": "betterend:block/flavolite_polished", + "rune_1": "betterend:block/flavolite_runed_active_1", + "rune_2": "betterend:block/flavolite_runed_active_2", + "rune_3": "betterend:block/flavolite_runed_active_3" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/flavolite_runed_active_2.json b/src/main/resources/assets/betterend/models/block/flavolite_runed_active_2.json index cd2da68f..8a91fc95 100644 --- a/src/main/resources/assets/betterend/models/block/flavolite_runed_active_2.json +++ b/src/main/resources/assets/betterend/models/block/flavolite_runed_active_2.json @@ -1,23 +1,23 @@ -{ - "parent": "block/cube", - "textures": { - "particle": "betterend:block/flavolite_polished", - "rune_1": "betterend:block/flavolite_runed_active_4", - "rune_2": "betterend:block/flavolite_runed_active_5", - "rune_3": "betterend:block/flavolite_runed_active_6" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } - } - } - ] +{ + "parent": "block/cube", + "textures": { + "particle": "betterend:block/flavolite_polished", + "rune_1": "betterend:block/flavolite_runed_active_4", + "rune_2": "betterend:block/flavolite_runed_active_5", + "rune_3": "betterend:block/flavolite_runed_active_6" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/flavolite_runed_active_3.json b/src/main/resources/assets/betterend/models/block/flavolite_runed_active_3.json index f275976e..e61f3cb4 100644 --- a/src/main/resources/assets/betterend/models/block/flavolite_runed_active_3.json +++ b/src/main/resources/assets/betterend/models/block/flavolite_runed_active_3.json @@ -1,23 +1,23 @@ -{ - "parent": "block/cube", - "textures": { - "particle": "betterend:block/flavolite_polished", - "rune_1": "betterend:block/flavolite_runed_active_7", - "rune_2": "betterend:block/flavolite_runed_active_8", - "rune_3": "betterend:block/flavolite_runed_active_9" - }, - "elements": [ - { - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } - } - } - ] +{ + "parent": "block/cube", + "textures": { + "particle": "betterend:block/flavolite_polished", + "rune_1": "betterend:block/flavolite_runed_active_7", + "rune_2": "betterend:block/flavolite_runed_active_8", + "rune_3": "betterend:block/flavolite_runed_active_9" + }, + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_1", "cullface": "up" }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "north" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_2", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#rune_3", "cullface": "east" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/infusion_pedestal_bottom.json b/src/main/resources/assets/betterend/models/block/infusion_pedestal_bottom.json index 2cddb558..1f334b9f 100644 --- a/src/main/resources/assets/betterend/models/block/infusion_pedestal_bottom.json +++ b/src/main/resources/assets/betterend/models/block/infusion_pedestal_bottom.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_bottom", - "textures": { - "base": "betterend:block/infusion_pedestal_base", - "pillar": "betterend:block/infusion_pedestal_pillar", - "bottom": "betterend:block/infusion_pedestal_base" - } +{ + "parent": "betterend:block/pedestal_bottom", + "textures": { + "base": "betterend:block/infusion_pedestal_base", + "pillar": "betterend:block/infusion_pedestal_pillar", + "bottom": "betterend:block/infusion_pedestal_base" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/infusion_pedestal_column.json b/src/main/resources/assets/betterend/models/block/infusion_pedestal_column.json index a14800d7..4c80a603 100644 --- a/src/main/resources/assets/betterend/models/block/infusion_pedestal_column.json +++ b/src/main/resources/assets/betterend/models/block/infusion_pedestal_column.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_column", - "textures": { - "base": "betterend:block/infusion_pedestal_base", - "pillar": "betterend:block/infusion_pedestal_pillar", - "bottom": "betterend:block/infusion_pedestal_base" - } +{ + "parent": "betterend:block/pedestal_column", + "textures": { + "base": "betterend:block/infusion_pedestal_base", + "pillar": "betterend:block/infusion_pedestal_pillar", + "bottom": "betterend:block/infusion_pedestal_base" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/infusion_pedestal_column_top.json b/src/main/resources/assets/betterend/models/block/infusion_pedestal_column_top.json index f934033d..e6f2eb72 100644 --- a/src/main/resources/assets/betterend/models/block/infusion_pedestal_column_top.json +++ b/src/main/resources/assets/betterend/models/block/infusion_pedestal_column_top.json @@ -1,7 +1,7 @@ -{ - "parent": "betterend:block/pedestal_column_top", - "textures": { - "base": "betterend:block/infusion_pedestal_base", - "pillar": "betterend:block/infusion_pedestal_pillar" - } +{ + "parent": "betterend:block/pedestal_column_top", + "textures": { + "base": "betterend:block/infusion_pedestal_base", + "pillar": "betterend:block/infusion_pedestal_pillar" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/infusion_pedestal_default.json b/src/main/resources/assets/betterend/models/block/infusion_pedestal_default.json index 7e9504a0..0f8e398b 100644 --- a/src/main/resources/assets/betterend/models/block/infusion_pedestal_default.json +++ b/src/main/resources/assets/betterend/models/block/infusion_pedestal_default.json @@ -1,73 +1,73 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "top": "betterend:block/infusion_pedestal_top", - "base": "betterend:block/infusion_pedestal_base", - "pillar": "betterend:block/infusion_pedestal_pillar", - "bottom": "betterend:block/infusion_pedestal_base", - "particle": "#base" - }, - "elements": [ - { - "__comment": "eye", - "from": [ 4, 15, 4 ], - "to": [ 12, 16, 12 ], - "faces": { - "up": { "uv": [ 4, 4, 12, 12 ], "texture": "#top" }, - "north": { "uv": [ 4, 4, 12, 5 ], "texture": "#top" }, - "south": { "uv": [ 4, 4, 12, 5 ], "texture": "#top" }, - "west": { "uv": [ 4, 4, 12, 5 ], "texture": "#top" }, - "east": { "uv": [ 4, 4, 12, 5 ], "texture": "#top" } - } - }, - { - "__comment": "basin_1", - "from": [ 0, 0, 0 ], - "to": [ 16, 3, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom", "cullface": "down" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom" }, - "north": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, - "south": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, - "west": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, - "east": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" } - } - }, - { - "__comment": "basin_2", - "from": [ 2, 3, 2 ], - "to": [ 14, 4, 14 ], - "faces": { - "up": { "uv": [ 2, 2, 14, 14 ], "texture": "#bottom" }, - "north": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, - "south": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, - "west": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, - "east": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" } - } - }, - { - "__comment": "pillar", - "from": [ 3, 4, 3 ], - "to": [ 13, 13, 13 ], - "faces": { - "north": { "uv": [ 3, 4, 13, 13 ], "texture": "#pillar" }, - "south": { "uv": [ 3, 4, 13, 13 ], "texture": "#pillar" }, - "west": { "uv": [ 3, 4, 13, 13 ], "texture": "#pillar" }, - "east": { "uv": [ 3, 4, 13, 13 ], "texture": "#pillar" } - } - }, - { - "__comment": "top", - "from": [ 1, 13, 1 ], - "to": [ 15, 15, 15 ], - "faces": { - "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#base" }, - "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#top" }, - "north": { "uv": [ 1, 14, 15, 16 ], "texture": "#top" }, - "south": { "uv": [ 1, 14, 15, 16 ], "texture": "#top" }, - "west": { "uv": [ 1, 14, 15, 16 ], "texture": "#top" }, - "east": { "uv": [ 15, 16, 1, 14 ], "texture": "#top" } - } - } - ] +{ + "parent": "minecraft:block/block", + "textures": { + "top": "betterend:block/infusion_pedestal_top", + "base": "betterend:block/infusion_pedestal_base", + "pillar": "betterend:block/infusion_pedestal_pillar", + "bottom": "betterend:block/infusion_pedestal_base", + "particle": "#base" + }, + "elements": [ + { + "__comment": "eye", + "from": [ 4, 15, 4 ], + "to": [ 12, 16, 12 ], + "faces": { + "up": { "uv": [ 4, 4, 12, 12 ], "texture": "#top" }, + "north": { "uv": [ 4, 4, 12, 5 ], "texture": "#top" }, + "south": { "uv": [ 4, 4, 12, 5 ], "texture": "#top" }, + "west": { "uv": [ 4, 4, 12, 5 ], "texture": "#top" }, + "east": { "uv": [ 4, 4, 12, 5 ], "texture": "#top" } + } + }, + { + "__comment": "basin_1", + "from": [ 0, 0, 0 ], + "to": [ 16, 3, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom" }, + "north": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, + "south": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, + "west": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, + "east": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" } + } + }, + { + "__comment": "basin_2", + "from": [ 2, 3, 2 ], + "to": [ 14, 4, 14 ], + "faces": { + "up": { "uv": [ 2, 2, 14, 14 ], "texture": "#bottom" }, + "north": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, + "south": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, + "west": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, + "east": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" } + } + }, + { + "__comment": "pillar", + "from": [ 3, 4, 3 ], + "to": [ 13, 13, 13 ], + "faces": { + "north": { "uv": [ 3, 4, 13, 13 ], "texture": "#pillar" }, + "south": { "uv": [ 3, 4, 13, 13 ], "texture": "#pillar" }, + "west": { "uv": [ 3, 4, 13, 13 ], "texture": "#pillar" }, + "east": { "uv": [ 3, 4, 13, 13 ], "texture": "#pillar" } + } + }, + { + "__comment": "top", + "from": [ 1, 13, 1 ], + "to": [ 15, 15, 15 ], + "faces": { + "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#base" }, + "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#top" }, + "north": { "uv": [ 1, 14, 15, 16 ], "texture": "#top" }, + "south": { "uv": [ 1, 14, 15, 16 ], "texture": "#top" }, + "west": { "uv": [ 1, 14, 15, 16 ], "texture": "#top" }, + "east": { "uv": [ 15, 16, 1, 14 ], "texture": "#top" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/infusion_pedestal_pillar.json b/src/main/resources/assets/betterend/models/block/infusion_pedestal_pillar.json index 268ab428..72e9c206 100644 --- a/src/main/resources/assets/betterend/models/block/infusion_pedestal_pillar.json +++ b/src/main/resources/assets/betterend/models/block/infusion_pedestal_pillar.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/pedestal_pillar", - "textures": { - "pillar": "betterend:block/infusion_pedestal_pillar" - } +{ + "parent": "betterend:block/pedestal_pillar", + "textures": { + "pillar": "betterend:block/infusion_pedestal_pillar" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/infusion_pedestal_top.json b/src/main/resources/assets/betterend/models/block/infusion_pedestal_top.json index 2cf01bb9..e63d0fc7 100644 --- a/src/main/resources/assets/betterend/models/block/infusion_pedestal_top.json +++ b/src/main/resources/assets/betterend/models/block/infusion_pedestal_top.json @@ -1,47 +1,47 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "top": "betterend:block/infusion_pedestal_top", - "base": "betterend:block/infusion_pedestal_base", - "pillar": "betterend:block/infusion_pedestal_pillar", - "particle": "#base" - }, - "elements": [ - { - "__comment": "eye", - "from": [ 4, 11, 4 ], - "to": [ 12, 12, 12 ], - "faces": { - "up": { "uv": [ 4, 4, 12, 12 ], "texture": "#top" }, - "north": { "uv": [ 4, 4, 12, 5 ], "texture": "#top" }, - "south": { "uv": [ 4, 4, 12, 5 ], "texture": "#top" }, - "west": { "uv": [ 4, 4, 12, 5 ], "texture": "#top" }, - "east": { "uv": [ 4, 4, 12, 5 ], "texture": "#top" } - } - }, - { - "__comment": "pillar", - "from": [ 3, 0, 3 ], - "to": [ 13, 9, 13 ], - "faces": { - "north": { "uv": [ 3, 0, 13, 9 ], "texture": "#pillar" }, - "south": { "uv": [ 3, 0, 13, 9 ], "texture": "#pillar" }, - "west": { "uv": [ 3, 0, 13, 9 ], "texture": "#pillar" }, - "east": { "uv": [ 3, 0, 13, 9 ], "texture": "#pillar" } - } - }, - { - "__comment": "top", - "from": [ 1, 9, 1 ], - "to": [ 15, 11, 15 ], - "faces": { - "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#base" }, - "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#top" }, - "north": { "uv": [ 1, 14, 15, 16 ], "texture": "#top" }, - "south": { "uv": [ 1, 14, 15, 16 ], "texture": "#top" }, - "west": { "uv": [ 1, 14, 15, 16 ], "texture": "#top" }, - "east": { "uv": [ 15, 16, 1, 14 ], "texture": "#top" } - } - } - ] +{ + "parent": "minecraft:block/block", + "textures": { + "top": "betterend:block/infusion_pedestal_top", + "base": "betterend:block/infusion_pedestal_base", + "pillar": "betterend:block/infusion_pedestal_pillar", + "particle": "#base" + }, + "elements": [ + { + "__comment": "eye", + "from": [ 4, 11, 4 ], + "to": [ 12, 12, 12 ], + "faces": { + "up": { "uv": [ 4, 4, 12, 12 ], "texture": "#top" }, + "north": { "uv": [ 4, 4, 12, 5 ], "texture": "#top" }, + "south": { "uv": [ 4, 4, 12, 5 ], "texture": "#top" }, + "west": { "uv": [ 4, 4, 12, 5 ], "texture": "#top" }, + "east": { "uv": [ 4, 4, 12, 5 ], "texture": "#top" } + } + }, + { + "__comment": "pillar", + "from": [ 3, 0, 3 ], + "to": [ 13, 9, 13 ], + "faces": { + "north": { "uv": [ 3, 0, 13, 9 ], "texture": "#pillar" }, + "south": { "uv": [ 3, 0, 13, 9 ], "texture": "#pillar" }, + "west": { "uv": [ 3, 0, 13, 9 ], "texture": "#pillar" }, + "east": { "uv": [ 3, 0, 13, 9 ], "texture": "#pillar" } + } + }, + { + "__comment": "top", + "from": [ 1, 9, 1 ], + "to": [ 15, 11, 15 ], + "faces": { + "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#base" }, + "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#top" }, + "north": { "uv": [ 1, 14, 15, 16 ], "texture": "#top" }, + "south": { "uv": [ 1, 14, 15, 16 ], "texture": "#top" }, + "west": { "uv": [ 1, 14, 15, 16 ], "texture": "#top" }, + "east": { "uv": [ 15, 16, 1, 14 ], "texture": "#top" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/mossy_glowshroom_fur.json b/src/main/resources/assets/betterend/models/block/mossy_glowshroom_fur.json index 3eff83e4..0f0d81d0 100644 --- a/src/main/resources/assets/betterend/models/block/mossy_glowshroom_fur.json +++ b/src/main/resources/assets/betterend/models/block/mossy_glowshroom_fur.json @@ -1,75 +1,75 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/mossy_glowshroom_fur", - "texture": "betterend:block/mossy_glowshroom_fur" - }, - "elements": [ - { - "__comment": "PlaneY1", - "from": [ 0, -0.001, -8 ], - "to": [ 16, 0, 8 ], - "rotation": { "origin": [ 0, 0, 8 ], "axis": "x", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ 0, 0, 8 ], - "to": [ 16, 0.001, 24 ], - "rotation": { "origin": [ 0, 0.000000954, 8 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY4", - "from": [ 8, -0.001, 0 ], - "to": [ 24, 0, 16 ], - "rotation": { "origin": [ 8, 0, 16 ], "axis": "z", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 } - } - }, - { - "__comment": "PlaneY4", - "from": [ -8, 0, 2 ], - "to": [ 8, 0.001, 18 ], - "rotation": { "origin": [ 8, 0, 18 ], "axis": "z", "angle": -22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 90 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 90 } - } - }, - { - "__comment": "PlaneX6", - "from": [ 0, 0, -6.5 ], - "to": [ 0.001, 16, 16 ], - "rotation": { "origin": [ 0, 16, 16 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneX6", - "from": [ -6.5, 0, 15.999 ], - "to": [ 16, 16, 16 ], - "rotation": { "origin": [ 16, 16, 16 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/mossy_glowshroom_fur", + "texture": "betterend:block/mossy_glowshroom_fur" + }, + "elements": [ + { + "__comment": "PlaneY1", + "from": [ 0, -0.001, -8 ], + "to": [ 16, 0, 8 ], + "rotation": { "origin": [ 0, 0, 8 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, 0, 8 ], + "to": [ 16, 0.001, 24 ], + "rotation": { "origin": [ 0, 0.000000954, 8 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY4", + "from": [ 8, -0.001, 0 ], + "to": [ 24, 0, 16 ], + "rotation": { "origin": [ 8, 0, 16 ], "axis": "z", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 270 } + } + }, + { + "__comment": "PlaneY4", + "from": [ -8, 0, 2 ], + "to": [ 8, 0.001, 18 ], + "rotation": { "origin": [ 8, 0, 18 ], "axis": "z", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 90 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 90 } + } + }, + { + "__comment": "PlaneX6", + "from": [ 0, 0, -6.5 ], + "to": [ 0.001, 16, 16 ], + "rotation": { "origin": [ 0, 16, 16 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneX6", + "from": [ -6.5, 0, 15.999 ], + "to": [ 16, 16, 16 ], + "rotation": { "origin": [ 16, 16, 16 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/murkweed_01.json b/src/main/resources/assets/betterend/models/block/murkweed_01.json index 3855ff83..b0aae2ef 100644 --- a/src/main/resources/assets/betterend/models/block/murkweed_01.json +++ b/src/main/resources/assets/betterend/models/block/murkweed_01.json @@ -1,257 +1,257 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "parent": "block/block", - "textures": { - "particle": "betterend:block/murkweed", - "texture": "betterend:block/murkweed" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 2, 11, 2.5 ], - "to": [ 6, 15, 6.5 ], - "faces": { - "down": { "uv": [ 4, 12, 8, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 8, 4, 12 ], "texture": "#texture" }, - "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 3, 15, 3.5 ], - "to": [ 5, 15.5, 5.5 ], - "faces": { - "north": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, - "south": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, - "west": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, - "east": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 2.5, 15.5, 3 ], - "to": [ 5.5, 16, 6 ], - "faces": { - "down": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" }, - "up": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" }, - "north": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, - "south": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, - "west": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, - "east": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 2, 0, 2 ], - "to": [ 2.001, 11, 8 ], - "rotation": { "origin": [ 2, 0, 2 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 6, 0, 2 ], - "to": [ 6.001, 11, 8 ], - "rotation": { "origin": [ 6, 0, 2 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 0, 16, 12 ], "texture": "#texture" }, - "east": { "uv": [ 10, 0, 16, 12 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 10, 0, 1 ], - "to": [ 10.001, 8, 7 ], - "rotation": { "origin": [ 10, 0, 1 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" }, - "east": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 14, 0, 1 ], - "to": [ 14.001, 8, 7 ], - "rotation": { "origin": [ 14, 0, 1 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" }, - "east": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 6, 0, 7 ], - "to": [ 6.001, 9, 13 ], - "rotation": { "origin": [ 6, 0, 7 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 4, 16, 13 ], "texture": "#texture" }, - "east": { "uv": [ 10, 4, 16, 13 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 10, 0, 7 ], - "to": [ 10.001, 9, 13 ], - "rotation": { "origin": [ 10, 0, 7 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 4, 16, 13 ], "texture": "#texture" }, - "east": { "uv": [ 10, 4, 16, 13 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 0, 0, 10 ], - "to": [ 0.001, 5, 16 ], - "rotation": { "origin": [ 0, 0, 10 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, - "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 4, 0, 10 ], - "to": [ 4.001, 5, 16 ], - "rotation": { "origin": [ 4, 0, 10 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, - "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 11, 0, 11 ], - "to": [ 11.001, 7, 17 ], - "rotation": { "origin": [ 11, 0, 11 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 9, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 10, 9, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 15, 0, 11 ], - "to": [ 15.001, 7, 17 ], - "rotation": { "origin": [ 15, 0, 11 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 9, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 10, 9, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 6, 9, 7.5 ], - "to": [ 10, 13, 11.5 ], - "faces": { - "down": { "uv": [ 4, 12, 8, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 8, 4, 12 ], "texture": "#texture" }, - "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 7, 13, 8.5 ], - "to": [ 9, 13.5, 10.5 ], - "faces": { - "north": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, - "south": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, - "west": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, - "east": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 6.5, 13.5, 8 ], - "to": [ 9.5, 14, 11 ], - "faces": { - "down": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" }, - "up": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" }, - "north": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, - "south": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, - "west": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, - "east": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 10.5, 8, 1.5 ], - "to": [ 13.5, 12, 4.5 ], - "faces": { - "down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" }, - "up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" }, - "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 11, 7, 11 ], - "to": [ 15, 11, 15 ], - "faces": { - "down": { "uv": [ 4, 12, 8, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 8, 4, 12 ], "texture": "#texture" }, - "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 12, 11, 12 ], - "to": [ 14, 11.5, 14 ], - "faces": { - "north": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, - "south": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, - "west": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, - "east": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 11.5, 11.5, 11.5 ], - "to": [ 14.5, 12, 14.5 ], - "faces": { - "down": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" }, - "up": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" }, - "north": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, - "south": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, - "west": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, - "east": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 0.5, 5, 10.5 ], - "to": [ 3.5, 9, 13.5 ], - "faces": { - "down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" }, - "up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" }, - "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "parent": "block/block", + "textures": { + "particle": "betterend:block/murkweed", + "texture": "betterend:block/murkweed" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 2, 11, 2.5 ], + "to": [ 6, 15, 6.5 ], + "faces": { + "down": { "uv": [ 4, 12, 8, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 8, 4, 12 ], "texture": "#texture" }, + "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 3, 15, 3.5 ], + "to": [ 5, 15.5, 5.5 ], + "faces": { + "north": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, + "south": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, + "west": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, + "east": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 2.5, 15.5, 3 ], + "to": [ 5.5, 16, 6 ], + "faces": { + "down": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" }, + "up": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" }, + "north": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, + "south": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, + "west": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, + "east": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 2, 0, 2 ], + "to": [ 2.001, 11, 8 ], + "rotation": { "origin": [ 2, 0, 2 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 6, 0, 2 ], + "to": [ 6.001, 11, 8 ], + "rotation": { "origin": [ 6, 0, 2 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 0, 16, 12 ], "texture": "#texture" }, + "east": { "uv": [ 10, 0, 16, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 10, 0, 1 ], + "to": [ 10.001, 8, 7 ], + "rotation": { "origin": [ 10, 0, 1 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" }, + "east": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 14, 0, 1 ], + "to": [ 14.001, 8, 7 ], + "rotation": { "origin": [ 14, 0, 1 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" }, + "east": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 6, 0, 7 ], + "to": [ 6.001, 9, 13 ], + "rotation": { "origin": [ 6, 0, 7 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 4, 16, 13 ], "texture": "#texture" }, + "east": { "uv": [ 10, 4, 16, 13 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 10, 0, 7 ], + "to": [ 10.001, 9, 13 ], + "rotation": { "origin": [ 10, 0, 7 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 4, 16, 13 ], "texture": "#texture" }, + "east": { "uv": [ 10, 4, 16, 13 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 0, 0, 10 ], + "to": [ 0.001, 5, 16 ], + "rotation": { "origin": [ 0, 0, 10 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, + "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 4, 0, 10 ], + "to": [ 4.001, 5, 16 ], + "rotation": { "origin": [ 4, 0, 10 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, + "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 11, 0, 11 ], + "to": [ 11.001, 7, 17 ], + "rotation": { "origin": [ 11, 0, 11 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 9, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 10, 9, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 15, 0, 11 ], + "to": [ 15.001, 7, 17 ], + "rotation": { "origin": [ 15, 0, 11 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 9, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 10, 9, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 6, 9, 7.5 ], + "to": [ 10, 13, 11.5 ], + "faces": { + "down": { "uv": [ 4, 12, 8, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 8, 4, 12 ], "texture": "#texture" }, + "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 7, 13, 8.5 ], + "to": [ 9, 13.5, 10.5 ], + "faces": { + "north": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, + "south": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, + "west": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, + "east": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 6.5, 13.5, 8 ], + "to": [ 9.5, 14, 11 ], + "faces": { + "down": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" }, + "up": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" }, + "north": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, + "south": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, + "west": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, + "east": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 10.5, 8, 1.5 ], + "to": [ 13.5, 12, 4.5 ], + "faces": { + "down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" }, + "up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" }, + "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 11, 7, 11 ], + "to": [ 15, 11, 15 ], + "faces": { + "down": { "uv": [ 4, 12, 8, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 8, 4, 12 ], "texture": "#texture" }, + "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 12, 11, 12 ], + "to": [ 14, 11.5, 14 ], + "faces": { + "north": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, + "south": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, + "west": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, + "east": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 11.5, 11.5, 11.5 ], + "to": [ 14.5, 12, 14.5 ], + "faces": { + "down": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" }, + "up": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" }, + "north": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, + "south": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, + "west": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, + "east": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 0.5, 5, 10.5 ], + "to": [ 3.5, 9, 13.5 ], + "faces": { + "down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" }, + "up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" }, + "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/murkweed_02.json b/src/main/resources/assets/betterend/models/block/murkweed_02.json index b4e66e5a..51f3eab3 100644 --- a/src/main/resources/assets/betterend/models/block/murkweed_02.json +++ b/src/main/resources/assets/betterend/models/block/murkweed_02.json @@ -1,174 +1,174 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "parent": "block/block", - "textures": { - "particle": "betterend:block/murkweed", - "texture": "betterend:block/murkweed" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 6, 11, 6 ], - "to": [ 10, 15, 10 ], - "faces": { - "down": { "uv": [ 4, 12, 8, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 8, 4, 12 ], "texture": "#texture" }, - "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 7, 15, 7 ], - "to": [ 9, 15.5, 9 ], - "faces": { - "north": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, - "south": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, - "west": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, - "east": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 6.5, 15.5, 6.5 ], - "to": [ 9.5, 16, 9.5 ], - "faces": { - "down": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" }, - "up": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" }, - "north": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, - "south": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, - "west": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, - "east": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 6, 0, 5.5 ], - "to": [ 6.001, 11, 11.5 ], - "rotation": { "origin": [ 6, 0, 5.5 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 10, 0, 5.5 ], - "to": [ 10.001, 11, 11.5 ], - "rotation": { "origin": [ 10, 0, 5.5 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 0, 16, 12 ], "texture": "#texture" }, - "east": { "uv": [ 10, 0, 16, 12 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 10, 0, 1 ], - "to": [ 10.001, 8, 7 ], - "rotation": { "origin": [ 10, 0, 1 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" }, - "east": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 14, 0, 1 ], - "to": [ 14.001, 8, 7 ], - "rotation": { "origin": [ 14, 0, 1 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" }, - "east": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 0.5, 0, 1.5 ], - "to": [ 0.501, 5, 7.5 ], - "rotation": { "origin": [ 0.5, 0, 1.5 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, - "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 4.5, 0, 1.5 ], - "to": [ 4.501, 5, 7.5 ], - "rotation": { "origin": [ 4.5, 0, 1.5 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, - "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 10.5, 8, 1.5 ], - "to": [ 13.5, 12, 4.5 ], - "faces": { - "down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" }, - "up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" }, - "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 1, 5, 2 ], - "to": [ 4, 9, 5 ], - "faces": { - "down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" }, - "up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" }, - "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 5.5, 5, 12 ], - "to": [ 8.5, 9, 15 ], - "faces": { - "down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" }, - "up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" }, - "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 9, 0, 11.5 ], - "to": [ 9.001, 5, 17.5 ], - "rotation": { "origin": [ 9, 0, 11.5 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, - "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 5, 0, 11.5 ], - "to": [ 5.001, 5, 17.5 ], - "rotation": { "origin": [ 5, 0, 11.5 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, - "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "parent": "block/block", + "textures": { + "particle": "betterend:block/murkweed", + "texture": "betterend:block/murkweed" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 6, 11, 6 ], + "to": [ 10, 15, 10 ], + "faces": { + "down": { "uv": [ 4, 12, 8, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 8, 4, 12 ], "texture": "#texture" }, + "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 7, 15, 7 ], + "to": [ 9, 15.5, 9 ], + "faces": { + "north": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, + "south": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, + "west": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" }, + "east": { "uv": [ 1, 7.5, 3, 8 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 6.5, 15.5, 6.5 ], + "to": [ 9.5, 16, 9.5 ], + "faces": { + "down": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" }, + "up": { "uv": [ 0, 4, 3, 7 ], "texture": "#texture" }, + "north": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, + "south": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, + "west": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" }, + "east": { "uv": [ 0, 6.5, 3, 7 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 6, 0, 5.5 ], + "to": [ 6.001, 11, 11.5 ], + "rotation": { "origin": [ 6, 0, 5.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 10, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 10, 0, 5.5 ], + "to": [ 10.001, 11, 11.5 ], + "rotation": { "origin": [ 10, 0, 5.5 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 0, 16, 12 ], "texture": "#texture" }, + "east": { "uv": [ 10, 0, 16, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 10, 0, 1 ], + "to": [ 10.001, 8, 7 ], + "rotation": { "origin": [ 10, 0, 1 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" }, + "east": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 14, 0, 1 ], + "to": [ 14.001, 8, 7 ], + "rotation": { "origin": [ 14, 0, 1 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" }, + "east": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 0.5, 0, 1.5 ], + "to": [ 0.501, 5, 7.5 ], + "rotation": { "origin": [ 0.5, 0, 1.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, + "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 4.5, 0, 1.5 ], + "to": [ 4.501, 5, 7.5 ], + "rotation": { "origin": [ 4.5, 0, 1.5 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, + "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 10.5, 8, 1.5 ], + "to": [ 13.5, 12, 4.5 ], + "faces": { + "down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" }, + "up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" }, + "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 1, 5, 2 ], + "to": [ 4, 9, 5 ], + "faces": { + "down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" }, + "up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" }, + "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 5.5, 5, 12 ], + "to": [ 8.5, 9, 15 ], + "faces": { + "down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" }, + "up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" }, + "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 9, 0, 11.5 ], + "to": [ 9.001, 5, 17.5 ], + "rotation": { "origin": [ 9, 0, 11.5 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, + "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 5, 0, 11.5 ], + "to": [ 5.001, 5, 17.5 ], + "rotation": { "origin": [ 5, 0, 11.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, + "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/murkweed_03.json b/src/main/resources/assets/betterend/models/block/murkweed_03.json index a2209221..f022a369 100644 --- a/src/main/resources/assets/betterend/models/block/murkweed_03.json +++ b/src/main/resources/assets/betterend/models/block/murkweed_03.json @@ -1,181 +1,181 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "parent": "block/block", - "textures": { - "particle": "betterend:block/murkweed", - "texture": "betterend:block/murkweed" - }, - "elements": [ - { - "__comment": "PlaneX4", - "from": [ 8.5, 0, 4.5 ], - "to": [ 8.501, 8, 10.5 ], - "rotation": { "origin": [ 8.5, 0, 4.5 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" }, - "east": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 12.5, 0, 4.5 ], - "to": [ 12.501, 8, 10.5 ], - "rotation": { "origin": [ 12.5, 0, 4.5 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" }, - "east": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 1.5, 0, 2.5 ], - "to": [ 1.501, 5, 8.5 ], - "rotation": { "origin": [ 1.5, 0, 2.5 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, - "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 5.5, 0, 2.5 ], - "to": [ 5.501, 5, 8.5 ], - "rotation": { "origin": [ 5.5, 0, 2.5 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, - "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 9, 8, 5 ], - "to": [ 12, 12, 8 ], - "faces": { - "down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" }, - "up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" }, - "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 2, 5, 3 ], - "to": [ 5, 9, 6 ], - "faces": { - "down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" }, - "up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" }, - "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 5, 5, 11 ], - "to": [ 8, 9, 14 ], - "faces": { - "down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" }, - "up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" }, - "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 8.5, 0, 10.5 ], - "to": [ 8.501, 5, 16.5 ], - "rotation": { "origin": [ 8.5, 0, 10.5 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, - "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 4.5, 0, 10.5 ], - "to": [ 4.501, 5, 16.5 ], - "rotation": { "origin": [ 4.5, 0, 10.5 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, - "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 15, 0, 10.5 ], - "to": [ 15.001, 5, 16.5 ], - "rotation": { "origin": [ 15, 0, 10.5 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" }, - "east": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 11, 0, 10.5 ], - "to": [ 11.001, 5, 16.5 ], - "rotation": { "origin": [ 11, 0, 10.5 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" }, - "east": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 0, 0, 8 ], - "to": [ 0.001, 5, 14 ], - "rotation": { "origin": [ 0, 0, 8 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" }, - "east": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 4, 0, 8 ], - "to": [ 4.001, 5, 14 ], - "rotation": { "origin": [ 4, 0, 8 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" }, - "east": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 7, 0, 0.5 ], - "to": [ 7.001, 5, 6.5 ], - "rotation": { "origin": [ 7, 0, 0.5 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" }, - "east": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX4", - "from": [ 11, 0, 0.5 ], - "to": [ 11.001, 5, 6.5 ], - "rotation": { "origin": [ 11, 0, 0.5 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" }, - "east": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "parent": "block/block", + "textures": { + "particle": "betterend:block/murkweed", + "texture": "betterend:block/murkweed" + }, + "elements": [ + { + "__comment": "PlaneX4", + "from": [ 8.5, 0, 4.5 ], + "to": [ 8.501, 8, 10.5 ], + "rotation": { "origin": [ 8.5, 0, 4.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" }, + "east": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 12.5, 0, 4.5 ], + "to": [ 12.501, 8, 10.5 ], + "rotation": { "origin": [ 12.5, 0, 4.5 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" }, + "east": { "uv": [ 10, 4, 16, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 1.5, 0, 2.5 ], + "to": [ 1.501, 5, 8.5 ], + "rotation": { "origin": [ 1.5, 0, 2.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, + "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 5.5, 0, 2.5 ], + "to": [ 5.501, 5, 8.5 ], + "rotation": { "origin": [ 5.5, 0, 2.5 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, + "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 9, 8, 5 ], + "to": [ 12, 12, 8 ], + "faces": { + "down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" }, + "up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" }, + "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 2, 5, 3 ], + "to": [ 5, 9, 6 ], + "faces": { + "down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" }, + "up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" }, + "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 5, 5, 11 ], + "to": [ 8, 9, 14 ], + "faces": { + "down": { "uv": [ 4, 12, 7, 15 ], "texture": "#texture" }, + "up": { "uv": [ 0, 8, 3, 11 ], "texture": "#texture" }, + "north": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 12, 4, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 8.5, 0, 10.5 ], + "to": [ 8.501, 5, 16.5 ], + "rotation": { "origin": [ 8.5, 0, 10.5 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, + "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 4.5, 0, 10.5 ], + "to": [ 4.501, 5, 16.5 ], + "rotation": { "origin": [ 4.5, 0, 10.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" }, + "east": { "uv": [ 10, 8, 16, 13 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 15, 0, 10.5 ], + "to": [ 15.001, 5, 16.5 ], + "rotation": { "origin": [ 15, 0, 10.5 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" }, + "east": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 11, 0, 10.5 ], + "to": [ 11.001, 5, 16.5 ], + "rotation": { "origin": [ 11, 0, 10.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" }, + "east": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 0, 0, 8 ], + "to": [ 0.001, 5, 14 ], + "rotation": { "origin": [ 0, 0, 8 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" }, + "east": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 4, 0, 8 ], + "to": [ 4.001, 5, 14 ], + "rotation": { "origin": [ 4, 0, 8 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" }, + "east": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 7, 0, 0.5 ], + "to": [ 7.001, 5, 6.5 ], + "rotation": { "origin": [ 7, 0, 0.5 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" }, + "east": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX4", + "from": [ 11, 0, 0.5 ], + "to": [ 11.001, 5, 6.5 ], + "rotation": { "origin": [ 11, 0, 0.5 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" }, + "east": { "uv": [ 10, 0, 16, 5 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/path.json b/src/main/resources/assets/betterend/models/block/path.json index 54cbb2a5..ccea6b87 100644 --- a/src/main/resources/assets/betterend/models/block/path.json +++ b/src/main/resources/assets/betterend/models/block/path.json @@ -1,18 +1,18 @@ -{ "parent": "block/block", - "textures": { - "particle": "#side" - }, - "elements": [ - { "from": [ 0, 0, 0 ], - "to": [ 16, 15, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom", "cullface": "down" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#top" }, - "north": { "uv": [ 0, 1, 16, 16 ], "texture": "#side", "cullface": "north" }, - "south": { "uv": [ 0, 1, 16, 16 ], "texture": "#side", "cullface": "south" }, - "west": { "uv": [ 0, 1, 16, 16 ], "texture": "#side", "cullface": "west" }, - "east": { "uv": [ 0, 1, 16, 16 ], "texture": "#side", "cullface": "east" } - } - } - ] -} +{ "parent": "block/block", + "textures": { + "particle": "#side" + }, + "elements": [ + { "from": [ 0, 0, 0 ], + "to": [ 16, 15, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#top" }, + "north": { "uv": [ 0, 1, 16, 16 ], "texture": "#side", "cullface": "north" }, + "south": { "uv": [ 0, 1, 16, 16 ], "texture": "#side", "cullface": "south" }, + "west": { "uv": [ 0, 1, 16, 16 ], "texture": "#side", "cullface": "west" }, + "east": { "uv": [ 0, 1, 16, 16 ], "texture": "#side", "cullface": "east" } + } + } + ] +} diff --git a/src/main/resources/assets/betterend/models/block/pedestal_bottom.json b/src/main/resources/assets/betterend/models/block/pedestal_bottom.json index a24eaad7..fd2dfea9 100644 --- a/src/main/resources/assets/betterend/models/block/pedestal_bottom.json +++ b/src/main/resources/assets/betterend/models/block/pedestal_bottom.json @@ -1,44 +1,44 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "#base" - }, - "elements": [ - { - "__comment": "basin_1", - "from": [ 0, 0, 0 ], - "to": [ 16, 3, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom", "cullface": "down" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom" }, - "north": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, - "south": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, - "west": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, - "east": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" } - } - }, - { - "__comment": "basin_2", - "from": [ 2, 3, 2 ], - "to": [ 14, 4, 14 ], - "faces": { - "up": { "uv": [ 2, 2, 14, 14 ], "texture": "#bottom" }, - "north": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, - "south": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, - "west": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, - "east": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" } - } - }, - { - "__comment": "pillar", - "from": [ 3, 4, 3 ], - "to": [ 13, 16, 13 ], - "faces": { - "north": { "uv": [ 3, 4, 13, 16 ], "texture": "#pillar" }, - "south": { "uv": [ 3, 4, 13, 16 ], "texture": "#pillar" }, - "west": { "uv": [ 3, 4, 13, 16 ], "texture": "#pillar" }, - "east": { "uv": [ 3, 4, 13, 16 ], "texture": "#pillar" } - } - } - ] +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "#base" + }, + "elements": [ + { + "__comment": "basin_1", + "from": [ 0, 0, 0 ], + "to": [ 16, 3, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom" }, + "north": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, + "south": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, + "west": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, + "east": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" } + } + }, + { + "__comment": "basin_2", + "from": [ 2, 3, 2 ], + "to": [ 14, 4, 14 ], + "faces": { + "up": { "uv": [ 2, 2, 14, 14 ], "texture": "#bottom" }, + "north": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, + "south": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, + "west": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, + "east": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" } + } + }, + { + "__comment": "pillar", + "from": [ 3, 4, 3 ], + "to": [ 13, 16, 13 ], + "faces": { + "north": { "uv": [ 3, 4, 13, 16 ], "texture": "#pillar" }, + "south": { "uv": [ 3, 4, 13, 16 ], "texture": "#pillar" }, + "west": { "uv": [ 3, 4, 13, 16 ], "texture": "#pillar" }, + "east": { "uv": [ 3, 4, 13, 16 ], "texture": "#pillar" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/pedestal_column.json b/src/main/resources/assets/betterend/models/block/pedestal_column.json index 08a6dc5c..305a43a9 100644 --- a/src/main/resources/assets/betterend/models/block/pedestal_column.json +++ b/src/main/resources/assets/betterend/models/block/pedestal_column.json @@ -1,69 +1,69 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "#base" - }, - "elements": [ - { - "__comment": "basin_1", - "from": [ 0, 0, 0 ], - "to": [ 16, 3, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom", "cullface": "down" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom" }, - "north": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, - "south": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, - "west": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, - "east": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" } - } - }, - { - "__comment": "basin_2", - "from": [ 2, 3, 2 ], - "to": [ 14, 4, 14 ], - "faces": { - "up": { "uv": [ 2, 2, 14, 14 ], "texture": "#bottom" }, - "north": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, - "south": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, - "west": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, - "east": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" } - } - }, - { - "__comment": "pillar", - "from": [ 3, 4, 3 ], - "to": [ 13, 13, 13 ], - "faces": { - "north": { "uv": [ 3, 4, 13, 14 ], "texture": "#pillar" }, - "south": { "uv": [ 3, 4, 13, 14 ], "texture": "#pillar" }, - "west": { "uv": [ 3, 4, 13, 14 ], "texture": "#pillar" }, - "east": { "uv": [ 3, 4, 13, 14 ], "texture": "#pillar" } - } - }, - { - "__comment": "top", - "from": [ 2, 13, 2 ], - "to": [ 14, 14, 14 ], - "faces": { - "down": { "uv": [ 2, 2, 14, 14 ], "texture": "#base" }, - "north": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" }, - "south": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" }, - "west": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" }, - "east": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" } - } - }, - { - "__comment": "top", - "from": [ 1, 14, 1 ], - "to": [ 15, 16, 15 ], - "faces": { - "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#base" }, - "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#base", "cullface": "up" }, - "north": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, - "south": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, - "west": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, - "east": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" } - } - } - ] +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "#base" + }, + "elements": [ + { + "__comment": "basin_1", + "from": [ 0, 0, 0 ], + "to": [ 16, 3, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom" }, + "north": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, + "south": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, + "west": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, + "east": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" } + } + }, + { + "__comment": "basin_2", + "from": [ 2, 3, 2 ], + "to": [ 14, 4, 14 ], + "faces": { + "up": { "uv": [ 2, 2, 14, 14 ], "texture": "#bottom" }, + "north": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, + "south": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, + "west": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, + "east": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" } + } + }, + { + "__comment": "pillar", + "from": [ 3, 4, 3 ], + "to": [ 13, 13, 13 ], + "faces": { + "north": { "uv": [ 3, 4, 13, 14 ], "texture": "#pillar" }, + "south": { "uv": [ 3, 4, 13, 14 ], "texture": "#pillar" }, + "west": { "uv": [ 3, 4, 13, 14 ], "texture": "#pillar" }, + "east": { "uv": [ 3, 4, 13, 14 ], "texture": "#pillar" } + } + }, + { + "__comment": "top", + "from": [ 2, 13, 2 ], + "to": [ 14, 14, 14 ], + "faces": { + "down": { "uv": [ 2, 2, 14, 14 ], "texture": "#base" }, + "north": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" }, + "south": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" }, + "west": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" }, + "east": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" } + } + }, + { + "__comment": "top", + "from": [ 1, 14, 1 ], + "to": [ 15, 16, 15 ], + "faces": { + "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#base" }, + "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#base", "cullface": "up" }, + "north": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, + "south": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, + "west": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, + "east": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/pedestal_column_top.json b/src/main/resources/assets/betterend/models/block/pedestal_column_top.json index 16722d25..879546d4 100644 --- a/src/main/resources/assets/betterend/models/block/pedestal_column_top.json +++ b/src/main/resources/assets/betterend/models/block/pedestal_column_top.json @@ -1,44 +1,44 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "#base" - }, - "elements": [ - { - "__comment": "pillar", - "from": [ 3, 0, 3 ], - "to": [ 13, 13, 13 ], - "faces": { - "north": { "uv": [ 3, 0, 13, 14 ], "texture": "#pillar" }, - "south": { "uv": [ 3, 0, 13, 14 ], "texture": "#pillar" }, - "west": { "uv": [ 3, 0, 13, 14 ], "texture": "#pillar" }, - "east": { "uv": [ 3, 0, 13, 14 ], "texture": "#pillar" } - } - }, - { - "__comment": "top", - "from": [ 2, 13, 2 ], - "to": [ 14, 14, 14 ], - "faces": { - "down": { "uv": [ 2, 2, 14, 14 ], "texture": "#base" }, - "north": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" }, - "south": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" }, - "west": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" }, - "east": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" } - } - }, - { - "__comment": "top", - "from": [ 1, 14, 1 ], - "to": [ 15, 16, 15 ], - "faces": { - "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#base" }, - "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#base", "cullface": "up" }, - "north": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, - "south": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, - "west": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, - "east": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" } - } - } - ] +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "#base" + }, + "elements": [ + { + "__comment": "pillar", + "from": [ 3, 0, 3 ], + "to": [ 13, 13, 13 ], + "faces": { + "north": { "uv": [ 3, 0, 13, 14 ], "texture": "#pillar" }, + "south": { "uv": [ 3, 0, 13, 14 ], "texture": "#pillar" }, + "west": { "uv": [ 3, 0, 13, 14 ], "texture": "#pillar" }, + "east": { "uv": [ 3, 0, 13, 14 ], "texture": "#pillar" } + } + }, + { + "__comment": "top", + "from": [ 2, 13, 2 ], + "to": [ 14, 14, 14 ], + "faces": { + "down": { "uv": [ 2, 2, 14, 14 ], "texture": "#base" }, + "north": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" }, + "south": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" }, + "west": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" }, + "east": { "uv": [ 2, 13, 14, 14 ], "texture": "#base" } + } + }, + { + "__comment": "top", + "from": [ 1, 14, 1 ], + "to": [ 15, 16, 15 ], + "faces": { + "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#base" }, + "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#base", "cullface": "up" }, + "north": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, + "south": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, + "west": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" }, + "east": { "uv": [ 1, 14, 15, 16 ], "texture": "#base" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/pedestal_default.json b/src/main/resources/assets/betterend/models/block/pedestal_default.json index 43fdecb9..9968af11 100644 --- a/src/main/resources/assets/betterend/models/block/pedestal_default.json +++ b/src/main/resources/assets/betterend/models/block/pedestal_default.json @@ -1,57 +1,57 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "#base" - }, - "elements": [ - { - "__comment": "basin_1", - "from": [ 0, 0, 0 ], - "to": [ 16, 3, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom", "cullface": "down" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom" }, - "north": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, - "south": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, - "west": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, - "east": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" } - } - }, - { - "__comment": "basin_2", - "from": [ 2, 3, 2 ], - "to": [ 14, 4, 14 ], - "faces": { - "up": { "uv": [ 2, 2, 14, 14 ], "texture": "#bottom" }, - "north": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, - "south": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, - "west": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, - "east": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" } - } - }, - { - "__comment": "pillar", - "from": [ 3, 4, 3 ], - "to": [ 13, 12, 13 ], - "faces": { - "north": { "uv": [ 3, 4, 13, 12 ], "texture": "#pillar" }, - "south": { "uv": [ 3, 4, 13, 12 ], "texture": "#pillar" }, - "west": { "uv": [ 3, 4, 13, 12 ], "texture": "#pillar" }, - "east": { "uv": [ 3, 4, 13, 12 ], "texture": "#pillar" } - } - }, - { - "__comment": "top", - "from": [ 1, 12, 1 ], - "to": [ 15, 14, 15 ], - "faces": { - "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#base" }, - "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#top" }, - "north": { "uv": [ 1, 12, 15, 14 ], "texture": "#base" }, - "south": { "uv": [ 1, 12, 15, 14 ], "texture": "#base" }, - "west": { "uv": [ 1, 12, 15, 14 ], "texture": "#base" }, - "east": { "uv": [ 1, 12, 15, 14 ], "texture": "#base" } - } - } - ] +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "#base" + }, + "elements": [ + { + "__comment": "basin_1", + "from": [ 0, 0, 0 ], + "to": [ 16, 3, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#bottom" }, + "north": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, + "south": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, + "west": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" }, + "east": { "uv": [ 0, 0, 16, 3 ], "texture": "#bottom" } + } + }, + { + "__comment": "basin_2", + "from": [ 2, 3, 2 ], + "to": [ 14, 4, 14 ], + "faces": { + "up": { "uv": [ 2, 2, 14, 14 ], "texture": "#bottom" }, + "north": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, + "south": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, + "west": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" }, + "east": { "uv": [ 3, 3, 14, 4 ], "texture": "#bottom" } + } + }, + { + "__comment": "pillar", + "from": [ 3, 4, 3 ], + "to": [ 13, 12, 13 ], + "faces": { + "north": { "uv": [ 3, 4, 13, 12 ], "texture": "#pillar" }, + "south": { "uv": [ 3, 4, 13, 12 ], "texture": "#pillar" }, + "west": { "uv": [ 3, 4, 13, 12 ], "texture": "#pillar" }, + "east": { "uv": [ 3, 4, 13, 12 ], "texture": "#pillar" } + } + }, + { + "__comment": "top", + "from": [ 1, 12, 1 ], + "to": [ 15, 14, 15 ], + "faces": { + "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#base" }, + "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#top" }, + "north": { "uv": [ 1, 12, 15, 14 ], "texture": "#base" }, + "south": { "uv": [ 1, 12, 15, 14 ], "texture": "#base" }, + "west": { "uv": [ 1, 12, 15, 14 ], "texture": "#base" }, + "east": { "uv": [ 1, 12, 15, 14 ], "texture": "#base" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/pedestal_pillar.json b/src/main/resources/assets/betterend/models/block/pedestal_pillar.json index dea3004c..05629772 100644 --- a/src/main/resources/assets/betterend/models/block/pedestal_pillar.json +++ b/src/main/resources/assets/betterend/models/block/pedestal_pillar.json @@ -1,19 +1,19 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "#pillar" - }, - "elements": [ - { - "__comment": "pillar", - "from": [ 3, 0, 3 ], - "to": [ 13, 16, 13 ], - "faces": { - "north": { "uv": [ 3, 0, 13, 16 ], "texture": "#pillar" }, - "south": { "uv": [ 3, 0, 13, 16 ], "texture": "#pillar" }, - "west": { "uv": [ 3, 0, 13, 16 ], "texture": "#pillar" }, - "east": { "uv": [ 3, 0, 13, 16 ], "texture": "#pillar" } - } - } - ] +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "#pillar" + }, + "elements": [ + { + "__comment": "pillar", + "from": [ 3, 0, 3 ], + "to": [ 13, 16, 13 ], + "faces": { + "north": { "uv": [ 3, 0, 13, 16 ], "texture": "#pillar" }, + "south": { "uv": [ 3, 0, 13, 16 ], "texture": "#pillar" }, + "west": { "uv": [ 3, 0, 13, 16 ], "texture": "#pillar" }, + "east": { "uv": [ 3, 0, 13, 16 ], "texture": "#pillar" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/pedestal_top.json b/src/main/resources/assets/betterend/models/block/pedestal_top.json index 5a5343aa..6345e685 100644 --- a/src/main/resources/assets/betterend/models/block/pedestal_top.json +++ b/src/main/resources/assets/betterend/models/block/pedestal_top.json @@ -1,32 +1,32 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "#base" - }, - "elements": [ - { - "__comment": "pillar", - "from": [ 3, 0, 3 ], - "to": [ 13, 8, 13 ], - "faces": { - "north": { "uv": [ 3, 0, 13, 8 ], "texture": "#pillar" }, - "south": { "uv": [ 3, 0, 13, 8 ], "texture": "#pillar" }, - "west": { "uv": [ 3, 0, 13, 8 ], "texture": "#pillar" }, - "east": { "uv": [ 3, 0, 13, 8 ], "texture": "#pillar" } - } - }, - { - "__comment": "top", - "from": [ 1, 8, 1 ], - "to": [ 15, 10, 15 ], - "faces": { - "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#base" }, - "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#top" }, - "north": { "uv": [ 1, 8, 15, 10 ], "texture": "#base" }, - "south": { "uv": [ 1, 8, 15, 10 ], "texture": "#base" }, - "west": { "uv": [ 1, 8, 15, 10 ], "texture": "#base" }, - "east": { "uv": [ 1, 8, 15, 10 ], "texture": "#base" } - } - } - ] +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "#base" + }, + "elements": [ + { + "__comment": "pillar", + "from": [ 3, 0, 3 ], + "to": [ 13, 8, 13 ], + "faces": { + "north": { "uv": [ 3, 0, 13, 8 ], "texture": "#pillar" }, + "south": { "uv": [ 3, 0, 13, 8 ], "texture": "#pillar" }, + "west": { "uv": [ 3, 0, 13, 8 ], "texture": "#pillar" }, + "east": { "uv": [ 3, 0, 13, 8 ], "texture": "#pillar" } + } + }, + { + "__comment": "top", + "from": [ 1, 8, 1 ], + "to": [ 15, 10, 15 ], + "faces": { + "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#base" }, + "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#top" }, + "north": { "uv": [ 1, 8, 15, 10 ], "texture": "#base" }, + "south": { "uv": [ 1, 8, 15, 10 ], "texture": "#base" }, + "west": { "uv": [ 1, 8, 15, 10 ], "texture": "#base" }, + "east": { "uv": [ 1, 8, 15, 10 ], "texture": "#base" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/plane_bottom.json b/src/main/resources/assets/betterend/models/block/plane_bottom.json index daca44a4..2feac88b 100644 --- a/src/main/resources/assets/betterend/models/block/plane_bottom.json +++ b/src/main/resources/assets/betterend/models/block/plane_bottom.json @@ -1,17 +1,17 @@ -{ - "textures": { - "particle": "#texture" - }, - "elements": [ - { - "__comment": "PlaneY1", - "from": [ 0, 0, 0 ], - "to": [ 16, 0.001, 16 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - } - ] +{ + "textures": { + "particle": "#texture" + }, + "elements": [ + { + "__comment": "PlaneY1", + "from": [ 0, 0, 0 ], + "to": [ 16, 0.001, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/purple_polypore_01.json b/src/main/resources/assets/betterend/models/block/purple_polypore_01.json index a257f601..8bab03a1 100644 --- a/src/main/resources/assets/betterend/models/block/purple_polypore_01.json +++ b/src/main/resources/assets/betterend/models/block/purple_polypore_01.json @@ -1,100 +1,100 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/purple_polypore", - "texture": "betterend:block/purple_polypore" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 0, 4, 0 ], - "to": [ 8, 7, 6 ], - "shade": false, - "faces": { - "down": { "uv": [ 8, 10, 16, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 8, 6 ], "texture": "#texture" }, - "south": { "uv": [ 0, 8, 8, 11 ], "texture": "#texture" }, - "west": { "uv": [ 1, 8, 7, 11 ], "texture": "#texture" }, - "east": { "uv": [ 1, 8, 7, 11 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 7, 11, 0 ], - "to": [ 15, 14, 6 ], - "shade": false, - "faces": { - "down": { "uv": [ 8, 10, 16, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 8, 6 ], "texture": "#texture" }, - "south": { "uv": [ 0, 8, 8, 11 ], "texture": "#texture" }, - "west": { "uv": [ 1, 8, 7, 11 ], "texture": "#texture" }, - "east": { "uv": [ 1, 8, 7, 11 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 9, 1, 0 ], - "to": [ 15, 3, 6 ], - "shade": false, - "faces": { - "down": { "uv": [ 9, 10, 15, 16 ], "texture": "#texture" }, - "up": { "uv": [ 1, 0, 7, 6 ], "texture": "#texture" }, - "south": { "uv": [ 1, 8, 7, 10 ], "texture": "#texture" }, - "west": { "uv": [ 1, 8, 7, 10 ], "texture": "#texture" }, - "east": { "uv": [ 1, 8, 7, 10 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 3, 8, 0 ], - "to": [ 9, 10, 3 ], - "shade": false, - "faces": { - "down": { "uv": [ 10, 5, 16, 8 ], "texture": "#texture" }, - "up": { "uv": [ 1, 0, 7, 3 ], "texture": "#texture" }, - "south": { "uv": [ 1, 8, 6, 10 ], "texture": "#texture" }, - "west": { "uv": [ 3, 8, 6, 10 ], "texture": "#texture" }, - "east": { "uv": [ 3, 8, 6, 10 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 11, 6, 0 ], - "to": [ 15, 8, 2 ], - "shade": false, - "faces": { - "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, - "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, - "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, - "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, - "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 1, 13, 0 ], - "to": [ 5, 15, 2 ], - "shade": false, - "faces": { - "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, - "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, - "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, - "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, - "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 2, 1, 0 ], - "to": [ 6, 3, 2 ], - "shade": false, - "faces": { - "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, - "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, - "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, - "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, - "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/purple_polypore", + "texture": "betterend:block/purple_polypore" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 0, 4, 0 ], + "to": [ 8, 7, 6 ], + "shade": false, + "faces": { + "down": { "uv": [ 8, 10, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 8, 6 ], "texture": "#texture" }, + "south": { "uv": [ 0, 8, 8, 11 ], "texture": "#texture" }, + "west": { "uv": [ 1, 8, 7, 11 ], "texture": "#texture" }, + "east": { "uv": [ 1, 8, 7, 11 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 7, 11, 0 ], + "to": [ 15, 14, 6 ], + "shade": false, + "faces": { + "down": { "uv": [ 8, 10, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 8, 6 ], "texture": "#texture" }, + "south": { "uv": [ 0, 8, 8, 11 ], "texture": "#texture" }, + "west": { "uv": [ 1, 8, 7, 11 ], "texture": "#texture" }, + "east": { "uv": [ 1, 8, 7, 11 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 9, 1, 0 ], + "to": [ 15, 3, 6 ], + "shade": false, + "faces": { + "down": { "uv": [ 9, 10, 15, 16 ], "texture": "#texture" }, + "up": { "uv": [ 1, 0, 7, 6 ], "texture": "#texture" }, + "south": { "uv": [ 1, 8, 7, 10 ], "texture": "#texture" }, + "west": { "uv": [ 1, 8, 7, 10 ], "texture": "#texture" }, + "east": { "uv": [ 1, 8, 7, 10 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 3, 8, 0 ], + "to": [ 9, 10, 3 ], + "shade": false, + "faces": { + "down": { "uv": [ 10, 5, 16, 8 ], "texture": "#texture" }, + "up": { "uv": [ 1, 0, 7, 3 ], "texture": "#texture" }, + "south": { "uv": [ 1, 8, 6, 10 ], "texture": "#texture" }, + "west": { "uv": [ 3, 8, 6, 10 ], "texture": "#texture" }, + "east": { "uv": [ 3, 8, 6, 10 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 11, 6, 0 ], + "to": [ 15, 8, 2 ], + "shade": false, + "faces": { + "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, + "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, + "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, + "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, + "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 1, 13, 0 ], + "to": [ 5, 15, 2 ], + "shade": false, + "faces": { + "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, + "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, + "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, + "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, + "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 2, 1, 0 ], + "to": [ 6, 3, 2 ], + "shade": false, + "faces": { + "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, + "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, + "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, + "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, + "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/purple_polypore_02.json b/src/main/resources/assets/betterend/models/block/purple_polypore_02.json index 51501f73..442fe441 100644 --- a/src/main/resources/assets/betterend/models/block/purple_polypore_02.json +++ b/src/main/resources/assets/betterend/models/block/purple_polypore_02.json @@ -1,87 +1,87 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/purple_polypore", - "texture": "betterend:block/purple_polypore" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 2, 4, 0 ], - "to": [ 10, 7, 6 ], - "shade": false, - "faces": { - "down": { "uv": [ 8, 10, 16, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 8, 6 ], "texture": "#texture" }, - "south": { "uv": [ 0, 8, 8, 11 ], "texture": "#texture" }, - "west": { "uv": [ 1, 8, 7, 11 ], "texture": "#texture" }, - "east": { "uv": [ 1, 8, 7, 11 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 8, 11, 0 ], - "to": [ 14, 13, 3 ], - "shade": false, - "faces": { - "down": { "uv": [ 10, 5, 16, 8 ], "texture": "#texture" }, - "up": { "uv": [ 1, 0, 7, 3 ], "texture": "#texture" }, - "south": { "uv": [ 1, 8, 6, 10 ], "texture": "#texture" }, - "west": { "uv": [ 3, 8, 6, 10 ], "texture": "#texture" }, - "east": { "uv": [ 3, 8, 6, 10 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 1, 9, 0 ], - "to": [ 5, 11, 2 ], - "shade": false, - "faces": { - "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, - "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, - "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, - "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, - "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 3, 13, 0 ], - "to": [ 7, 15, 2 ], - "shade": false, - "faces": { - "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, - "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, - "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, - "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, - "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 10, 1, 0 ], - "to": [ 14, 3, 2 ], - "shade": false, - "faces": { - "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, - "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, - "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, - "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, - "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 11, 7, 0 ], - "to": [ 15, 9, 2 ], - "shade": false, - "faces": { - "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, - "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, - "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, - "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, - "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/purple_polypore", + "texture": "betterend:block/purple_polypore" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 2, 4, 0 ], + "to": [ 10, 7, 6 ], + "shade": false, + "faces": { + "down": { "uv": [ 8, 10, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 8, 6 ], "texture": "#texture" }, + "south": { "uv": [ 0, 8, 8, 11 ], "texture": "#texture" }, + "west": { "uv": [ 1, 8, 7, 11 ], "texture": "#texture" }, + "east": { "uv": [ 1, 8, 7, 11 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 8, 11, 0 ], + "to": [ 14, 13, 3 ], + "shade": false, + "faces": { + "down": { "uv": [ 10, 5, 16, 8 ], "texture": "#texture" }, + "up": { "uv": [ 1, 0, 7, 3 ], "texture": "#texture" }, + "south": { "uv": [ 1, 8, 6, 10 ], "texture": "#texture" }, + "west": { "uv": [ 3, 8, 6, 10 ], "texture": "#texture" }, + "east": { "uv": [ 3, 8, 6, 10 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 1, 9, 0 ], + "to": [ 5, 11, 2 ], + "shade": false, + "faces": { + "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, + "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, + "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, + "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, + "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 3, 13, 0 ], + "to": [ 7, 15, 2 ], + "shade": false, + "faces": { + "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, + "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, + "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, + "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, + "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 10, 1, 0 ], + "to": [ 14, 3, 2 ], + "shade": false, + "faces": { + "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, + "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, + "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, + "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, + "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 11, 7, 0 ], + "to": [ 15, 9, 2 ], + "shade": false, + "faces": { + "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, + "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, + "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, + "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, + "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/purple_polypore_03.json b/src/main/resources/assets/betterend/models/block/purple_polypore_03.json index 015017e8..e65be061 100644 --- a/src/main/resources/assets/betterend/models/block/purple_polypore_03.json +++ b/src/main/resources/assets/betterend/models/block/purple_polypore_03.json @@ -1,74 +1,74 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/purple_polypore", - "texture": "betterend:block/purple_polypore" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 2, 4, 0 ], - "to": [ 8, 6, 3 ], - "shade": false, - "faces": { - "down": { "uv": [ 10, 5, 16, 8 ], "texture": "#texture" }, - "up": { "uv": [ 1, 0, 7, 3 ], "texture": "#texture" }, - "south": { "uv": [ 1, 8, 6, 10 ], "texture": "#texture" }, - "west": { "uv": [ 3, 8, 6, 10 ], "texture": "#texture" }, - "east": { "uv": [ 3, 8, 6, 10 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 10, 12, 0 ], - "to": [ 14, 14, 2 ], - "shade": false, - "faces": { - "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, - "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, - "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, - "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, - "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 1, 11, 0 ], - "to": [ 5, 13, 2 ], - "shade": false, - "faces": { - "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, - "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, - "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, - "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, - "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 10, 2, 0 ], - "to": [ 14, 4, 2 ], - "shade": false, - "faces": { - "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, - "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, - "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, - "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, - "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 7, 8, 0 ], - "to": [ 11, 10, 2 ], - "shade": false, - "faces": { - "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, - "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, - "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, - "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, - "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/purple_polypore", + "texture": "betterend:block/purple_polypore" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 2, 4, 0 ], + "to": [ 8, 6, 3 ], + "shade": false, + "faces": { + "down": { "uv": [ 10, 5, 16, 8 ], "texture": "#texture" }, + "up": { "uv": [ 1, 0, 7, 3 ], "texture": "#texture" }, + "south": { "uv": [ 1, 8, 6, 10 ], "texture": "#texture" }, + "west": { "uv": [ 3, 8, 6, 10 ], "texture": "#texture" }, + "east": { "uv": [ 3, 8, 6, 10 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 10, 12, 0 ], + "to": [ 14, 14, 2 ], + "shade": false, + "faces": { + "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, + "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, + "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, + "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, + "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 1, 11, 0 ], + "to": [ 5, 13, 2 ], + "shade": false, + "faces": { + "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, + "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, + "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, + "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, + "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 10, 2, 0 ], + "to": [ 14, 4, 2 ], + "shade": false, + "faces": { + "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, + "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, + "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, + "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, + "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 7, 8, 0 ], + "to": [ 11, 10, 2 ], + "shade": false, + "faces": { + "down": { "uv": [ 11, 6, 15, 8 ], "texture": "#texture" }, + "up": { "uv": [ 2, 0, 6, 2 ], "texture": "#texture" }, + "south": { "uv": [ 2, 8, 6, 10 ], "texture": "#texture" }, + "west": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" }, + "east": { "uv": [ 3, 8, 5, 10 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/purpur_pedestal_bottom.json b/src/main/resources/assets/betterend/models/block/purpur_pedestal_bottom.json index a312e254..1d6898b5 100644 --- a/src/main/resources/assets/betterend/models/block/purpur_pedestal_bottom.json +++ b/src/main/resources/assets/betterend/models/block/purpur_pedestal_bottom.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_bottom", - "textures": { - "base": "minecraft:block/purpur_block", - "pillar": "minecraft:block/purpur_pillar", - "bottom": "minecraft:block/purpur_block" - } +{ + "parent": "betterend:block/pedestal_bottom", + "textures": { + "base": "minecraft:block/purpur_block", + "pillar": "minecraft:block/purpur_pillar", + "bottom": "minecraft:block/purpur_block" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/purpur_pedestal_column.json b/src/main/resources/assets/betterend/models/block/purpur_pedestal_column.json index 55b0e077..d351df01 100644 --- a/src/main/resources/assets/betterend/models/block/purpur_pedestal_column.json +++ b/src/main/resources/assets/betterend/models/block/purpur_pedestal_column.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_column", - "textures": { - "base": "minecraft:block/purpur_block", - "pillar": "minecraft:block/purpur_pillar", - "bottom": "minecraft:block/purpur_block" - } +{ + "parent": "betterend:block/pedestal_column", + "textures": { + "base": "minecraft:block/purpur_block", + "pillar": "minecraft:block/purpur_pillar", + "bottom": "minecraft:block/purpur_block" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/purpur_pedestal_column_top.json b/src/main/resources/assets/betterend/models/block/purpur_pedestal_column_top.json index 4a16ceaa..571b5fcb 100644 --- a/src/main/resources/assets/betterend/models/block/purpur_pedestal_column_top.json +++ b/src/main/resources/assets/betterend/models/block/purpur_pedestal_column_top.json @@ -1,7 +1,7 @@ -{ - "parent": "betterend:block/pedestal_column_top", - "textures": { - "base": "minecraft:block/purpur_block", - "pillar": "minecraft:block/purpur_pillar" - } +{ + "parent": "betterend:block/pedestal_column_top", + "textures": { + "base": "minecraft:block/purpur_block", + "pillar": "minecraft:block/purpur_pillar" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/purpur_pedestal_default.json b/src/main/resources/assets/betterend/models/block/purpur_pedestal_default.json index c8834f74..935f27bf 100644 --- a/src/main/resources/assets/betterend/models/block/purpur_pedestal_default.json +++ b/src/main/resources/assets/betterend/models/block/purpur_pedestal_default.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "minecraft:block/purpur_pillar_top", - "base": "minecraft:block/purpur_block", - "pillar": "minecraft:block/purpur_pillar", - "bottom": "minecraft:block/purpur_block" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "minecraft:block/purpur_pillar_top", + "base": "minecraft:block/purpur_block", + "pillar": "minecraft:block/purpur_pillar", + "bottom": "minecraft:block/purpur_block" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/purpur_pedestal_pillar.json b/src/main/resources/assets/betterend/models/block/purpur_pedestal_pillar.json index e769042c..f53c1710 100644 --- a/src/main/resources/assets/betterend/models/block/purpur_pedestal_pillar.json +++ b/src/main/resources/assets/betterend/models/block/purpur_pedestal_pillar.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/pedestal_pillar", - "textures": { - "pillar": "minecraft:block/purpur_pillar" - } +{ + "parent": "betterend:block/pedestal_pillar", + "textures": { + "pillar": "minecraft:block/purpur_pillar" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/purpur_pedestal_top.json b/src/main/resources/assets/betterend/models/block/purpur_pedestal_top.json index bcfa3e59..2e4914fc 100644 --- a/src/main/resources/assets/betterend/models/block/purpur_pedestal_top.json +++ b/src/main/resources/assets/betterend/models/block/purpur_pedestal_top.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "minecraft:block/purpur_pillar_top", - "base": "minecraft:block/purpur_block", - "pillar": "minecraft:block/purpur_pillar" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "minecraft:block/purpur_pillar_top", + "base": "minecraft:block/purpur_block", + "pillar": "minecraft:block/purpur_pillar" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/quartz_pedestal_bottom.json b/src/main/resources/assets/betterend/models/block/quartz_pedestal_bottom.json index 49fd5941..2b287638 100644 --- a/src/main/resources/assets/betterend/models/block/quartz_pedestal_bottom.json +++ b/src/main/resources/assets/betterend/models/block/quartz_pedestal_bottom.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_bottom", - "textures": { - "base": "minecraft:block/quartz_block_side", - "pillar": "minecraft:block/quartz_pillar", - "bottom": "minecraft:block/quartz_block_bottom" - } +{ + "parent": "betterend:block/pedestal_bottom", + "textures": { + "base": "minecraft:block/quartz_block_side", + "pillar": "minecraft:block/quartz_pillar", + "bottom": "minecraft:block/quartz_block_bottom" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/quartz_pedestal_column.json b/src/main/resources/assets/betterend/models/block/quartz_pedestal_column.json index 967bba09..0e94749c 100644 --- a/src/main/resources/assets/betterend/models/block/quartz_pedestal_column.json +++ b/src/main/resources/assets/betterend/models/block/quartz_pedestal_column.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_column", - "textures": { - "base": "minecraft:block/quartz_block_side", - "pillar": "minecraft:block/quartz_pillar", - "bottom": "minecraft:block/quartz_block_bottom" - } +{ + "parent": "betterend:block/pedestal_column", + "textures": { + "base": "minecraft:block/quartz_block_side", + "pillar": "minecraft:block/quartz_pillar", + "bottom": "minecraft:block/quartz_block_bottom" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/quartz_pedestal_column_top.json b/src/main/resources/assets/betterend/models/block/quartz_pedestal_column_top.json index 5617fdd5..8bb7d80a 100644 --- a/src/main/resources/assets/betterend/models/block/quartz_pedestal_column_top.json +++ b/src/main/resources/assets/betterend/models/block/quartz_pedestal_column_top.json @@ -1,7 +1,7 @@ -{ - "parent": "betterend:block/pedestal_column_top", - "textures": { - "base": "minecraft:block/quartz_block_side", - "pillar": "minecraft:block/quartz_pillar" - } +{ + "parent": "betterend:block/pedestal_column_top", + "textures": { + "base": "minecraft:block/quartz_block_side", + "pillar": "minecraft:block/quartz_pillar" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/quartz_pedestal_default.json b/src/main/resources/assets/betterend/models/block/quartz_pedestal_default.json index 8bf589fb..5c21a246 100644 --- a/src/main/resources/assets/betterend/models/block/quartz_pedestal_default.json +++ b/src/main/resources/assets/betterend/models/block/quartz_pedestal_default.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "minecraft:block/quartz_pillar_top", - "base": "minecraft:block/quartz_block_side", - "pillar": "minecraft:block/quartz_pillar", - "bottom": "minecraft:block/quartz_block_bottom" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "minecraft:block/quartz_pillar_top", + "base": "minecraft:block/quartz_block_side", + "pillar": "minecraft:block/quartz_pillar", + "bottom": "minecraft:block/quartz_block_bottom" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/quartz_pedestal_pillar.json b/src/main/resources/assets/betterend/models/block/quartz_pedestal_pillar.json index b3437682..44479d29 100644 --- a/src/main/resources/assets/betterend/models/block/quartz_pedestal_pillar.json +++ b/src/main/resources/assets/betterend/models/block/quartz_pedestal_pillar.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/pedestal_pillar", - "textures": { - "pillar": "minecraft:block/quartz_pillar" - } +{ + "parent": "betterend:block/pedestal_pillar", + "textures": { + "pillar": "minecraft:block/quartz_pillar" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/quartz_pedestal_top.json b/src/main/resources/assets/betterend/models/block/quartz_pedestal_top.json index 3866e7d7..c7e59c22 100644 --- a/src/main/resources/assets/betterend/models/block/quartz_pedestal_top.json +++ b/src/main/resources/assets/betterend/models/block/quartz_pedestal_top.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "minecraft:block/quartz_pillar_top", - "base": "minecraft:block/quartz_block_side", - "pillar": "minecraft:block/quartz_pillar" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "minecraft:block/quartz_pillar_top", + "base": "minecraft:block/quartz_block_side", + "pillar": "minecraft:block/quartz_pillar" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/shadow_berry_01.json b/src/main/resources/assets/betterend/models/block/shadow_berry_01.json index d0c273d2..9a8ad052 100644 --- a/src/main/resources/assets/betterend/models/block/shadow_berry_01.json +++ b/src/main/resources/assets/betterend/models/block/shadow_berry_01.json @@ -1,19 +1,19 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/shadow_berry", - "texture": "betterend:block/shadow_berry", - "texture1": "betterend:block/shadow_berry_leaves" - }, - "elements": [ - { - "__comment": "PlaneY4", - "from": [ 0, 0.5, 0 ], - "to": [ 16, 0.501, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/shadow_berry", + "texture": "betterend:block/shadow_berry", + "texture1": "betterend:block/shadow_berry_leaves" + }, + "elements": [ + { + "__comment": "PlaneY4", + "from": [ 0, 0.5, 0 ], + "to": [ 16, 0.501, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/shadow_berry_02.json b/src/main/resources/assets/betterend/models/block/shadow_berry_02.json index 459394e2..ef6acf7f 100644 --- a/src/main/resources/assets/betterend/models/block/shadow_berry_02.json +++ b/src/main/resources/assets/betterend/models/block/shadow_berry_02.json @@ -1,45 +1,45 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/shadow_berry", - "texture": "betterend:block/shadow_berry", - "texture1": "betterend:block/shadow_berry_leaves" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 3, 0, 3 ], - "to": [ 7, 4, 7 ], - "faces": { - "down": { "uv": [ 10, 10, 14, 14 ], "texture": "#texture" }, - "up": { "uv": [ 8.5, 0.5, 12.5, 4.5 ], "texture": "#texture" }, - "north": { "uv": [ 2, 11, 6, 15 ], "texture": "#texture" }, - "south": { "uv": [ 2, 11, 6, 15 ], "texture": "#texture" }, - "west": { "uv": [ 2, 11, 6, 15 ], "texture": "#texture" }, - "east": { "uv": [ 2, 11, 6, 15 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 11.5, 0, 6.5 ], - "to": [ 14.5, 3, 9.5 ], - "faces": { - "down": { "uv": [ 12, 12, 15, 15 ], "texture": "#texture" }, - "up": { "uv": [ 9, 1, 12, 4 ], "texture": "#texture" }, - "north": { "uv": [ 4, 11, 7, 14 ], "texture": "#texture" }, - "south": { "uv": [ 4, 11, 7, 14 ], "texture": "#texture" }, - "west": { "uv": [ 4, 11, 7, 14 ], "texture": "#texture" }, - "east": { "uv": [ 4, 11, 7, 14 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY4", - "from": [ 0, 0.5, 0 ], - "to": [ 16, 0.501, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/shadow_berry", + "texture": "betterend:block/shadow_berry", + "texture1": "betterend:block/shadow_berry_leaves" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 3, 0, 3 ], + "to": [ 7, 4, 7 ], + "faces": { + "down": { "uv": [ 10, 10, 14, 14 ], "texture": "#texture" }, + "up": { "uv": [ 8.5, 0.5, 12.5, 4.5 ], "texture": "#texture" }, + "north": { "uv": [ 2, 11, 6, 15 ], "texture": "#texture" }, + "south": { "uv": [ 2, 11, 6, 15 ], "texture": "#texture" }, + "west": { "uv": [ 2, 11, 6, 15 ], "texture": "#texture" }, + "east": { "uv": [ 2, 11, 6, 15 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 11.5, 0, 6.5 ], + "to": [ 14.5, 3, 9.5 ], + "faces": { + "down": { "uv": [ 12, 12, 15, 15 ], "texture": "#texture" }, + "up": { "uv": [ 9, 1, 12, 4 ], "texture": "#texture" }, + "north": { "uv": [ 4, 11, 7, 14 ], "texture": "#texture" }, + "south": { "uv": [ 4, 11, 7, 14 ], "texture": "#texture" }, + "west": { "uv": [ 4, 11, 7, 14 ], "texture": "#texture" }, + "east": { "uv": [ 4, 11, 7, 14 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY4", + "from": [ 0, 0.5, 0 ], + "to": [ 16, 0.501, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/shadow_berry_03.json b/src/main/resources/assets/betterend/models/block/shadow_berry_03.json index c20ce75d..09a96af2 100644 --- a/src/main/resources/assets/betterend/models/block/shadow_berry_03.json +++ b/src/main/resources/assets/betterend/models/block/shadow_berry_03.json @@ -1,58 +1,58 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/shadow_berry", - "texture": "betterend:block/shadow_berry", - "texture1": "betterend:block/shadow_berry_leaves" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 2, 0, 2 ], - "to": [ 8, 6, 8 ], - "faces": { - "down": { "uv": [ 9, 9, 15, 15 ], "texture": "#texture" }, - "up": { "uv": [ 1, 1, 7, 7 ], "texture": "#texture" }, - "north": { "uv": [ 1, 10, 7, 16 ], "texture": "#texture" }, - "south": { "uv": [ 1, 10, 7, 16 ], "texture": "#texture" }, - "west": { "uv": [ 1, 10, 7, 16 ], "texture": "#texture" }, - "east": { "uv": [ 1, 10, 7, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 11, 0, 6 ], - "to": [ 15, 4, 10 ], - "faces": { - "down": { "uv": [ 10, 10, 14, 14 ], "texture": "#texture" }, - "up": { "uv": [ 8.5, 0.5, 12.5, 4.5 ], "texture": "#texture" }, - "north": { "uv": [ 1, 11, 5, 15 ], "texture": "#texture" }, - "south": { "uv": [ 1, 11, 5, 15 ], "texture": "#texture" }, - "west": { "uv": [ 1, 11, 5, 15 ], "texture": "#texture" }, - "east": { "uv": [ 1, 11, 5, 15 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 4, 0, 11 ], - "to": [ 7, 3, 14 ], - "faces": { - "down": { "uv": [ 12, 12, 15, 15 ], "texture": "#texture" }, - "up": { "uv": [ 9, 1, 12, 4 ], "texture": "#texture" }, - "north": { "uv": [ 4, 11, 7, 14 ], "texture": "#texture" }, - "south": { "uv": [ 4, 11, 7, 14 ], "texture": "#texture" }, - "west": { "uv": [ 4, 11, 7, 14 ], "texture": "#texture" }, - "east": { "uv": [ 4, 11, 7, 14 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY4", - "from": [ 0, 0.5, 0 ], - "to": [ 16, 0.501, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/shadow_berry", + "texture": "betterend:block/shadow_berry", + "texture1": "betterend:block/shadow_berry_leaves" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 2, 0, 2 ], + "to": [ 8, 6, 8 ], + "faces": { + "down": { "uv": [ 9, 9, 15, 15 ], "texture": "#texture" }, + "up": { "uv": [ 1, 1, 7, 7 ], "texture": "#texture" }, + "north": { "uv": [ 1, 10, 7, 16 ], "texture": "#texture" }, + "south": { "uv": [ 1, 10, 7, 16 ], "texture": "#texture" }, + "west": { "uv": [ 1, 10, 7, 16 ], "texture": "#texture" }, + "east": { "uv": [ 1, 10, 7, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 11, 0, 6 ], + "to": [ 15, 4, 10 ], + "faces": { + "down": { "uv": [ 10, 10, 14, 14 ], "texture": "#texture" }, + "up": { "uv": [ 8.5, 0.5, 12.5, 4.5 ], "texture": "#texture" }, + "north": { "uv": [ 1, 11, 5, 15 ], "texture": "#texture" }, + "south": { "uv": [ 1, 11, 5, 15 ], "texture": "#texture" }, + "west": { "uv": [ 1, 11, 5, 15 ], "texture": "#texture" }, + "east": { "uv": [ 1, 11, 5, 15 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 4, 0, 11 ], + "to": [ 7, 3, 14 ], + "faces": { + "down": { "uv": [ 12, 12, 15, 15 ], "texture": "#texture" }, + "up": { "uv": [ 9, 1, 12, 4 ], "texture": "#texture" }, + "north": { "uv": [ 4, 11, 7, 14 ], "texture": "#texture" }, + "south": { "uv": [ 4, 11, 7, 14 ], "texture": "#texture" }, + "west": { "uv": [ 4, 11, 7, 14 ], "texture": "#texture" }, + "east": { "uv": [ 4, 11, 7, 14 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY4", + "from": [ 0, 0.5, 0 ], + "to": [ 16, 0.501, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/shadow_berry_04.json b/src/main/resources/assets/betterend/models/block/shadow_berry_04.json index b25f9619..45dc8db5 100644 --- a/src/main/resources/assets/betterend/models/block/shadow_berry_04.json +++ b/src/main/resources/assets/betterend/models/block/shadow_berry_04.json @@ -1,58 +1,58 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/shadow_berry", - "texture": "betterend:block/shadow_berry", - "texture1": "betterend:block/shadow_berry_leaves" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 1, 0, 1 ], - "to": [ 9, 8, 9 ], - "faces": { - "down": { "uv": [ 8, 8, 16, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 8, 8 ], "texture": "#texture" }, - "north": { "uv": [ 0, 8, 8, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 8, 8, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 8, 8, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 8, 8, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 10, 0, 5 ], - "to": [ 16, 6, 11 ], - "faces": { - "down": { "uv": [ 9, 9, 15, 15 ], "texture": "#texture" }, - "up": { "uv": [ 1, 1, 7, 7 ], "texture": "#texture" }, - "north": { "uv": [ 0, 10, 6, 16 ], "texture": "#texture" }, - "south": { "uv": [ 0, 10, 6, 16 ], "texture": "#texture" }, - "west": { "uv": [ 0, 10, 6, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 10, 6, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 3, 0, 10 ], - "to": [ 8, 5, 15 ], - "faces": { - "down": { "uv": [ 11, 11, 16, 16 ], "texture": "#texture" }, - "up": { "uv": [ 8, 0, 13, 5 ], "texture": "#texture" }, - "north": { "uv": [ 3, 11, 8, 16 ], "texture": "#texture" }, - "south": { "uv": [ 3, 11, 8, 16 ], "texture": "#texture" }, - "west": { "uv": [ 3, 11, 8, 16 ], "texture": "#texture" }, - "east": { "uv": [ 3, 11, 8, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneY4", - "from": [ 0, 0.5, 0 ], - "to": [ 16, 0.501, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/shadow_berry", + "texture": "betterend:block/shadow_berry", + "texture1": "betterend:block/shadow_berry_leaves" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 1, 0, 1 ], + "to": [ 9, 8, 9 ], + "faces": { + "down": { "uv": [ 8, 8, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 8, 8 ], "texture": "#texture" }, + "north": { "uv": [ 0, 8, 8, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 8, 8, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 8, 8, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 8, 8, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 10, 0, 5 ], + "to": [ 16, 6, 11 ], + "faces": { + "down": { "uv": [ 9, 9, 15, 15 ], "texture": "#texture" }, + "up": { "uv": [ 1, 1, 7, 7 ], "texture": "#texture" }, + "north": { "uv": [ 0, 10, 6, 16 ], "texture": "#texture" }, + "south": { "uv": [ 0, 10, 6, 16 ], "texture": "#texture" }, + "west": { "uv": [ 0, 10, 6, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 10, 6, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 3, 0, 10 ], + "to": [ 8, 5, 15 ], + "faces": { + "down": { "uv": [ 11, 11, 16, 16 ], "texture": "#texture" }, + "up": { "uv": [ 8, 0, 13, 5 ], "texture": "#texture" }, + "north": { "uv": [ 3, 11, 8, 16 ], "texture": "#texture" }, + "south": { "uv": [ 3, 11, 8, 16 ], "texture": "#texture" }, + "west": { "uv": [ 3, 11, 8, 16 ], "texture": "#texture" }, + "east": { "uv": [ 3, 11, 8, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneY4", + "from": [ 0, 0.5, 0 ], + "to": [ 16, 0.501, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture1" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/sided_door_bottom.json b/src/main/resources/assets/betterend/models/block/sided_door_bottom.json index 6fddf595..74a317b7 100644 --- a/src/main/resources/assets/betterend/models/block/sided_door_bottom.json +++ b/src/main/resources/assets/betterend/models/block/sided_door_bottom.json @@ -1,18 +1,18 @@ -{ - "ambientocclusion": false, - "textures": { - "particle": "#facade" - }, - "elements": [ - { "from": [ 0, 0, 0 ], - "to": [ 3, 16, 16 ], - "faces": { - "down": { "uv": [ 13, 0, 16, 16 ], "texture": "#side", "cullface": "down" }, - "north": { "uv": [ 3, 0, 0, 16 ], "texture": "#side", "cullface": "north" }, - "south": { "uv": [ 0, 0, 3, 16 ], "texture": "#side", "cullface": "south" }, - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#facade", "cullface": "west" }, - "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#facade" } - } - } - ] -} +{ + "ambientocclusion": false, + "textures": { + "particle": "#facade" + }, + "elements": [ + { "from": [ 0, 0, 0 ], + "to": [ 3, 16, 16 ], + "faces": { + "down": { "uv": [ 13, 0, 16, 16 ], "texture": "#side", "cullface": "down" }, + "north": { "uv": [ 3, 0, 0, 16 ], "texture": "#side", "cullface": "north" }, + "south": { "uv": [ 0, 0, 3, 16 ], "texture": "#side", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#facade", "cullface": "west" }, + "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#facade" } + } + } + ] +} diff --git a/src/main/resources/assets/betterend/models/block/sided_door_bottom_rh.json b/src/main/resources/assets/betterend/models/block/sided_door_bottom_rh.json index e6294d19..bb1b8e10 100644 --- a/src/main/resources/assets/betterend/models/block/sided_door_bottom_rh.json +++ b/src/main/resources/assets/betterend/models/block/sided_door_bottom_rh.json @@ -1,18 +1,18 @@ -{ - "ambientocclusion": false, - "textures": { - "particle": "#facade" - }, - "elements": [ - { "from": [ 0, 0, 0 ], - "to": [ 3, 16, 16 ], - "faces": { - "down": { "uv": [ 13, 0, 16, 16 ], "texture": "#side", "cullface": "down" }, - "north": { "uv": [ 3, 0, 0, 16 ], "texture": "#side", "cullface": "north" }, - "south": { "uv": [ 0, 0, 3, 16 ], "texture": "#side", "cullface": "south" }, - "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#facade", "cullface": "west" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#facade" } - } - } - ] -} +{ + "ambientocclusion": false, + "textures": { + "particle": "#facade" + }, + "elements": [ + { "from": [ 0, 0, 0 ], + "to": [ 3, 16, 16 ], + "faces": { + "down": { "uv": [ 13, 0, 16, 16 ], "texture": "#side", "cullface": "down" }, + "north": { "uv": [ 3, 0, 0, 16 ], "texture": "#side", "cullface": "north" }, + "south": { "uv": [ 0, 0, 3, 16 ], "texture": "#side", "cullface": "south" }, + "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#facade", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#facade" } + } + } + ] +} diff --git a/src/main/resources/assets/betterend/models/block/sided_door_top.json b/src/main/resources/assets/betterend/models/block/sided_door_top.json index 4a646108..fc8a7feb 100644 --- a/src/main/resources/assets/betterend/models/block/sided_door_top.json +++ b/src/main/resources/assets/betterend/models/block/sided_door_top.json @@ -1,18 +1,18 @@ -{ - "ambientocclusion": false, - "textures": { - "particle": "#facade" - }, - "elements": [ - { "from": [ 0, 0, 0 ], - "to": [ 3, 16, 16 ], - "faces": { - "up": { "uv": [ 13, 0, 16, 16 ], "texture": "#side", "cullface": "up" }, - "north": { "uv": [ 3, 0, 0, 16 ], "texture": "#side", "cullface": "north" }, - "south": { "uv": [ 0, 0, 3, 16 ], "texture": "#side", "cullface": "south" }, - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#facade", "cullface": "west" }, - "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#facade" } - } - } - ] -} +{ + "ambientocclusion": false, + "textures": { + "particle": "#facade" + }, + "elements": [ + { "from": [ 0, 0, 0 ], + "to": [ 3, 16, 16 ], + "faces": { + "up": { "uv": [ 13, 0, 16, 16 ], "texture": "#side", "cullface": "up" }, + "north": { "uv": [ 3, 0, 0, 16 ], "texture": "#side", "cullface": "north" }, + "south": { "uv": [ 0, 0, 3, 16 ], "texture": "#side", "cullface": "south" }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#facade", "cullface": "west" }, + "east": { "uv": [ 16, 0, 0, 16 ], "texture": "#facade" } + } + } + ] +} diff --git a/src/main/resources/assets/betterend/models/block/sided_door_top_rh.json b/src/main/resources/assets/betterend/models/block/sided_door_top_rh.json index c706fe16..2d3ebea9 100644 --- a/src/main/resources/assets/betterend/models/block/sided_door_top_rh.json +++ b/src/main/resources/assets/betterend/models/block/sided_door_top_rh.json @@ -1,18 +1,18 @@ -{ - "ambientocclusion": false, - "textures": { - "particle": "#facade" - }, - "elements": [ - { "from": [ 0, 0, 0 ], - "to": [ 3, 16, 16 ], - "faces": { - "up": { "uv": [ 13, 0, 16, 16 ], "texture": "#side", "cullface": "up" }, - "north": { "uv": [ 3, 0, 0, 16 ], "texture": "#side", "cullface": "north" }, - "south": { "uv": [ 0, 0, 3, 16 ], "texture": "#side", "cullface": "south" }, - "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#facade", "cullface": "west" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#facade" } - } - } - ] -} +{ + "ambientocclusion": false, + "textures": { + "particle": "#facade" + }, + "elements": [ + { "from": [ 0, 0, 0 ], + "to": [ 3, 16, 16 ], + "faces": { + "up": { "uv": [ 13, 0, 16, 16 ], "texture": "#side", "cullface": "up" }, + "north": { "uv": [ 3, 0, 0, 16 ], "texture": "#side", "cullface": "north" }, + "south": { "uv": [ 0, 0, 3, 16 ], "texture": "#side", "cullface": "south" }, + "west": { "uv": [ 16, 0, 0, 16 ], "texture": "#facade", "cullface": "west" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#facade" } + } + } + ] +} diff --git a/src/main/resources/assets/betterend/models/block/sided_trapdoor.json b/src/main/resources/assets/betterend/models/block/sided_trapdoor.json index 9f776427..e1f09a7b 100644 --- a/src/main/resources/assets/betterend/models/block/sided_trapdoor.json +++ b/src/main/resources/assets/betterend/models/block/sided_trapdoor.json @@ -1,18 +1,18 @@ -{ "parent": "block/thin_block", - "textures": { - "particle": "#texture" - }, - "elements": [ - { "from": [ 0, 0, 0 ], - "to": [ 16, 3, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "down" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "north": { "uv": [ 16, 0, 13, 16 ], "texture": "#side", "cullface": "north", "rotation": 90 }, - "south": { "uv": [ 16, 0, 13, 16 ], "texture": "#side", "cullface": "south", "rotation": 90 }, - "west": { "uv": [ 16, 0, 13, 16 ], "texture": "#side", "cullface": "west", "rotation": 90 }, - "east": { "uv": [ 16, 0, 13, 16 ], "texture": "#side", "cullface": "east", "rotation": 90 } - } - } - ] -} +{ "parent": "block/thin_block", + "textures": { + "particle": "#texture" + }, + "elements": [ + { "from": [ 0, 0, 0 ], + "to": [ 16, 3, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "down" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "north": { "uv": [ 16, 0, 13, 16 ], "texture": "#side", "cullface": "north", "rotation": 90 }, + "south": { "uv": [ 16, 0, 13, 16 ], "texture": "#side", "cullface": "south", "rotation": 90 }, + "west": { "uv": [ 16, 0, 13, 16 ], "texture": "#side", "cullface": "west", "rotation": 90 }, + "east": { "uv": [ 16, 0, 13, 16 ], "texture": "#side", "cullface": "east", "rotation": 90 } + } + } + ] +} diff --git a/src/main/resources/assets/betterend/models/block/test_pillar_top.json b/src/main/resources/assets/betterend/models/block/test_pillar_top.json index 1d2c1780..4edca483 100644 --- a/src/main/resources/assets/betterend/models/block/test_pillar_top.json +++ b/src/main/resources/assets/betterend/models/block/test_pillar_top.json @@ -1,32 +1,32 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "particle": "#side" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 1, 5, 1 ], - "to": [ 15, 8, 15 ], - "faces": { - "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#texture" }, - "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#rune" }, - "north": { "uv": [ 1, 8, 15, 11 ], "texture": "#side" }, - "south": { "uv": [ 1, 8, 15, 11 ], "texture": "#side" }, - "west": { "uv": [ 1, 8, 15, 11 ], "texture": "#side" }, - "east": { "uv": [ 1, 8, 15, 11 ], "texture": "#side" } - } - }, - { - "__comment": "Box1", - "from": [ 3, 0, 3 ], - "to": [ 13, 5, 13 ], - "faces": { - "north": { "uv": [ 3, 11, 13, 16 ], "texture": "#pillar" }, - "south": { "uv": [ 3, 11, 13, 16 ], "texture": "#pillar" }, - "west": { "uv": [ 3, 11, 13, 16 ], "texture": "#pillar" }, - "east": { "uv": [ 3, 11, 13, 16 ], "texture": "#pillar" } - } - } - ] +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "#side" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 1, 5, 1 ], + "to": [ 15, 8, 15 ], + "faces": { + "down": { "uv": [ 1, 1, 15, 15 ], "texture": "#texture" }, + "up": { "uv": [ 1, 1, 15, 15 ], "texture": "#rune" }, + "north": { "uv": [ 1, 8, 15, 11 ], "texture": "#side" }, + "south": { "uv": [ 1, 8, 15, 11 ], "texture": "#side" }, + "west": { "uv": [ 1, 8, 15, 11 ], "texture": "#side" }, + "east": { "uv": [ 1, 8, 15, 11 ], "texture": "#side" } + } + }, + { + "__comment": "Box1", + "from": [ 3, 0, 3 ], + "to": [ 13, 5, 13 ], + "faces": { + "north": { "uv": [ 3, 11, 13, 16 ], "texture": "#pillar" }, + "south": { "uv": [ 3, 11, 13, 16 ], "texture": "#pillar" }, + "west": { "uv": [ 3, 11, 13, 16 ], "texture": "#pillar" }, + "east": { "uv": [ 3, 11, 13, 16 ], "texture": "#pillar" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/tint_cube.json b/src/main/resources/assets/betterend/models/block/tint_cube.json index f65b5c05..f0334caf 100644 --- a/src/main/resources/assets/betterend/models/block/tint_cube.json +++ b/src/main/resources/assets/betterend/models/block/tint_cube.json @@ -1,21 +1,21 @@ -{ - "parent": "block/block", - "textures": { - "particle": "#texture" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "down", "tintindex": 0 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "up", "tintindex": 0 }, - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "north", "tintindex": 0 }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "south", "tintindex": 0 }, - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "west", "tintindex": 0 }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "east", "tintindex": 0 } - } - } - ] +{ + "parent": "block/block", + "textures": { + "particle": "#texture" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "down", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "up", "tintindex": 0 }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "north", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "south", "tintindex": 0 }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "west", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "east", "tintindex": 0 } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/tint_cube_noshade.json b/src/main/resources/assets/betterend/models/block/tint_cube_noshade.json index 2b600c49..8b832bb4 100644 --- a/src/main/resources/assets/betterend/models/block/tint_cube_noshade.json +++ b/src/main/resources/assets/betterend/models/block/tint_cube_noshade.json @@ -1,22 +1,22 @@ -{ - "parent": "block/block", - "textures": { - "particle": "#texture" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 0, 0, 0 ], - "to": [ 16, 16, 16 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "down", "tintindex": 0 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "up", "tintindex": 0 }, - "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "north", "tintindex": 0 }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "south", "tintindex": 0 }, - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "west", "tintindex": 0 }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "east", "tintindex": 0 } - } - } - ] +{ + "parent": "block/block", + "textures": { + "particle": "#texture" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "down", "tintindex": 0 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "up", "tintindex": 0 }, + "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "north", "tintindex": 0 }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "south", "tintindex": 0 }, + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "west", "tintindex": 0 }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "cullface": "east", "tintindex": 0 } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/umbrella_moss_bottom.json b/src/main/resources/assets/betterend/models/block/umbrella_moss_bottom.json index f637005b..08a06bfa 100644 --- a/src/main/resources/assets/betterend/models/block/umbrella_moss_bottom.json +++ b/src/main/resources/assets/betterend/models/block/umbrella_moss_bottom.json @@ -1,75 +1,75 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/umbrella_moss_bottom", - "texture": "betterend:block/umbrella_moss_bottom" - }, - "elements": [ - { - "__comment": "PlaneX3", - "from": [ -2, 0, -2 ], - "to": [ -1.999, 16, 14 ], - "rotation": { "origin": [ -2, 0, -2 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 9.5, 0, -2 ], - "to": [ 9.501, 16, 14 ], - "rotation": { "origin": [ 9.5, 0, -2 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 6, 0, 3 ], - "to": [ 6.001, 16, 19 ], - "rotation": { "origin": [ 6, 0, 3 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 17.5, 0, 3 ], - "to": [ 17.501, 16, 19 ], - "rotation": { "origin": [ 17.5, 0, 3 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ -1, 0, 6 ], - "to": [ -0.999, 16, 22 ], - "rotation": { "origin": [ -1, 0, 6 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 10.5, 0, 6 ], - "to": [ 10.501, 16, 22 ], - "rotation": { "origin": [ 10.5, 0, 6 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/umbrella_moss_bottom", + "texture": "betterend:block/umbrella_moss_bottom" + }, + "elements": [ + { + "__comment": "PlaneX3", + "from": [ -2, 0, -2 ], + "to": [ -1.999, 16, 14 ], + "rotation": { "origin": [ -2, 0, -2 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 9.5, 0, -2 ], + "to": [ 9.501, 16, 14 ], + "rotation": { "origin": [ 9.5, 0, -2 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 6, 0, 3 ], + "to": [ 6.001, 16, 19 ], + "rotation": { "origin": [ 6, 0, 3 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 17.5, 0, 3 ], + "to": [ 17.501, 16, 19 ], + "rotation": { "origin": [ 17.5, 0, 3 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ -1, 0, 6 ], + "to": [ -0.999, 16, 22 ], + "rotation": { "origin": [ -1, 0, 6 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 10.5, 0, 6 ], + "to": [ 10.501, 16, 22 ], + "rotation": { "origin": [ 10.5, 0, 6 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/umbrella_moss_small.json b/src/main/resources/assets/betterend/models/block/umbrella_moss_small.json index 99c195c7..9d39b0b2 100644 --- a/src/main/resources/assets/betterend/models/block/umbrella_moss_small.json +++ b/src/main/resources/assets/betterend/models/block/umbrella_moss_small.json @@ -1,238 +1,238 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/umbrella_moss_up", - "texture": "betterend:block/umbrella_moss_up", - "spore": "betterend:block/umbrella_moss_sporophyte", - "small": "betterend:block/umbrella_moss_small" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 3, 13, 3 ], - "to": [ 5, 16, 5 ], - "faces": { - "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, - "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, - "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } - } - }, - { - "__comment": "Box1", - "from": [ 11, 12, 8 ], - "to": [ 13, 15, 10 ], - "faces": { - "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, - "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, - "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } - } - }, - { - "__comment": "Box1", - "from": [ 4, 11, 11 ], - "to": [ 6, 14, 13 ], - "faces": { - "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, - "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, - "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } - } - }, - { - "__comment": "Box1", - "from": [ 1, 12, 1 ], - "to": [ 7, 14, 7 ], - "shade": false, - "faces": { - "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX3", - "from": [ -2, 0, -2 ], - "to": [ -1.999, 13, 14 ], - "rotation": { "origin": [ -2, 0, -2 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 9.5, 0, -2 ], - "to": [ 9.501, 13, 14 ], - "rotation": { "origin": [ 9.5, 0, -2 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 7, 14, 7 ], - "to": [ 1, 12, 1 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } - } - }, - { - "__comment": "Box1", - "from": [ 9, 11, 6 ], - "to": [ 15, 13, 12 ], - "shade": false, - "faces": { - "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 6, 0, 3 ], - "to": [ 6.001, 12, 19 ], - "rotation": { "origin": [ 6, 0, 3 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 17.5, 0, 3 ], - "to": [ 17.501, 12, 19 ], - "rotation": { "origin": [ 17.5, 0, 3 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 15, 13, 12 ], - "to": [ 9, 11, 6 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } - } - }, - { - "__comment": "Box1", - "from": [ 2, 10, 9 ], - "to": [ 8, 12, 15 ], - "shade": false, - "faces": { - "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX3", - "from": [ -1, 0, 6 ], - "to": [ -0.999, 11, 22 ], - "rotation": { "origin": [ -1, 0, 6 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 10.5, 0, 6 ], - "to": [ 10.501, 11, 22 ], - "rotation": { "origin": [ 10.5, 0, 6 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 8, 12, 15 ], - "to": [ 2, 10, 9 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneY16", - "from": [ 0, 0, 9 ], - "to": [ 16, 0.001, 25 ], - "rotation": { "origin": [ 0, 0, 9 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 180 } - } - }, - { - "__comment": "PlaneY16", - "from": [ 0, -0.001, -9 ], - "to": [ 16, 0, 7 ], - "rotation": { "origin": [ 0, 0, 7 ], "axis": "x", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 180 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small" } - } - }, - { - "__comment": "PlaneY18", - "from": [ 9, 0, 0 ], - "to": [ 25, 0.001, 16 ], - "rotation": { "origin": [ 9, 0, 0 ], "axis": "z", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 90 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 90 } - } - }, - { - "__comment": "PlaneY18", - "from": [ -9, -0.001, 0 ], - "to": [ 7, 0, 16 ], - "rotation": { "origin": [ 7, 0, 0 ], "axis": "z", "angle": -22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 270 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 270 } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/umbrella_moss_up", + "texture": "betterend:block/umbrella_moss_up", + "spore": "betterend:block/umbrella_moss_sporophyte", + "small": "betterend:block/umbrella_moss_small" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 3, 13, 3 ], + "to": [ 5, 16, 5 ], + "faces": { + "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, + "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, + "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } + } + }, + { + "__comment": "Box1", + "from": [ 11, 12, 8 ], + "to": [ 13, 15, 10 ], + "faces": { + "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, + "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, + "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } + } + }, + { + "__comment": "Box1", + "from": [ 4, 11, 11 ], + "to": [ 6, 14, 13 ], + "faces": { + "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, + "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, + "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } + } + }, + { + "__comment": "Box1", + "from": [ 1, 12, 1 ], + "to": [ 7, 14, 7 ], + "shade": false, + "faces": { + "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX3", + "from": [ -2, 0, -2 ], + "to": [ -1.999, 13, 14 ], + "rotation": { "origin": [ -2, 0, -2 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 9.5, 0, -2 ], + "to": [ 9.501, 13, 14 ], + "rotation": { "origin": [ 9.5, 0, -2 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 7, 14, 7 ], + "to": [ 1, 12, 1 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } + } + }, + { + "__comment": "Box1", + "from": [ 9, 11, 6 ], + "to": [ 15, 13, 12 ], + "shade": false, + "faces": { + "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 6, 0, 3 ], + "to": [ 6.001, 12, 19 ], + "rotation": { "origin": [ 6, 0, 3 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 17.5, 0, 3 ], + "to": [ 17.501, 12, 19 ], + "rotation": { "origin": [ 17.5, 0, 3 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 15, 13, 12 ], + "to": [ 9, 11, 6 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } + } + }, + { + "__comment": "Box1", + "from": [ 2, 10, 9 ], + "to": [ 8, 12, 15 ], + "shade": false, + "faces": { + "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX3", + "from": [ -1, 0, 6 ], + "to": [ -0.999, 11, 22 ], + "rotation": { "origin": [ -1, 0, 6 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 10.5, 0, 6 ], + "to": [ 10.501, 11, 22 ], + "rotation": { "origin": [ 10.5, 0, 6 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 8, 12, 15 ], + "to": [ 2, 10, 9 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneY16", + "from": [ 0, 0, 9 ], + "to": [ 16, 0.001, 25 ], + "rotation": { "origin": [ 0, 0, 9 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 180 } + } + }, + { + "__comment": "PlaneY16", + "from": [ 0, -0.001, -9 ], + "to": [ 16, 0, 7 ], + "rotation": { "origin": [ 0, 0, 7 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small" } + } + }, + { + "__comment": "PlaneY18", + "from": [ 9, 0, 0 ], + "to": [ 25, 0.001, 16 ], + "rotation": { "origin": [ 9, 0, 0 ], "axis": "z", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 90 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 90 } + } + }, + { + "__comment": "PlaneY18", + "from": [ -9, -0.001, 0 ], + "to": [ 7, 0, 16 ], + "rotation": { "origin": [ 7, 0, 0 ], "axis": "z", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 270 } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/umbrella_moss_small_2.json b/src/main/resources/assets/betterend/models/block/umbrella_moss_small_2.json index 65d40c42..b948e407 100644 --- a/src/main/resources/assets/betterend/models/block/umbrella_moss_small_2.json +++ b/src/main/resources/assets/betterend/models/block/umbrella_moss_small_2.json @@ -1,200 +1,200 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/umbrella_moss_up", - "texture": "betterend:block/umbrella_moss_up", - "spore": "betterend:block/umbrella_moss_sporophyte", - "small": "betterend:block/umbrella_moss_small", - "end": "betterend:block/umbrella_moss_end" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 3, 13, 3 ], - "to": [ 5, 16, 5 ], - "faces": { - "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, - "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, - "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } - } - }, - { - "__comment": "Box1", - "from": [ 4, 11, 11 ], - "to": [ 6, 14, 13 ], - "faces": { - "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, - "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, - "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } - } - }, - { - "__comment": "Box1", - "from": [ 1, 12, 1 ], - "to": [ 7, 14, 7 ], - "shade": false, - "faces": { - "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX3", - "from": [ -2, 0, -2 ], - "to": [ -1.999, 13, 14 ], - "rotation": { "origin": [ -2, 0, -2 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 9.5, 0, -2 ], - "to": [ 9.501, 13, 14 ], - "rotation": { "origin": [ 9.5, 0, -2 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 7, 14, 7 ], - "to": [ 1, 12, 1 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 6, 0, 3 ], - "to": [ 6.001, 13, 19 ], - "rotation": { "origin": [ 6, 0, 3 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 17.5, 0, 3 ], - "to": [ 17.501, 13, 19 ], - "rotation": { "origin": [ 17.5, 0, 3 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "Box1", - "from": [ 2, 10, 9 ], - "to": [ 8, 12, 15 ], - "shade": false, - "faces": { - "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX3", - "from": [ -1, 0, 6 ], - "to": [ -0.999, 11, 22 ], - "rotation": { "origin": [ -1, 0, 6 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 10.5, 0, 6 ], - "to": [ 10.501, 11, 22 ], - "rotation": { "origin": [ 10.5, 0, 6 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 8, 12, 15 ], - "to": [ 2, 10, 9 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneY16", - "from": [ 0, 0, 9 ], - "to": [ 16, 0.001, 25 ], - "rotation": { "origin": [ 0, 0, 9 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 180 } - } - }, - { - "__comment": "PlaneY16", - "from": [ 0, -0.001, -9 ], - "to": [ 16, 0, 7 ], - "rotation": { "origin": [ 0, 0, 7 ], "axis": "x", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 180 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small" } - } - }, - { - "__comment": "PlaneY18", - "from": [ 9, 0, 0 ], - "to": [ 25, 0.001, 16 ], - "rotation": { "origin": [ 9, 0, 0 ], "axis": "z", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 90 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 90 } - } - }, - { - "__comment": "PlaneY18", - "from": [ -9, -0.001, 0 ], - "to": [ 7, 0, 16 ], - "rotation": { "origin": [ 7, 0, 0 ], "axis": "z", "angle": -22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 270 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 270 } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/umbrella_moss_up", + "texture": "betterend:block/umbrella_moss_up", + "spore": "betterend:block/umbrella_moss_sporophyte", + "small": "betterend:block/umbrella_moss_small", + "end": "betterend:block/umbrella_moss_end" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 3, 13, 3 ], + "to": [ 5, 16, 5 ], + "faces": { + "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, + "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, + "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } + } + }, + { + "__comment": "Box1", + "from": [ 4, 11, 11 ], + "to": [ 6, 14, 13 ], + "faces": { + "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, + "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, + "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } + } + }, + { + "__comment": "Box1", + "from": [ 1, 12, 1 ], + "to": [ 7, 14, 7 ], + "shade": false, + "faces": { + "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX3", + "from": [ -2, 0, -2 ], + "to": [ -1.999, 13, 14 ], + "rotation": { "origin": [ -2, 0, -2 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 9.5, 0, -2 ], + "to": [ 9.501, 13, 14 ], + "rotation": { "origin": [ 9.5, 0, -2 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 7, 14, 7 ], + "to": [ 1, 12, 1 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 6, 0, 3 ], + "to": [ 6.001, 13, 19 ], + "rotation": { "origin": [ 6, 0, 3 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 17.5, 0, 3 ], + "to": [ 17.501, 13, 19 ], + "rotation": { "origin": [ 17.5, 0, 3 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "Box1", + "from": [ 2, 10, 9 ], + "to": [ 8, 12, 15 ], + "shade": false, + "faces": { + "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX3", + "from": [ -1, 0, 6 ], + "to": [ -0.999, 11, 22 ], + "rotation": { "origin": [ -1, 0, 6 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 10.5, 0, 6 ], + "to": [ 10.501, 11, 22 ], + "rotation": { "origin": [ 10.5, 0, 6 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 8, 12, 15 ], + "to": [ 2, 10, 9 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneY16", + "from": [ 0, 0, 9 ], + "to": [ 16, 0.001, 25 ], + "rotation": { "origin": [ 0, 0, 9 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 180 } + } + }, + { + "__comment": "PlaneY16", + "from": [ 0, -0.001, -9 ], + "to": [ 16, 0, 7 ], + "rotation": { "origin": [ 0, 0, 7 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small" } + } + }, + { + "__comment": "PlaneY18", + "from": [ 9, 0, 0 ], + "to": [ 25, 0.001, 16 ], + "rotation": { "origin": [ 9, 0, 0 ], "axis": "z", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 90 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 90 } + } + }, + { + "__comment": "PlaneY18", + "from": [ -9, -0.001, 0 ], + "to": [ 7, 0, 16 ], + "rotation": { "origin": [ 7, 0, 0 ], "axis": "z", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 270 } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/umbrella_moss_small_3.json b/src/main/resources/assets/betterend/models/block/umbrella_moss_small_3.json index a4c8e769..43880341 100644 --- a/src/main/resources/assets/betterend/models/block/umbrella_moss_small_3.json +++ b/src/main/resources/assets/betterend/models/block/umbrella_moss_small_3.json @@ -1,161 +1,161 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/umbrella_moss_up", - "texture": "betterend:block/umbrella_moss_up", - "spore": "betterend:block/umbrella_moss_sporophyte", - "small": "betterend:block/umbrella_moss_small", - "end": "betterend:block/umbrella_moss_end" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 4, 11, 11 ], - "to": [ 6, 14, 13 ], - "faces": { - "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, - "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, - "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX3", - "from": [ -2, 0, -2 ], - "to": [ -1.999, 13, 14 ], - "rotation": { "origin": [ -2, 0, -2 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 9.5, 0, -2 ], - "to": [ 9.501, 13, 14 ], - "rotation": { "origin": [ 9.5, 0, -2 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 6, 0, 3 ], - "to": [ 6.001, 13, 19 ], - "rotation": { "origin": [ 6, 0, 3 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 17.5, 0, 3 ], - "to": [ 17.501, 13, 19 ], - "rotation": { "origin": [ 17.5, 0, 3 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "Box1", - "from": [ 2, 10, 9 ], - "to": [ 8, 12, 15 ], - "shade": false, - "faces": { - "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX3", - "from": [ -1, 0, 6 ], - "to": [ -0.999, 11, 22 ], - "rotation": { "origin": [ -1, 0, 6 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 10.5, 0, 6 ], - "to": [ 10.501, 11, 22 ], - "rotation": { "origin": [ 10.5, 0, 6 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 8, 12, 15 ], - "to": [ 2, 10, 9 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneY16", - "from": [ 0, 0, 9 ], - "to": [ 16, 0.001, 25 ], - "rotation": { "origin": [ 0, 0, 9 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 180 } - } - }, - { - "__comment": "PlaneY16", - "from": [ 0, -0.001, -9 ], - "to": [ 16, 0, 7 ], - "rotation": { "origin": [ 0, 0, 7 ], "axis": "x", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 180 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small" } - } - }, - { - "__comment": "PlaneY18", - "from": [ 9, 0, 0 ], - "to": [ 25, 0.001, 16 ], - "rotation": { "origin": [ 9, 0, 0 ], "axis": "z", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 90 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 90 } - } - }, - { - "__comment": "PlaneY18", - "from": [ -9, -0.001, 0 ], - "to": [ 7, 0, 16 ], - "rotation": { "origin": [ 7, 0, 0 ], "axis": "z", "angle": -22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 270 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 270 } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/umbrella_moss_up", + "texture": "betterend:block/umbrella_moss_up", + "spore": "betterend:block/umbrella_moss_sporophyte", + "small": "betterend:block/umbrella_moss_small", + "end": "betterend:block/umbrella_moss_end" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 4, 11, 11 ], + "to": [ 6, 14, 13 ], + "faces": { + "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, + "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, + "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX3", + "from": [ -2, 0, -2 ], + "to": [ -1.999, 13, 14 ], + "rotation": { "origin": [ -2, 0, -2 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 9.5, 0, -2 ], + "to": [ 9.501, 13, 14 ], + "rotation": { "origin": [ 9.5, 0, -2 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 6, 0, 3 ], + "to": [ 6.001, 13, 19 ], + "rotation": { "origin": [ 6, 0, 3 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 17.5, 0, 3 ], + "to": [ 17.501, 13, 19 ], + "rotation": { "origin": [ 17.5, 0, 3 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "Box1", + "from": [ 2, 10, 9 ], + "to": [ 8, 12, 15 ], + "shade": false, + "faces": { + "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX3", + "from": [ -1, 0, 6 ], + "to": [ -0.999, 11, 22 ], + "rotation": { "origin": [ -1, 0, 6 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 10.5, 0, 6 ], + "to": [ 10.501, 11, 22 ], + "rotation": { "origin": [ 10.5, 0, 6 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 8, 12, 15 ], + "to": [ 2, 10, 9 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneY16", + "from": [ 0, 0, 9 ], + "to": [ 16, 0.001, 25 ], + "rotation": { "origin": [ 0, 0, 9 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 180 } + } + }, + { + "__comment": "PlaneY16", + "from": [ 0, -0.001, -9 ], + "to": [ 16, 0, 7 ], + "rotation": { "origin": [ 0, 0, 7 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small" } + } + }, + { + "__comment": "PlaneY18", + "from": [ 9, 0, 0 ], + "to": [ 25, 0.001, 16 ], + "rotation": { "origin": [ 9, 0, 0 ], "axis": "z", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 90 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 90 } + } + }, + { + "__comment": "PlaneY18", + "from": [ -9, -0.001, 0 ], + "to": [ 7, 0, 16 ], + "rotation": { "origin": [ 7, 0, 0 ], "axis": "z", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 270 } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/umbrella_moss_small_4.json b/src/main/resources/assets/betterend/models/block/umbrella_moss_small_4.json index ea65959d..c9b15940 100644 --- a/src/main/resources/assets/betterend/models/block/umbrella_moss_small_4.json +++ b/src/main/resources/assets/betterend/models/block/umbrella_moss_small_4.json @@ -1,122 +1,122 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/umbrella_moss_up", - "texture": "betterend:block/umbrella_moss_up", - "spore": "betterend:block/umbrella_moss_sporophyte", - "small": "betterend:block/umbrella_moss_small", - "end": "betterend:block/umbrella_moss_end" - }, - "elements": [ - { - "__comment": "PlaneX3", - "from": [ -2, 0, -2 ], - "to": [ -1.999, 13, 14 ], - "rotation": { "origin": [ -2, 0, -2 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 9.5, 0, -2 ], - "to": [ 9.501, 13, 14 ], - "rotation": { "origin": [ 9.5, 0, -2 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 6, 0, 3 ], - "to": [ 6.001, 13, 19 ], - "rotation": { "origin": [ 6, 0, 3 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 17.5, 0, 3 ], - "to": [ 17.501, 13, 19 ], - "rotation": { "origin": [ 17.5, 0, 3 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "PlaneX3", - "from": [ -1, 0, 6 ], - "to": [ -0.999, 11, 22 ], - "rotation": { "origin": [ -1, 0, 6 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 10.5, 0, 6 ], - "to": [ 10.501, 11, 22 ], - "rotation": { "origin": [ 10.5, 0, 6 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "PlaneY16", - "from": [ 0, 0, 9 ], - "to": [ 16, 0.001, 25 ], - "rotation": { "origin": [ 0, 0, 9 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 180 } - } - }, - { - "__comment": "PlaneY16", - "from": [ 0, -0.001, -9 ], - "to": [ 16, 0, 7 ], - "rotation": { "origin": [ 0, 0, 7 ], "axis": "x", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 180 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small" } - } - }, - { - "__comment": "PlaneY18", - "from": [ 9, 0, 0 ], - "to": [ 25, 0.001, 16 ], - "rotation": { "origin": [ 9, 0, 0 ], "axis": "z", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 90 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 90 } - } - }, - { - "__comment": "PlaneY18", - "from": [ -9, -0.001, 0 ], - "to": [ 7, 0, 16 ], - "rotation": { "origin": [ 7, 0, 0 ], "axis": "z", "angle": -22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 270 }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 270 } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/umbrella_moss_up", + "texture": "betterend:block/umbrella_moss_up", + "spore": "betterend:block/umbrella_moss_sporophyte", + "small": "betterend:block/umbrella_moss_small", + "end": "betterend:block/umbrella_moss_end" + }, + "elements": [ + { + "__comment": "PlaneX3", + "from": [ -2, 0, -2 ], + "to": [ -1.999, 13, 14 ], + "rotation": { "origin": [ -2, 0, -2 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 9.5, 0, -2 ], + "to": [ 9.501, 13, 14 ], + "rotation": { "origin": [ 9.5, 0, -2 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 6, 0, 3 ], + "to": [ 6.001, 13, 19 ], + "rotation": { "origin": [ 6, 0, 3 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 17.5, 0, 3 ], + "to": [ 17.501, 13, 19 ], + "rotation": { "origin": [ 17.5, 0, 3 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "PlaneX3", + "from": [ -1, 0, 6 ], + "to": [ -0.999, 11, 22 ], + "rotation": { "origin": [ -1, 0, 6 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 10.5, 0, 6 ], + "to": [ 10.501, 11, 22 ], + "rotation": { "origin": [ 10.5, 0, 6 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "PlaneY16", + "from": [ 0, 0, 9 ], + "to": [ 16, 0.001, 25 ], + "rotation": { "origin": [ 0, 0, 9 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 180 } + } + }, + { + "__comment": "PlaneY16", + "from": [ 0, -0.001, -9 ], + "to": [ 16, 0, 7 ], + "rotation": { "origin": [ 0, 0, 7 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 180 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small" } + } + }, + { + "__comment": "PlaneY18", + "from": [ 9, 0, 0 ], + "to": [ 25, 0.001, 16 ], + "rotation": { "origin": [ 9, 0, 0 ], "axis": "z", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 90 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 90 } + } + }, + { + "__comment": "PlaneY18", + "from": [ -9, -0.001, 0 ], + "to": [ 7, 0, 16 ], + "rotation": { "origin": [ 7, 0, 0 ], "axis": "z", "angle": -22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 270 }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#small", "rotation": 270 } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/umbrella_moss_top.json b/src/main/resources/assets/betterend/models/block/umbrella_moss_top.json index 85c9ac76..c2435451 100644 --- a/src/main/resources/assets/betterend/models/block/umbrella_moss_top.json +++ b/src/main/resources/assets/betterend/models/block/umbrella_moss_top.json @@ -1,193 +1,193 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/umbrella_moss_up", - "texture": "betterend:block/umbrella_moss_up", - "spore": "betterend:block/umbrella_moss_sporophyte" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 3, 13, 3 ], - "to": [ 5, 16, 5 ], - "faces": { - "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, - "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, - "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } - } - }, - { - "__comment": "Box1", - "from": [ 11, 12, 8 ], - "to": [ 13, 15, 10 ], - "faces": { - "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, - "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, - "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } - } - }, - { - "__comment": "Box1", - "from": [ 4, 11, 11 ], - "to": [ 6, 14, 13 ], - "faces": { - "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, - "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, - "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } - } - }, - { - "__comment": "Box1", - "from": [ 1, 12, 1 ], - "to": [ 7, 14, 7 ], - "shade": false, - "faces": { - "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX3", - "from": [ -2, 0, -2 ], - "to": [ -1.999, 13, 14 ], - "rotation": { "origin": [ -2, 0, -2 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 9.5, 0, -2 ], - "to": [ 9.501, 13, 14 ], - "rotation": { "origin": [ 9.5, 0, -2 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 7, 14, 7 ], - "to": [ 1, 12, 1 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } - } - }, - { - "__comment": "Box1", - "from": [ 9, 11, 6 ], - "to": [ 15, 13, 12 ], - "shade": false, - "faces": { - "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 6, 0, 3 ], - "to": [ 6.001, 12, 19 ], - "rotation": { "origin": [ 6, 0, 3 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 17.5, 0, 3 ], - "to": [ 17.501, 12, 19 ], - "rotation": { "origin": [ 17.5, 0, 3 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 15, 13, 12 ], - "to": [ 9, 11, 6 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } - } - }, - { - "__comment": "Box1", - "from": [ 2, 10, 9 ], - "to": [ 8, 12, 15 ], - "shade": false, - "faces": { - "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX3", - "from": [ -1, 0, 6 ], - "to": [ -0.999, 11, 22 ], - "rotation": { "origin": [ -1, 0, 6 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 10.5, 0, 6 ], - "to": [ 10.501, 11, 22 ], - "rotation": { "origin": [ 10.5, 0, 6 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 8, 12, 15 ], - "to": [ 2, 10, 9 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/umbrella_moss_up", + "texture": "betterend:block/umbrella_moss_up", + "spore": "betterend:block/umbrella_moss_sporophyte" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 3, 13, 3 ], + "to": [ 5, 16, 5 ], + "faces": { + "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, + "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, + "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } + } + }, + { + "__comment": "Box1", + "from": [ 11, 12, 8 ], + "to": [ 13, 15, 10 ], + "faces": { + "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, + "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, + "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } + } + }, + { + "__comment": "Box1", + "from": [ 4, 11, 11 ], + "to": [ 6, 14, 13 ], + "faces": { + "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, + "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, + "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } + } + }, + { + "__comment": "Box1", + "from": [ 1, 12, 1 ], + "to": [ 7, 14, 7 ], + "shade": false, + "faces": { + "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX3", + "from": [ -2, 0, -2 ], + "to": [ -1.999, 13, 14 ], + "rotation": { "origin": [ -2, 0, -2 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 9.5, 0, -2 ], + "to": [ 9.501, 13, 14 ], + "rotation": { "origin": [ 9.5, 0, -2 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 7, 14, 7 ], + "to": [ 1, 12, 1 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } + } + }, + { + "__comment": "Box1", + "from": [ 9, 11, 6 ], + "to": [ 15, 13, 12 ], + "shade": false, + "faces": { + "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 6, 0, 3 ], + "to": [ 6.001, 12, 19 ], + "rotation": { "origin": [ 6, 0, 3 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 17.5, 0, 3 ], + "to": [ 17.501, 12, 19 ], + "rotation": { "origin": [ 17.5, 0, 3 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 4, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 15, 13, 12 ], + "to": [ 9, 11, 6 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } + } + }, + { + "__comment": "Box1", + "from": [ 2, 10, 9 ], + "to": [ 8, 12, 15 ], + "shade": false, + "faces": { + "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX3", + "from": [ -1, 0, 6 ], + "to": [ -0.999, 11, 22 ], + "rotation": { "origin": [ -1, 0, 6 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 10.5, 0, 6 ], + "to": [ 10.501, 11, 22 ], + "rotation": { "origin": [ 10.5, 0, 6 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 8, 12, 15 ], + "to": [ 2, 10, 9 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/umbrella_moss_top_2.json b/src/main/resources/assets/betterend/models/block/umbrella_moss_top_2.json index 55e1ac20..a781559a 100644 --- a/src/main/resources/assets/betterend/models/block/umbrella_moss_top_2.json +++ b/src/main/resources/assets/betterend/models/block/umbrella_moss_top_2.json @@ -1,155 +1,155 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/umbrella_moss_up", - "texture": "betterend:block/umbrella_moss_up", - "spore": "betterend:block/umbrella_moss_sporophyte", - "end": "betterend:block/umbrella_moss_end" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 3, 13, 3 ], - "to": [ 5, 16, 5 ], - "faces": { - "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, - "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, - "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } - } - }, - { - "__comment": "Box1", - "from": [ 4, 11, 11 ], - "to": [ 6, 14, 13 ], - "faces": { - "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, - "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, - "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } - } - }, - { - "__comment": "Box1", - "from": [ 1, 12, 1 ], - "to": [ 7, 14, 7 ], - "shade": false, - "faces": { - "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX3", - "from": [ -2, 0, -2 ], - "to": [ -1.999, 13, 14 ], - "rotation": { "origin": [ -2, 0, -2 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 9.5, 0, -2 ], - "to": [ 9.501, 13, 14 ], - "rotation": { "origin": [ 9.5, 0, -2 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 7, 14, 7 ], - "to": [ 1, 12, 1 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 6, 0, 3 ], - "to": [ 6.001, 13, 19 ], - "rotation": { "origin": [ 6, 0, 3 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 4, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 4, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 17.5, 0, 3 ], - "to": [ 17.501, 13, 19 ], - "rotation": { "origin": [ 17.5, 0, 3 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "Box1", - "from": [ 2, 10, 9 ], - "to": [ 8, 12, 15 ], - "shade": false, - "faces": { - "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX3", - "from": [ -1, 0, 6 ], - "to": [ -0.999, 11, 22 ], - "rotation": { "origin": [ -1, 0, 6 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 10.5, 0, 6 ], - "to": [ 10.501, 11, 22 ], - "rotation": { "origin": [ 10.5, 0, 6 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 8, 12, 15 ], - "to": [ 2, 10, 9 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/umbrella_moss_up", + "texture": "betterend:block/umbrella_moss_up", + "spore": "betterend:block/umbrella_moss_sporophyte", + "end": "betterend:block/umbrella_moss_end" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 3, 13, 3 ], + "to": [ 5, 16, 5 ], + "faces": { + "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, + "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, + "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } + } + }, + { + "__comment": "Box1", + "from": [ 4, 11, 11 ], + "to": [ 6, 14, 13 ], + "faces": { + "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, + "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, + "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } + } + }, + { + "__comment": "Box1", + "from": [ 1, 12, 1 ], + "to": [ 7, 14, 7 ], + "shade": false, + "faces": { + "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX3", + "from": [ -2, 0, -2 ], + "to": [ -1.999, 13, 14 ], + "rotation": { "origin": [ -2, 0, -2 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 9.5, 0, -2 ], + "to": [ 9.501, 13, 14 ], + "rotation": { "origin": [ 9.5, 0, -2 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 7, 14, 7 ], + "to": [ 1, 12, 1 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 6, 0, 3 ], + "to": [ 6.001, 13, 19 ], + "rotation": { "origin": [ 6, 0, 3 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 4, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 4, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 17.5, 0, 3 ], + "to": [ 17.501, 13, 19 ], + "rotation": { "origin": [ 17.5, 0, 3 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "Box1", + "from": [ 2, 10, 9 ], + "to": [ 8, 12, 15 ], + "shade": false, + "faces": { + "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX3", + "from": [ -1, 0, 6 ], + "to": [ -0.999, 11, 22 ], + "rotation": { "origin": [ -1, 0, 6 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 10.5, 0, 6 ], + "to": [ 10.501, 11, 22 ], + "rotation": { "origin": [ 10.5, 0, 6 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 8, 12, 15 ], + "to": [ 2, 10, 9 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/umbrella_moss_top_3.json b/src/main/resources/assets/betterend/models/block/umbrella_moss_top_3.json index 10f65f6e..39a4c399 100644 --- a/src/main/resources/assets/betterend/models/block/umbrella_moss_top_3.json +++ b/src/main/resources/assets/betterend/models/block/umbrella_moss_top_3.json @@ -1,116 +1,116 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "betterend:block/umbrella_moss_up", - "texture": "betterend:block/umbrella_moss_up", - "spore": "betterend:block/umbrella_moss_sporophyte", - "end": "betterend:block/umbrella_moss_end" - }, - "elements": [ - { - "__comment": "Box1", - "from": [ 3, 13, 3 ], - "to": [ 5, 16, 5 ], - "faces": { - "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, - "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, - "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, - "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } - } - }, - { - "__comment": "Box1", - "from": [ 1, 12, 1 ], - "to": [ 7, 14, 7 ], - "shade": false, - "faces": { - "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, - "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX3", - "from": [ -2, 0, -2 ], - "to": [ -1.999, 13, 14 ], - "rotation": { "origin": [ -2, 0, -2 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 9.5, 0, -2 ], - "to": [ 9.501, 13, 14 ], - "rotation": { "origin": [ 9.5, 0, -2 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } - } - }, - { - "__comment": "Box1", - "from": [ 7, 14, 7 ], - "to": [ 1, 12, 1 ], - "shade": false, - "faces": { - "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, - "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, - "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 6, 0, 3 ], - "to": [ 6.001, 13, 19 ], - "rotation": { "origin": [ 6, 0, 3 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 4, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 4, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 17.5, 0, 3 ], - "to": [ 17.501, 13, 19 ], - "rotation": { "origin": [ 17.5, 0, 3 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "PlaneX3", - "from": [ -1, 0, 6 ], - "to": [ -0.999, 11, 22 ], - "rotation": { "origin": [ -1, 0, 6 ], "axis": "y", "angle": 45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#end" } - } - }, - { - "__comment": "PlaneX3", - "from": [ 10.5, 0, 6 ], - "to": [ 10.501, 11, 22 ], - "rotation": { "origin": [ 10.5, 0, 6 ], "axis": "y", "angle": -45 }, - "shade": false, - "faces": { - "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#end" }, - "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#end" } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "betterend:block/umbrella_moss_up", + "texture": "betterend:block/umbrella_moss_up", + "spore": "betterend:block/umbrella_moss_sporophyte", + "end": "betterend:block/umbrella_moss_end" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 3, 13, 3 ], + "to": [ 5, 16, 5 ], + "faces": { + "down": { "uv": [ 7, 5, 9, 7 ], "texture": "#spore" }, + "up": { "uv": [ 7, 0, 9, 2 ], "texture": "#spore" }, + "north": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "south": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "west": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" }, + "east": { "uv": [ 7, 2, 9, 5 ], "texture": "#spore" } + } + }, + { + "__comment": "Box1", + "from": [ 1, 12, 1 ], + "to": [ 7, 14, 7 ], + "shade": false, + "faces": { + "up": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "south": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "west": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" }, + "east": { "uv": [ 0, 6, 6, 8 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX3", + "from": [ -2, 0, -2 ], + "to": [ -1.999, 13, 14 ], + "rotation": { "origin": [ -2, 0, -2 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 9.5, 0, -2 ], + "to": [ 9.501, 13, 14 ], + "rotation": { "origin": [ 9.5, 0, -2 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 7, 14, 7 ], + "to": [ 1, 12, 1 ], + "shade": false, + "faces": { + "down": { "uv": [ 0, 0, 6, 6 ], "texture": "#spore" }, + "north": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "south": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "west": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" }, + "east": { "uv": [ 6, 8, 0, 6 ], "texture": "#spore" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 6, 0, 3 ], + "to": [ 6.001, 13, 19 ], + "rotation": { "origin": [ 6, 0, 3 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 4, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 4, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 17.5, 0, 3 ], + "to": [ 17.501, 13, 19 ], + "rotation": { "origin": [ 17.5, 0, 3 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 3, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "PlaneX3", + "from": [ -1, 0, 6 ], + "to": [ -0.999, 11, 22 ], + "rotation": { "origin": [ -1, 0, 6 ], "axis": "y", "angle": 45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#end" } + } + }, + { + "__comment": "PlaneX3", + "from": [ 10.5, 0, 6 ], + "to": [ 10.501, 11, 22 ], + "rotation": { "origin": [ 10.5, 0, 6 ], "axis": "y", "angle": -45 }, + "shade": false, + "faces": { + "west": { "uv": [ 0, 5, 16, 16 ], "texture": "#end" }, + "east": { "uv": [ 0, 5, 16, 16 ], "texture": "#end" } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/violecite.json b/src/main/resources/assets/betterend/models/block/violecite.json index 12104029..1ba3d23e 100644 --- a/src/main/resources/assets/betterend/models/block/violecite.json +++ b/src/main/resources/assets/betterend/models/block/violecite.json @@ -1,6 +1,6 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "betterend:block/violecite" - } -} +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/violecite" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_bricks.json b/src/main/resources/assets/betterend/models/block/violecite_bricks.json index 46b36cbc..a62dc365 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_bricks.json +++ b/src/main/resources/assets/betterend/models/block/violecite_bricks.json @@ -1,6 +1,6 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "betterend:block/violecite_bricks" - } -} +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/violecite_bricks" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_bricks_half_slab.json b/src/main/resources/assets/betterend/models/block/violecite_bricks_half_slab.json index 6d52e930..05899619 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_bricks_half_slab.json +++ b/src/main/resources/assets/betterend/models/block/violecite_bricks_half_slab.json @@ -1,8 +1,8 @@ -{ - "parent": "block/slab", - "textures": { - "bottom": "betterend:block/violecite_bricks", - "side": "betterend:block/violecite_bricks", - "top": "betterend:block/violecite_bricks" - } -} +{ + "parent": "block/slab", + "textures": { + "bottom": "betterend:block/violecite_bricks", + "side": "betterend:block/violecite_bricks", + "top": "betterend:block/violecite_bricks" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_bricks_inner_stairs.json b/src/main/resources/assets/betterend/models/block/violecite_bricks_inner_stairs.json index 312f60e7..09caacad 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_bricks_inner_stairs.json +++ b/src/main/resources/assets/betterend/models/block/violecite_bricks_inner_stairs.json @@ -1,8 +1,8 @@ -{ - "parent": "block/inner_stairs", - "textures": { - "bottom": "betterend:block/violecite_bricks", - "side": "betterend:block/violecite_bricks", - "top": "betterend:block/violecite_bricks" - } -} +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "betterend:block/violecite_bricks", + "side": "betterend:block/violecite_bricks", + "top": "betterend:block/violecite_bricks" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_bricks_outer_stairs.json b/src/main/resources/assets/betterend/models/block/violecite_bricks_outer_stairs.json index d9f36449..02928f43 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_bricks_outer_stairs.json +++ b/src/main/resources/assets/betterend/models/block/violecite_bricks_outer_stairs.json @@ -1,8 +1,8 @@ -{ - "parent": "block/outer_stairs", - "textures": { - "bottom": "betterend:block/violecite_bricks", - "side": "betterend:block/violecite_bricks", - "top": "betterend:block/violecite_bricks" - } -} +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "betterend:block/violecite_bricks", + "side": "betterend:block/violecite_bricks", + "top": "betterend:block/violecite_bricks" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_bricks_stairs.json b/src/main/resources/assets/betterend/models/block/violecite_bricks_stairs.json index 60bf8b2a..38aa1ad7 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_bricks_stairs.json +++ b/src/main/resources/assets/betterend/models/block/violecite_bricks_stairs.json @@ -1,8 +1,8 @@ -{ - "parent": "block/stairs", - "textures": { - "bottom": "betterend:block/violecite_bricks", - "side": "betterend:block/violecite_bricks", - "top": "betterend:block/violecite_bricks" - } -} +{ + "parent": "block/stairs", + "textures": { + "bottom": "betterend:block/violecite_bricks", + "side": "betterend:block/violecite_bricks", + "top": "betterend:block/violecite_bricks" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_bricks_wall_inventory.json b/src/main/resources/assets/betterend/models/block/violecite_bricks_wall_inventory.json index 8955de3f..8f597f59 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_bricks_wall_inventory.json +++ b/src/main/resources/assets/betterend/models/block/violecite_bricks_wall_inventory.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "betterend:block/violecite_bricks" - } -} +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "betterend:block/violecite_bricks" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_bricks_wall_post.json b/src/main/resources/assets/betterend/models/block/violecite_bricks_wall_post.json index 87799b7b..31041706 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_bricks_wall_post.json +++ b/src/main/resources/assets/betterend/models/block/violecite_bricks_wall_post.json @@ -1,22 +1,22 @@ -{ - "parent": "block/block", - "textures": { - "side": "betterend:block/violecite_post_side", - "top": "betterend:block/violecite_post_top", - "particle": "#side" - }, - "elements": [ - { - "from": [ 4, 0, 4 ], - "to": [ 12, 16, 12 ], - "faces": { - "down": { "uv": [ 4, 4, 12, 12 ], "texture": "#top", "cullface": "down" }, - "up": { "uv": [ 4, 4, 12, 12 ], "texture": "#top", "cullface": "up" }, - "north": { "uv": [ 4, 0, 12, 16 ], "texture": "#side" }, - "south": { "uv": [ 4, 0, 12, 16 ], "texture": "#side" }, - "west": { "uv": [ 4, 0, 12, 16 ], "texture": "#side" }, - "east": { "uv": [ 4, 0, 12, 16 ], "texture": "#side" } - } - } - ] -} +{ + "parent": "block/block", + "textures": { + "side": "betterend:block/violecite_post_side", + "top": "betterend:block/violecite_post_top", + "particle": "#side" + }, + "elements": [ + { + "from": [ 4, 0, 4 ], + "to": [ 12, 16, 12 ], + "faces": { + "down": { "uv": [ 4, 4, 12, 12 ], "texture": "#top", "cullface": "down" }, + "up": { "uv": [ 4, 4, 12, 12 ], "texture": "#top", "cullface": "up" }, + "north": { "uv": [ 4, 0, 12, 16 ], "texture": "#side" }, + "south": { "uv": [ 4, 0, 12, 16 ], "texture": "#side" }, + "west": { "uv": [ 4, 0, 12, 16 ], "texture": "#side" }, + "east": { "uv": [ 4, 0, 12, 16 ], "texture": "#side" } + } + } + ] +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_bricks_wall_side.json b/src/main/resources/assets/betterend/models/block/violecite_bricks_wall_side.json index 1ac148cb..4e6e95cc 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_bricks_wall_side.json +++ b/src/main/resources/assets/betterend/models/block/violecite_bricks_wall_side.json @@ -1,20 +1,20 @@ -{ - "textures": { - "wall": "betterend:block/violecite_bricks", - "top": "betterend:block/violecite_bricks_wall_top", - "particle": "#wall" - }, - "elements": [ - { - "from": [ 5, 0, 0 ], - "to": [ 11, 14, 8 ], - "faces": { - "down": { "texture": "#top", "cullface": "down" }, - "up": { "texture": "#top" }, - "north": { "texture": "#wall", "cullface": "north" }, - "west": { "texture": "#wall" }, - "east": { "texture": "#wall" } - } - } - ] -} +{ + "textures": { + "wall": "betterend:block/violecite_bricks", + "top": "betterend:block/violecite_bricks_wall_top", + "particle": "#wall" + }, + "elements": [ + { + "from": [ 5, 0, 0 ], + "to": [ 11, 14, 8 ], + "faces": { + "down": { "texture": "#top", "cullface": "down" }, + "up": { "texture": "#top" }, + "north": { "texture": "#wall", "cullface": "north" }, + "west": { "texture": "#wall" }, + "east": { "texture": "#wall" } + } + } + ] +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_bricks_wall_side_tall.json b/src/main/resources/assets/betterend/models/block/violecite_bricks_wall_side_tall.json index df0eb919..42701ed1 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_bricks_wall_side_tall.json +++ b/src/main/resources/assets/betterend/models/block/violecite_bricks_wall_side_tall.json @@ -1,20 +1,20 @@ -{ - "textures": { - "wall": "betterend:block/violecite_bricks", - "top": "betterend:block/violecite_bricks_wall_top", - "particle": "#wall" - }, - "elements": [ - { - "from": [ 5, 0, 0 ], - "to": [ 11, 16, 8 ], - "faces": { - "down": { "texture": "#top", "cullface": "down" }, - "up": { "texture": "#top", "cullface": "up"}, - "north": { "texture": "#wall", "cullface": "north" }, - "west": { "texture": "#wall" }, - "east": { "texture": "#wall" } - } - } - ] -} +{ + "textures": { + "wall": "betterend:block/violecite_bricks", + "top": "betterend:block/violecite_bricks_wall_top", + "particle": "#wall" + }, + "elements": [ + { + "from": [ 5, 0, 0 ], + "to": [ 11, 16, 8 ], + "faces": { + "down": { "texture": "#top", "cullface": "down" }, + "up": { "texture": "#top", "cullface": "up"}, + "north": { "texture": "#wall", "cullface": "north" }, + "west": { "texture": "#wall" }, + "east": { "texture": "#wall" } + } + } + ] +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_button.json b/src/main/resources/assets/betterend/models/block/violecite_button.json index 9b23ba46..5af846c9 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_button.json +++ b/src/main/resources/assets/betterend/models/block/violecite_button.json @@ -1,6 +1,6 @@ -{ - "parent": "block/button", - "textures": { - "texture": "betterend:block/violecite" - } -} +{ + "parent": "block/button", + "textures": { + "texture": "betterend:block/violecite" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_button_inventory.json b/src/main/resources/assets/betterend/models/block/violecite_button_inventory.json index 2e15a716..34e2c997 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_button_inventory.json +++ b/src/main/resources/assets/betterend/models/block/violecite_button_inventory.json @@ -1,6 +1,6 @@ -{ - "parent": "block/button_inventory", - "textures": { - "texture": "betterend:block/violecite" - } -} +{ + "parent": "block/button_inventory", + "textures": { + "texture": "betterend:block/violecite" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_button_pressed.json b/src/main/resources/assets/betterend/models/block/violecite_button_pressed.json index cec115fc..2c5dc88a 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_button_pressed.json +++ b/src/main/resources/assets/betterend/models/block/violecite_button_pressed.json @@ -1,6 +1,6 @@ -{ - "parent": "block/button_pressed", - "textures": { - "texture": "betterend:block/violecite" - } -} +{ + "parent": "block/button_pressed", + "textures": { + "texture": "betterend:block/violecite" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_half_slab.json b/src/main/resources/assets/betterend/models/block/violecite_half_slab.json index 55194684..ed487bae 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_half_slab.json +++ b/src/main/resources/assets/betterend/models/block/violecite_half_slab.json @@ -1,8 +1,8 @@ -{ - "parent": "block/slab", - "textures": { - "bottom": "betterend:block/violecite", - "side": "betterend:block/violecite", - "top": "betterend:block/violecite" - } -} +{ + "parent": "block/slab", + "textures": { + "bottom": "betterend:block/violecite", + "side": "betterend:block/violecite", + "top": "betterend:block/violecite" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_inner_stairs.json b/src/main/resources/assets/betterend/models/block/violecite_inner_stairs.json index 745d44b9..199e7654 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_inner_stairs.json +++ b/src/main/resources/assets/betterend/models/block/violecite_inner_stairs.json @@ -1,8 +1,8 @@ -{ - "parent": "block/inner_stairs", - "textures": { - "bottom": "betterend:block/violecite", - "side": "betterend:block/violecite", - "top": "betterend:block/violecite" - } -} +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "betterend:block/violecite", + "side": "betterend:block/violecite", + "top": "betterend:block/violecite" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_outer_stairs.json b/src/main/resources/assets/betterend/models/block/violecite_outer_stairs.json index 67d0261c..d6ba85b4 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_outer_stairs.json +++ b/src/main/resources/assets/betterend/models/block/violecite_outer_stairs.json @@ -1,8 +1,8 @@ -{ - "parent": "block/outer_stairs", - "textures": { - "bottom": "betterend:block/violecite", - "side": "betterend:block/violecite", - "top": "betterend:block/violecite" - } -} +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "betterend:block/violecite", + "side": "betterend:block/violecite", + "top": "betterend:block/violecite" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_pillar.json b/src/main/resources/assets/betterend/models/block/violecite_pillar.json index 3b14644a..f5e4b854 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_pillar.json +++ b/src/main/resources/assets/betterend/models/block/violecite_pillar.json @@ -1,7 +1,7 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "end": "betterend:block/violecite_pillar_top", - "side": "betterend:block/violecite_pillar_side" - } -} +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "betterend:block/violecite_pillar_top", + "side": "betterend:block/violecite_pillar_side" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_pressure_plate_down.json b/src/main/resources/assets/betterend/models/block/violecite_pressure_plate_down.json index e08999fd..36b648a7 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_pressure_plate_down.json +++ b/src/main/resources/assets/betterend/models/block/violecite_pressure_plate_down.json @@ -1,6 +1,6 @@ -{ - "parent": "block/pressure_plate_down", - "textures": { - "texture": "betterend:block/violecite" - } -} +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "betterend:block/violecite" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_pressure_plate_up.json b/src/main/resources/assets/betterend/models/block/violecite_pressure_plate_up.json index 54f744d6..7b85fef6 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_pressure_plate_up.json +++ b/src/main/resources/assets/betterend/models/block/violecite_pressure_plate_up.json @@ -1,6 +1,6 @@ -{ - "parent": "block/pressure_plate_up", - "textures": { - "texture": "betterend:block/violecite" - } -} +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "betterend:block/violecite" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_small_tiles.json b/src/main/resources/assets/betterend/models/block/violecite_small_tiles.json index 023bd3e8..a92dc366 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_small_tiles.json +++ b/src/main/resources/assets/betterend/models/block/violecite_small_tiles.json @@ -1,6 +1,6 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "betterend:block/violecite_small_tiles" - } -} +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/violecite_small_tiles" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_stairs.json b/src/main/resources/assets/betterend/models/block/violecite_stairs.json index b48445aa..da47eb95 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_stairs.json +++ b/src/main/resources/assets/betterend/models/block/violecite_stairs.json @@ -1,8 +1,8 @@ -{ - "parent": "block/stairs", - "textures": { - "bottom": "betterend:block/violecite", - "side": "betterend:block/violecite", - "top": "betterend:block/violecite" - } -} +{ + "parent": "block/stairs", + "textures": { + "bottom": "betterend:block/violecite", + "side": "betterend:block/violecite", + "top": "betterend:block/violecite" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_tile.json b/src/main/resources/assets/betterend/models/block/violecite_tile.json index 5b235309..148ec8d8 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_tile.json +++ b/src/main/resources/assets/betterend/models/block/violecite_tile.json @@ -1,6 +1,6 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "betterend:block/violecite_tile" - } -} +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/violecite_tile" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_wall_inventory.json b/src/main/resources/assets/betterend/models/block/violecite_wall_inventory.json index 479a780d..94cd6db8 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_wall_inventory.json +++ b/src/main/resources/assets/betterend/models/block/violecite_wall_inventory.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "betterend:block/violecite" - } -} +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "betterend:block/violecite" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_wall_post.json b/src/main/resources/assets/betterend/models/block/violecite_wall_post.json index ec0c961c..2f1ba471 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_wall_post.json +++ b/src/main/resources/assets/betterend/models/block/violecite_wall_post.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "betterend:block/violecite" - } -} +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "betterend:block/violecite" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_wall_side.json b/src/main/resources/assets/betterend/models/block/violecite_wall_side.json index 9ec704d3..60a7b1f9 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_wall_side.json +++ b/src/main/resources/assets/betterend/models/block/violecite_wall_side.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "betterend:block/violecite" - } -} +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "betterend:block/violecite" + } +} diff --git a/src/main/resources/assets/betterend/models/block/violecite_wall_side_tall.json b/src/main/resources/assets/betterend/models/block/violecite_wall_side_tall.json index 4054b5fc..19069a9c 100644 --- a/src/main/resources/assets/betterend/models/block/violecite_wall_side_tall.json +++ b/src/main/resources/assets/betterend/models/block/violecite_wall_side_tall.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "betterend:block/violecite" - } -} +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "betterend:block/violecite" + } +} diff --git a/src/main/resources/assets/betterend/models/block/wall_moss_01.json b/src/main/resources/assets/betterend/models/block/wall_moss_01.json index 7e918bb7..71a1e865 100644 --- a/src/main/resources/assets/betterend/models/block/wall_moss_01.json +++ b/src/main/resources/assets/betterend/models/block/wall_moss_01.json @@ -1,96 +1,96 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "#texture" - }, - "elements": [ - { - "__comment": "PlaneY1", - "from": [ 3, 15, 0 ], - "to": [ 19, 15.001, 16 ], - "rotation": { "origin": [ 3, 15, 0 ], "axis": "x", "angle": 45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ 1, 11, 0 ], - "to": [ 17, 11.001, 16 ], - "rotation": { "origin": [ 1, 11, 0 ], "axis": "x", "angle": 45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ 1, -10, 0 ], - "to": [ 17, 6, 0.001 ], - "rotation": { "origin": [ 1, 6, 0 ], "axis": "x", "angle": -45 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ -3, 13.5, 0 ], - "to": [ 13, 13.501, 16 ], - "rotation": { "origin": [ -3, 13.5, 0 ], "axis": "x", "angle": 45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ 1, 1, 0 ], - "to": [ 17, 1.001, 16 ], - "rotation": { "origin": [ 1, 1, 0 ], "axis": "x", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ -1, -9, 0 ], - "to": [ 15, 7, 0.001 ], - "rotation": { "origin": [ -1, 7, 0 ], "axis": "x", "angle": -45 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ -1.5, 16, 0 ], - "to": [ 14.5, 16.001, 16 ], - "rotation": { "origin": [ -1.5, 16, 0 ], "axis": "x", "angle": 45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ -2, 0.5, 0 ], - "to": [ 14, 0.501, 16 ], - "rotation": { "origin": [ -2, 0.5, 0 ], "axis": "x", "angle": 22.5 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "#texture" + }, + "elements": [ + { + "__comment": "PlaneY1", + "from": [ 3, 15, 0 ], + "to": [ 19, 15.001, 16 ], + "rotation": { "origin": [ 3, 15, 0 ], "axis": "x", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 1, 11, 0 ], + "to": [ 17, 11.001, 16 ], + "rotation": { "origin": [ 1, 11, 0 ], "axis": "x", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 1, -10, 0 ], + "to": [ 17, 6, 0.001 ], + "rotation": { "origin": [ 1, 6, 0 ], "axis": "x", "angle": -45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ -3, 13.5, 0 ], + "to": [ 13, 13.501, 16 ], + "rotation": { "origin": [ -3, 13.5, 0 ], "axis": "x", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 1, 1, 0 ], + "to": [ 17, 1.001, 16 ], + "rotation": { "origin": [ 1, 1, 0 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ -1, -9, 0 ], + "to": [ 15, 7, 0.001 ], + "rotation": { "origin": [ -1, 7, 0 ], "axis": "x", "angle": -45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ -1.5, 16, 0 ], + "to": [ 14.5, 16.001, 16 ], + "rotation": { "origin": [ -1.5, 16, 0 ], "axis": "x", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ -2, 0.5, 0 ], + "to": [ 14, 0.501, 16 ], + "rotation": { "origin": [ -2, 0.5, 0 ], "axis": "x", "angle": 22.5 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/wall_moss_02.json b/src/main/resources/assets/betterend/models/block/wall_moss_02.json index fbc6976f..bbac756c 100644 --- a/src/main/resources/assets/betterend/models/block/wall_moss_02.json +++ b/src/main/resources/assets/betterend/models/block/wall_moss_02.json @@ -1,63 +1,63 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "#texture" - }, - "elements": [ - { - "__comment": "PlaneY1", - "from": [ 3, 15, 0 ], - "to": [ 19, 15.001, 16 ], - "rotation": { "origin": [ 3, 15, 0 ], "axis": "x", "angle": 45 }, - "shade": false, - "faces": { - "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, - "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ 0, -15, 0 ], - "to": [ 16, 1, 0.001 ], - "rotation": { "origin": [ 0, 1, 0 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ -2, -12, 0 ], - "to": [ 14, 4, 0.001 ], - "rotation": { "origin": [ -2, 4, 0 ], "axis": "x", "angle": -45 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ 0, -9, 0 ], - "to": [ 16, 7, 0.001 ], - "rotation": { "origin": [ 0, 7, 0 ], "axis": "x", "angle": -45 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ 0, -3, 0 ], - "to": [ 16, 13, 0.001 ], - "rotation": { "origin": [ 0, 13, 0 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "#texture" + }, + "elements": [ + { + "__comment": "PlaneY1", + "from": [ 3, 15, 0 ], + "to": [ 19, 15.001, 16 ], + "rotation": { "origin": [ 3, 15, 0 ], "axis": "x", "angle": 45 }, + "shade": false, + "faces": { + "down": { "uv": [ 16, 0, 0, 16 ], "texture": "#texture" }, + "up": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, -15, 0 ], + "to": [ 16, 1, 0.001 ], + "rotation": { "origin": [ 0, 1, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ -2, -12, 0 ], + "to": [ 14, 4, 0.001 ], + "rotation": { "origin": [ -2, 4, 0 ], "axis": "x", "angle": -45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, -9, 0 ], + "to": [ 16, 7, 0.001 ], + "rotation": { "origin": [ 0, 7, 0 ], "axis": "x", "angle": -45 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, -3, 0 ], + "to": [ 16, 13, 0.001 ], + "rotation": { "origin": [ 0, 13, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/wall_moss_03.json b/src/main/resources/assets/betterend/models/block/wall_moss_03.json index bf779746..a76a8693 100644 --- a/src/main/resources/assets/betterend/models/block/wall_moss_03.json +++ b/src/main/resources/assets/betterend/models/block/wall_moss_03.json @@ -1,63 +1,63 @@ -{ - "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", - "textures": { - "particle": "#texture" - }, - "elements": [ - { - "__comment": "PlaneY1", - "from": [ -1, 0, 0 ], - "to": [ 15, 16, 0.001 ], - "rotation": { "origin": [ -1, 16, 0 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ 2, -3, 0 ], - "to": [ 18, 13, 0.001 ], - "rotation": { "origin": [ 2, 13, 0 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ 0, -8, 0 ], - "to": [ 16, 8, 0.001 ], - "rotation": { "origin": [ 0, 8, 0 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ -3, -12, 0 ], - "to": [ 13, 4, 0.001 ], - "rotation": { "origin": [ -3, 4, 0 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - }, - { - "__comment": "PlaneY1", - "from": [ 3, -15, 0 ], - "to": [ 19, 1, 0.001 ], - "rotation": { "origin": [ 3, 1, 0 ], "axis": "x", "angle": -22.5 }, - "shade": false, - "faces": { - "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, - "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } - } - } - ] +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "textures": { + "particle": "#texture" + }, + "elements": [ + { + "__comment": "PlaneY1", + "from": [ -1, 0, 0 ], + "to": [ 15, 16, 0.001 ], + "rotation": { "origin": [ -1, 16, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 2, -3, 0 ], + "to": [ 18, 13, 0.001 ], + "rotation": { "origin": [ 2, 13, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 0, -8, 0 ], + "to": [ 16, 8, 0.001 ], + "rotation": { "origin": [ 0, 8, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ -3, -12, 0 ], + "to": [ 13, 4, 0.001 ], + "rotation": { "origin": [ -3, 4, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + }, + { + "__comment": "PlaneY1", + "from": [ 3, -15, 0 ], + "to": [ 19, 1, 0.001 ], + "rotation": { "origin": [ 3, 1, 0 ], "axis": "x", "angle": -22.5 }, + "shade": false, + "faces": { + "north": { "uv": [ 0, 16, 16, 0 ], "texture": "#texture" }, + "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#texture", "rotation": 180 } + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/aeternium_axe.json b/src/main/resources/assets/betterend/models/item/aeternium_axe.json index a342fbc8..c167f8ce 100644 --- a/src/main/resources/assets/betterend/models/item/aeternium_axe.json +++ b/src/main/resources/assets/betterend/models/item/aeternium_axe.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "betterend:item/aeternium_axe" - } +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "betterend:item/aeternium_axe" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/aeternium_boots.json b/src/main/resources/assets/betterend/models/item/aeternium_boots.json index 3b37ac91..f6caae83 100644 --- a/src/main/resources/assets/betterend/models/item/aeternium_boots.json +++ b/src/main/resources/assets/betterend/models/item/aeternium_boots.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "betterend:item/aeternium_boots" - } +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "betterend:item/aeternium_boots" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/aeternium_chestplate.json b/src/main/resources/assets/betterend/models/item/aeternium_chestplate.json index f9935ff5..6f9a2c71 100644 --- a/src/main/resources/assets/betterend/models/item/aeternium_chestplate.json +++ b/src/main/resources/assets/betterend/models/item/aeternium_chestplate.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "betterend:item/aeternium_chestplate" - } +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "betterend:item/aeternium_chestplate" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/aeternium_hammer.json b/src/main/resources/assets/betterend/models/item/aeternium_hammer.json index 3f1ce7d5..97f80b2e 100644 --- a/src/main/resources/assets/betterend/models/item/aeternium_hammer.json +++ b/src/main/resources/assets/betterend/models/item/aeternium_hammer.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "betterend:item/aeternium_hammer" - } +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "betterend:item/aeternium_hammer" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/aeternium_helmet.json b/src/main/resources/assets/betterend/models/item/aeternium_helmet.json index fa02fa89..791cb597 100644 --- a/src/main/resources/assets/betterend/models/item/aeternium_helmet.json +++ b/src/main/resources/assets/betterend/models/item/aeternium_helmet.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "betterend:item/aeternium_helmet" - } +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "betterend:item/aeternium_helmet" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/aeternium_hoe.json b/src/main/resources/assets/betterend/models/item/aeternium_hoe.json index 3e640fad..9cee4fcd 100644 --- a/src/main/resources/assets/betterend/models/item/aeternium_hoe.json +++ b/src/main/resources/assets/betterend/models/item/aeternium_hoe.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "betterend:item/aeternium_hoe" - } +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "betterend:item/aeternium_hoe" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/aeternium_leggings.json b/src/main/resources/assets/betterend/models/item/aeternium_leggings.json index 697c0a8d..b21c3b7b 100644 --- a/src/main/resources/assets/betterend/models/item/aeternium_leggings.json +++ b/src/main/resources/assets/betterend/models/item/aeternium_leggings.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "betterend:item/aeternium_leggings" - } +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "betterend:item/aeternium_leggings" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/aeternium_pickaxe.json b/src/main/resources/assets/betterend/models/item/aeternium_pickaxe.json index b2ed173f..a9df5dc1 100644 --- a/src/main/resources/assets/betterend/models/item/aeternium_pickaxe.json +++ b/src/main/resources/assets/betterend/models/item/aeternium_pickaxe.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "betterend:item/aeternium_pickaxe" - } +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "betterend:item/aeternium_pickaxe" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/aeternium_shovel.json b/src/main/resources/assets/betterend/models/item/aeternium_shovel.json index 858475de..8592a817 100644 --- a/src/main/resources/assets/betterend/models/item/aeternium_shovel.json +++ b/src/main/resources/assets/betterend/models/item/aeternium_shovel.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "betterend:item/aeternium_shovel" - } +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "betterend:item/aeternium_shovel" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/aeternium_sword.json b/src/main/resources/assets/betterend/models/item/aeternium_sword.json index 978f4238..c526a1d1 100644 --- a/src/main/resources/assets/betterend/models/item/aeternium_sword.json +++ b/src/main/resources/assets/betterend/models/item/aeternium_sword.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "betterend:item/aeternium_sword" - } +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "betterend:item/aeternium_sword" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/cave_bush.json b/src/main/resources/assets/betterend/models/item/cave_bush.json index 81e09eff..c0716a41 100644 --- a/src/main/resources/assets/betterend/models/item/cave_bush.json +++ b/src/main/resources/assets/betterend/models/item/cave_bush.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/cave_bush_01" -} +{ + "parent": "betterend:block/cave_bush_01" +} diff --git a/src/main/resources/assets/betterend/models/item/cave_moss.json b/src/main/resources/assets/betterend/models/item/cave_moss.json index caeaacbf..56fbfe9f 100644 --- a/src/main/resources/assets/betterend/models/item/cave_moss.json +++ b/src/main/resources/assets/betterend/models/item/cave_moss.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/cave_moss" -} +{ + "parent": "betterend:block/cave_moss" +} diff --git a/src/main/resources/assets/betterend/models/item/cave_moss_path.json b/src/main/resources/assets/betterend/models/item/cave_moss_path.json index 7915c469..8f2a130f 100644 --- a/src/main/resources/assets/betterend/models/item/cave_moss_path.json +++ b/src/main/resources/assets/betterend/models/item/cave_moss_path.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/cave_moss_path" -} +{ + "parent": "betterend:block/cave_moss_path" +} diff --git a/src/main/resources/assets/betterend/models/item/crystal_moss.json b/src/main/resources/assets/betterend/models/item/crystal_moss.json index d31083f2..187ee92c 100644 --- a/src/main/resources/assets/betterend/models/item/crystal_moss.json +++ b/src/main/resources/assets/betterend/models/item/crystal_moss.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/crystal_moss" -} +{ + "parent": "betterend:block/crystal_moss" +} diff --git a/src/main/resources/assets/betterend/models/item/crystal_moss_path.json b/src/main/resources/assets/betterend/models/item/crystal_moss_path.json index 801db548..fbfcbe61 100644 --- a/src/main/resources/assets/betterend/models/item/crystal_moss_path.json +++ b/src/main/resources/assets/betterend/models/item/crystal_moss_path.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/crystal_moss_path" -} +{ + "parent": "betterend:block/crystal_moss_path" +} diff --git a/src/main/resources/assets/betterend/models/item/diamond_hammer.json b/src/main/resources/assets/betterend/models/item/diamond_hammer.json index 77d71587..767d96df 100644 --- a/src/main/resources/assets/betterend/models/item/diamond_hammer.json +++ b/src/main/resources/assets/betterend/models/item/diamond_hammer.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "betterend:item/diamond_hammer" - } +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "betterend:item/diamond_hammer" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/end_lotus_stem.json b/src/main/resources/assets/betterend/models/item/end_lotus_stem.json index 1e0cb5ea..f8ff339e 100644 --- a/src/main/resources/assets/betterend/models/item/end_lotus_stem.json +++ b/src/main/resources/assets/betterend/models/item/end_lotus_stem.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/end_lotus_stem" -} +{ + "parent": "betterend:block/end_lotus_stem" +} diff --git a/src/main/resources/assets/betterend/models/item/end_portal_block.json b/src/main/resources/assets/betterend/models/item/end_portal_block.json index 71e153ae..831a97db 100644 --- a/src/main/resources/assets/betterend/models/item/end_portal_block.json +++ b/src/main/resources/assets/betterend/models/item/end_portal_block.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "betterend:block/end_portal" - } +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "betterend:block/end_portal" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/eternal_crystal.json b/src/main/resources/assets/betterend/models/item/eternal_crystal.json index 16830ca2..1cd311d7 100644 --- a/src/main/resources/assets/betterend/models/item/eternal_crystal.json +++ b/src/main/resources/assets/betterend/models/item/eternal_crystal.json @@ -1,6 +1,6 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "betterend:item/crystal_shards" - } +{ + "parent": "item/generated", + "textures": { + "layer0": "betterend:item/crystal_shards" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/eternal_pedestal.json b/src/main/resources/assets/betterend/models/item/eternal_pedestal.json index 0cb3c9d0..25048bc4 100644 --- a/src/main/resources/assets/betterend/models/item/eternal_pedestal.json +++ b/src/main/resources/assets/betterend/models/item/eternal_pedestal.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/eternal_pedestal_default_1" -} +{ + "parent": "betterend:block/eternal_pedestal_default_1" +} diff --git a/src/main/resources/assets/betterend/models/item/flavolite_runed.json b/src/main/resources/assets/betterend/models/item/flavolite_runed.json index 359977ad..b4291f21 100644 --- a/src/main/resources/assets/betterend/models/item/flavolite_runed.json +++ b/src/main/resources/assets/betterend/models/item/flavolite_runed.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/flavolite_runed_1" -} +{ + "parent": "betterend:block/flavolite_runed_1" +} diff --git a/src/main/resources/assets/betterend/models/item/flavolite_runed_eternal.json b/src/main/resources/assets/betterend/models/item/flavolite_runed_eternal.json index 359977ad..b4291f21 100644 --- a/src/main/resources/assets/betterend/models/item/flavolite_runed_eternal.json +++ b/src/main/resources/assets/betterend/models/item/flavolite_runed_eternal.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/flavolite_runed_1" -} +{ + "parent": "betterend:block/flavolite_runed_1" +} diff --git a/src/main/resources/assets/betterend/models/item/golden_hammer.json b/src/main/resources/assets/betterend/models/item/golden_hammer.json index 3928ba3a..91d0fbde 100644 --- a/src/main/resources/assets/betterend/models/item/golden_hammer.json +++ b/src/main/resources/assets/betterend/models/item/golden_hammer.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "betterend:item/golden_hammer" - } +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "betterend:item/golden_hammer" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/infusion_pedestal.json b/src/main/resources/assets/betterend/models/item/infusion_pedestal.json index ad8068fc..62b1e562 100644 --- a/src/main/resources/assets/betterend/models/item/infusion_pedestal.json +++ b/src/main/resources/assets/betterend/models/item/infusion_pedestal.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/infusion_pedestal_default" -} +{ + "parent": "betterend:block/infusion_pedestal_default" +} diff --git a/src/main/resources/assets/betterend/models/item/iron_hammer.json b/src/main/resources/assets/betterend/models/item/iron_hammer.json index f738e323..37c4f957 100644 --- a/src/main/resources/assets/betterend/models/item/iron_hammer.json +++ b/src/main/resources/assets/betterend/models/item/iron_hammer.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "betterend:item/iron_hammer" - } +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "betterend:item/iron_hammer" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/netherite_hammer.json b/src/main/resources/assets/betterend/models/item/netherite_hammer.json index bdf1b7e6..0040a0f7 100644 --- a/src/main/resources/assets/betterend/models/item/netherite_hammer.json +++ b/src/main/resources/assets/betterend/models/item/netherite_hammer.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "betterend:item/netherite_hammer" - } +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "betterend:item/netherite_hammer" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/purpur_pedestal.json b/src/main/resources/assets/betterend/models/item/purpur_pedestal.json index 956941be..469e5832 100644 --- a/src/main/resources/assets/betterend/models/item/purpur_pedestal.json +++ b/src/main/resources/assets/betterend/models/item/purpur_pedestal.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/purpur_pedestal_default" -} +{ + "parent": "betterend:block/purpur_pedestal_default" +} diff --git a/src/main/resources/assets/betterend/models/item/quartz_pedestal.json b/src/main/resources/assets/betterend/models/item/quartz_pedestal.json index 0a652c75..34cae5a0 100644 --- a/src/main/resources/assets/betterend/models/item/quartz_pedestal.json +++ b/src/main/resources/assets/betterend/models/item/quartz_pedestal.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/quartz_pedestal_default" -} +{ + "parent": "betterend:block/quartz_pedestal_default" +} diff --git a/src/main/resources/assets/betterend/models/item/spawn_egg_dragonfly.json b/src/main/resources/assets/betterend/models/item/spawn_egg_dragonfly.json index 765225c9..796d20ab 100644 --- a/src/main/resources/assets/betterend/models/item/spawn_egg_dragonfly.json +++ b/src/main/resources/assets/betterend/models/item/spawn_egg_dragonfly.json @@ -1,3 +1,3 @@ -{ - "parent": "item/template_spawn_egg" -} +{ + "parent": "item/template_spawn_egg" +} diff --git a/src/main/resources/assets/betterend/models/item/spawn_egg_end_slime.json b/src/main/resources/assets/betterend/models/item/spawn_egg_end_slime.json index 765225c9..796d20ab 100644 --- a/src/main/resources/assets/betterend/models/item/spawn_egg_end_slime.json +++ b/src/main/resources/assets/betterend/models/item/spawn_egg_end_slime.json @@ -1,3 +1,3 @@ -{ - "parent": "item/template_spawn_egg" -} +{ + "parent": "item/template_spawn_egg" +} diff --git a/src/main/resources/assets/betterend/models/item/spawn_egg_shadow_walker.json b/src/main/resources/assets/betterend/models/item/spawn_egg_shadow_walker.json new file mode 100644 index 00000000..796d20ab --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/spawn_egg_shadow_walker.json @@ -0,0 +1,3 @@ +{ + "parent": "item/template_spawn_egg" +} diff --git a/src/main/resources/assets/betterend/models/item/terminite_axe.json b/src/main/resources/assets/betterend/models/item/terminite_axe.json index 8f305558..8a6216b8 100644 --- a/src/main/resources/assets/betterend/models/item/terminite_axe.json +++ b/src/main/resources/assets/betterend/models/item/terminite_axe.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "betterend:item/terminite_axe" - } +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "betterend:item/terminite_axe" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/terminite_boots.json b/src/main/resources/assets/betterend/models/item/terminite_boots.json index 9edb943b..8e7f7ffe 100644 --- a/src/main/resources/assets/betterend/models/item/terminite_boots.json +++ b/src/main/resources/assets/betterend/models/item/terminite_boots.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "betterend:item/terminite_boots" - } +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "betterend:item/terminite_boots" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/terminite_chestplate.json b/src/main/resources/assets/betterend/models/item/terminite_chestplate.json index 2ed53231..1b0e7442 100644 --- a/src/main/resources/assets/betterend/models/item/terminite_chestplate.json +++ b/src/main/resources/assets/betterend/models/item/terminite_chestplate.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "betterend:item/terminite_chestplate" - } +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "betterend:item/terminite_chestplate" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/terminite_hammer.json b/src/main/resources/assets/betterend/models/item/terminite_hammer.json index 95124c8d..f579c92d 100644 --- a/src/main/resources/assets/betterend/models/item/terminite_hammer.json +++ b/src/main/resources/assets/betterend/models/item/terminite_hammer.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "betterend:item/terminite_hammer" - } +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "betterend:item/terminite_hammer" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/terminite_helmet.json b/src/main/resources/assets/betterend/models/item/terminite_helmet.json index 42a9f7b9..7fbdb8a6 100644 --- a/src/main/resources/assets/betterend/models/item/terminite_helmet.json +++ b/src/main/resources/assets/betterend/models/item/terminite_helmet.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "betterend:item/terminite_helmet" - } +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "betterend:item/terminite_helmet" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/terminite_hoe.json b/src/main/resources/assets/betterend/models/item/terminite_hoe.json index 5ed37b45..1cacc313 100644 --- a/src/main/resources/assets/betterend/models/item/terminite_hoe.json +++ b/src/main/resources/assets/betterend/models/item/terminite_hoe.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "betterend:item/terminite_hoe" - } +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "betterend:item/terminite_hoe" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/terminite_leggings.json b/src/main/resources/assets/betterend/models/item/terminite_leggings.json index 3eeace78..191cd4d8 100644 --- a/src/main/resources/assets/betterend/models/item/terminite_leggings.json +++ b/src/main/resources/assets/betterend/models/item/terminite_leggings.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "betterend:item/terminite_leggings" - } +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "betterend:item/terminite_leggings" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/terminite_pickaxe.json b/src/main/resources/assets/betterend/models/item/terminite_pickaxe.json index 4ac934c9..e35f9635 100644 --- a/src/main/resources/assets/betterend/models/item/terminite_pickaxe.json +++ b/src/main/resources/assets/betterend/models/item/terminite_pickaxe.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "betterend:item/terminite_pickaxe" - } +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "betterend:item/terminite_pickaxe" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/terminite_shovel.json b/src/main/resources/assets/betterend/models/item/terminite_shovel.json index b784dbfb..2f34062b 100644 --- a/src/main/resources/assets/betterend/models/item/terminite_shovel.json +++ b/src/main/resources/assets/betterend/models/item/terminite_shovel.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "betterend:item/terminite_shovel" - } +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "betterend:item/terminite_shovel" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/terminite_sword.json b/src/main/resources/assets/betterend/models/item/terminite_sword.json index fac5e3ed..00cf03e3 100644 --- a/src/main/resources/assets/betterend/models/item/terminite_sword.json +++ b/src/main/resources/assets/betterend/models/item/terminite_sword.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:item/handheld", - "textures": { - "layer0": "betterend:item/terminite_sword" - } +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "betterend:item/terminite_sword" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/violecite.json b/src/main/resources/assets/betterend/models/item/violecite.json index 556e1602..c8139128 100644 --- a/src/main/resources/assets/betterend/models/item/violecite.json +++ b/src/main/resources/assets/betterend/models/item/violecite.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/violecite" -} +{ + "parent": "betterend:block/violecite" +} diff --git a/src/main/resources/assets/betterend/models/item/violecite_bricks.json b/src/main/resources/assets/betterend/models/item/violecite_bricks.json index 8675cdf4..c998c0c4 100644 --- a/src/main/resources/assets/betterend/models/item/violecite_bricks.json +++ b/src/main/resources/assets/betterend/models/item/violecite_bricks.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/violecite_bricks" -} +{ + "parent": "betterend:block/violecite_bricks" +} diff --git a/src/main/resources/assets/betterend/models/item/violecite_bricks_slab.json b/src/main/resources/assets/betterend/models/item/violecite_bricks_slab.json index 90478bb0..a1b35d09 100644 --- a/src/main/resources/assets/betterend/models/item/violecite_bricks_slab.json +++ b/src/main/resources/assets/betterend/models/item/violecite_bricks_slab.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/violecite_bricks_half_slab" -} +{ + "parent": "betterend:block/violecite_bricks_half_slab" +} diff --git a/src/main/resources/assets/betterend/models/item/violecite_bricks_stairs.json b/src/main/resources/assets/betterend/models/item/violecite_bricks_stairs.json index 0ce09c5a..5a145605 100644 --- a/src/main/resources/assets/betterend/models/item/violecite_bricks_stairs.json +++ b/src/main/resources/assets/betterend/models/item/violecite_bricks_stairs.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/violecite_bricks_stairs" -} +{ + "parent": "betterend:block/violecite_bricks_stairs" +} diff --git a/src/main/resources/assets/betterend/models/item/violecite_bricks_wall.json b/src/main/resources/assets/betterend/models/item/violecite_bricks_wall.json index 36388d2c..4e894bdd 100644 --- a/src/main/resources/assets/betterend/models/item/violecite_bricks_wall.json +++ b/src/main/resources/assets/betterend/models/item/violecite_bricks_wall.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/violecite_bricks_wall_inventory" -} +{ + "parent": "betterend:block/violecite_bricks_wall_inventory" +} diff --git a/src/main/resources/assets/betterend/models/item/violecite_button.json b/src/main/resources/assets/betterend/models/item/violecite_button.json index 9db14a55..b8ed9ab9 100644 --- a/src/main/resources/assets/betterend/models/item/violecite_button.json +++ b/src/main/resources/assets/betterend/models/item/violecite_button.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/violecite_button_inventory" -} +{ + "parent": "betterend:block/violecite_button_inventory" +} diff --git a/src/main/resources/assets/betterend/models/item/violecite_pillar.json b/src/main/resources/assets/betterend/models/item/violecite_pillar.json index 8ad651ee..c278b52f 100644 --- a/src/main/resources/assets/betterend/models/item/violecite_pillar.json +++ b/src/main/resources/assets/betterend/models/item/violecite_pillar.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/violecite_pillar" -} +{ + "parent": "betterend:block/violecite_pillar" +} diff --git a/src/main/resources/assets/betterend/models/item/violecite_plate.json b/src/main/resources/assets/betterend/models/item/violecite_plate.json index c419e6b7..cdca92aa 100644 --- a/src/main/resources/assets/betterend/models/item/violecite_plate.json +++ b/src/main/resources/assets/betterend/models/item/violecite_plate.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/violecite_pressure_plate_up" -} +{ + "parent": "betterend:block/violecite_pressure_plate_up" +} diff --git a/src/main/resources/assets/betterend/models/item/violecite_slab.json b/src/main/resources/assets/betterend/models/item/violecite_slab.json index 9fe4c049..e8909031 100644 --- a/src/main/resources/assets/betterend/models/item/violecite_slab.json +++ b/src/main/resources/assets/betterend/models/item/violecite_slab.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/violecite_half_slab" -} +{ + "parent": "betterend:block/violecite_half_slab" +} diff --git a/src/main/resources/assets/betterend/models/item/violecite_small_tiles.json b/src/main/resources/assets/betterend/models/item/violecite_small_tiles.json index 248f878a..34b0be36 100644 --- a/src/main/resources/assets/betterend/models/item/violecite_small_tiles.json +++ b/src/main/resources/assets/betterend/models/item/violecite_small_tiles.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/violecite_small_tiles" -} +{ + "parent": "betterend:block/violecite_small_tiles" +} diff --git a/src/main/resources/assets/betterend/models/item/violecite_stairs.json b/src/main/resources/assets/betterend/models/item/violecite_stairs.json index ecebc12f..c7af3f8c 100644 --- a/src/main/resources/assets/betterend/models/item/violecite_stairs.json +++ b/src/main/resources/assets/betterend/models/item/violecite_stairs.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/violecite_stairs" -} +{ + "parent": "betterend:block/violecite_stairs" +} diff --git a/src/main/resources/assets/betterend/models/item/violecite_tile.json b/src/main/resources/assets/betterend/models/item/violecite_tile.json index 0a4f4c8b..8de1a119 100644 --- a/src/main/resources/assets/betterend/models/item/violecite_tile.json +++ b/src/main/resources/assets/betterend/models/item/violecite_tile.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/violecite_tile" -} +{ + "parent": "betterend:block/violecite_tile" +} diff --git a/src/main/resources/assets/betterend/models/item/violecite_wall.json b/src/main/resources/assets/betterend/models/item/violecite_wall.json index aa6ed8b1..32556ef6 100644 --- a/src/main/resources/assets/betterend/models/item/violecite_wall.json +++ b/src/main/resources/assets/betterend/models/item/violecite_wall.json @@ -1,3 +1,3 @@ -{ - "parent": "betterend:block/violecite_wall_inventory" -} +{ + "parent": "betterend:block/violecite_wall_inventory" +} diff --git a/src/main/resources/assets/betterend/particles/portal_sphere.json b/src/main/resources/assets/betterend/particles/portal_sphere.json index e3e05d9e..9ede22c3 100644 --- a/src/main/resources/assets/betterend/particles/portal_sphere.json +++ b/src/main/resources/assets/betterend/particles/portal_sphere.json @@ -1,38 +1,38 @@ -{ - "textures": [ - "betterend:glowing_sphere_0", - "betterend:glowing_sphere_1", - "betterend:glowing_sphere_2", - "betterend:glowing_sphere_3", - "betterend:glowing_sphere_4", - - "betterend:glowing_sphere_5", - "betterend:glowing_sphere_6", - "betterend:glowing_sphere_7", - "betterend:glowing_sphere_6", - "betterend:glowing_sphere_5", - - "betterend:glowing_sphere_4", - - "betterend:glowing_sphere_5", - "betterend:glowing_sphere_6", - "betterend:glowing_sphere_7", - "betterend:glowing_sphere_6", - "betterend:glowing_sphere_5", - - "betterend:glowing_sphere_4", - - "betterend:glowing_sphere_5", - "betterend:glowing_sphere_6", - "betterend:glowing_sphere_7", - "betterend:glowing_sphere_6", - "betterend:glowing_sphere_5", - - "betterend:glowing_sphere_4", - - "betterend:glowing_sphere_3", - "betterend:glowing_sphere_2", - "betterend:glowing_sphere_1", - "betterend:glowing_sphere_0" - ] +{ + "textures": [ + "betterend:glowing_sphere_0", + "betterend:glowing_sphere_1", + "betterend:glowing_sphere_2", + "betterend:glowing_sphere_3", + "betterend:glowing_sphere_4", + + "betterend:glowing_sphere_5", + "betterend:glowing_sphere_6", + "betterend:glowing_sphere_7", + "betterend:glowing_sphere_6", + "betterend:glowing_sphere_5", + + "betterend:glowing_sphere_4", + + "betterend:glowing_sphere_5", + "betterend:glowing_sphere_6", + "betterend:glowing_sphere_7", + "betterend:glowing_sphere_6", + "betterend:glowing_sphere_5", + + "betterend:glowing_sphere_4", + + "betterend:glowing_sphere_5", + "betterend:glowing_sphere_6", + "betterend:glowing_sphere_7", + "betterend:glowing_sphere_6", + "betterend:glowing_sphere_5", + + "betterend:glowing_sphere_4", + + "betterend:glowing_sphere_3", + "betterend:glowing_sphere_2", + "betterend:glowing_sphere_1", + "betterend:glowing_sphere_0" + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/bookshelf.json b/src/main/resources/assets/betterend/patterns/block/bookshelf.json index 2cbd99e7..68b3923d 100644 --- a/src/main/resources/assets/betterend/patterns/block/bookshelf.json +++ b/src/main/resources/assets/betterend/patterns/block/bookshelf.json @@ -1,7 +1,7 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "end": "betterend:block/%parent%_planks", - "side": "betterend:block/%parent%_bookshelf" - } +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "betterend:block/%parent%_planks", + "side": "betterend:block/%parent%_bookshelf" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_barrel_open.json b/src/main/resources/assets/betterend/patterns/block/pattern_barrel_open.json index 4b7204f6..0dc650bf 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_barrel_open.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_barrel_open.json @@ -1,8 +1,8 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "bottom": "betterend:block/%block%_bottom", - "side": "betterend:block/%block%_side", - "top": "betterend:block/%block%_top_open" - } -} +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "bottom": "betterend:block/%block%_bottom", + "side": "betterend:block/%block%_side", + "top": "betterend:block/%block%_top_open" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_block.json b/src/main/resources/assets/betterend/patterns/block/pattern_block.json index 5985f908..237de19a 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_block.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_block.json @@ -1,6 +1,6 @@ -{ - "parent": "block/cube_all", - "textures": { - "all": "betterend:block/%parent%" - } +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/%parent%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_block_bottom_top.json b/src/main/resources/assets/betterend/patterns/block/pattern_block_bottom_top.json index ee6f5d88..4f941210 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_block_bottom_top.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_block_bottom_top.json @@ -1,8 +1,8 @@ -{ - "parent": "minecraft:block/cube_bottom_top", - "textures": { - "bottom": "betterend:block/%block%_bottom", - "side": "betterend:block/%block%_side", - "top": "betterend:block/%block%_top" - } -} +{ + "parent": "minecraft:block/cube_bottom_top", + "textures": { + "bottom": "betterend:block/%block%_bottom", + "side": "betterend:block/%block%_side", + "top": "betterend:block/%block%_top" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_block_sided.json b/src/main/resources/assets/betterend/patterns/block/pattern_block_sided.json index 7d956ddd..546abb95 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_block_sided.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_block_sided.json @@ -1,12 +1,12 @@ -{ - "parent": "minecraft:block/cube", - "textures": { - "particle": "betterend:block/%particle%", - "down": "betterend:block/%down%", - "up": "betterend:block/%up%", - "north": "betterend:block/%north%", - "south": "betterend:block/%south%", - "west": "betterend:block/%west%", - "east": "betterend:block/%east%" - } -} +{ + "parent": "minecraft:block/cube", + "textures": { + "particle": "betterend:block/%particle%", + "down": "betterend:block/%down%", + "up": "betterend:block/%up%", + "north": "betterend:block/%north%", + "south": "betterend:block/%south%", + "west": "betterend:block/%west%", + "east": "betterend:block/%east%" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_button.json b/src/main/resources/assets/betterend/patterns/block/pattern_button.json index b1b6c2d8..fcbeafdb 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_button.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_button.json @@ -1,6 +1,6 @@ -{ - "parent": "block/button", - "textures": { - "texture": "betterend:block/%parent%" - } +{ + "parent": "block/button", + "textures": { + "texture": "betterend:block/%parent%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_button_pressed.json b/src/main/resources/assets/betterend/patterns/block/pattern_button_pressed.json index ba85aaba..777366ad 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_button_pressed.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_button_pressed.json @@ -1,6 +1,6 @@ -{ - "parent": "block/button_pressed", - "textures": { - "texture": "betterend:block/%parent%" - } +{ + "parent": "block/button_pressed", + "textures": { + "texture": "betterend:block/%parent%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_door_bottom.json b/src/main/resources/assets/betterend/patterns/block/pattern_door_bottom.json index 3c94e071..e66bf75d 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_door_bottom.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_door_bottom.json @@ -1,7 +1,7 @@ -{ - "parent": "betterend:block/sided_door_bottom", - "textures": { - "facade": "betterend:block/%block%_bottom", - "side": "betterend:block/%block%_side" - } -} +{ + "parent": "betterend:block/sided_door_bottom", + "textures": { + "facade": "betterend:block/%block%_bottom", + "side": "betterend:block/%block%_side" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_door_bottom_hinge.json b/src/main/resources/assets/betterend/patterns/block/pattern_door_bottom_hinge.json index c7ca46eb..f8c20c2b 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_door_bottom_hinge.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_door_bottom_hinge.json @@ -1,7 +1,7 @@ -{ - "parent": "betterend:block/sided_door_bottom_rh", - "textures": { - "facade": "betterend:block/%block%_bottom", - "side": "betterend:block/%block%_side" - } -} +{ + "parent": "betterend:block/sided_door_bottom_rh", + "textures": { + "facade": "betterend:block/%block%_bottom", + "side": "betterend:block/%block%_side" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_door_top.json b/src/main/resources/assets/betterend/patterns/block/pattern_door_top.json index c1a9171b..e69010a8 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_door_top.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_door_top.json @@ -1,7 +1,7 @@ -{ - "parent": "betterend:block/sided_door_top", - "textures": { - "facade": "betterend:block/%block%_top", - "side": "betterend:block/%block%_side" - } -} +{ + "parent": "betterend:block/sided_door_top", + "textures": { + "facade": "betterend:block/%block%_top", + "side": "betterend:block/%block%_side" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_door_top_hinge.json b/src/main/resources/assets/betterend/patterns/block/pattern_door_top_hinge.json index 5f04777c..274c33b6 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_door_top_hinge.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_door_top_hinge.json @@ -1,7 +1,7 @@ -{ - "parent": "betterend:block/sided_door_top_rh", - "textures": { - "facade": "betterend:block/%block%_top", - "side": "betterend:block/%block%_side" - } -} +{ + "parent": "betterend:block/sided_door_top_rh", + "textures": { + "facade": "betterend:block/%block%_top", + "side": "betterend:block/%block%_side" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_empty.json b/src/main/resources/assets/betterend/patterns/block/pattern_empty.json index 9008f821..001f7b02 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_empty.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_empty.json @@ -1,5 +1,5 @@ -{ - "textures": { - "particle": "betterend:block/%texture%" - } -} +{ + "textures": { + "particle": "betterend:block/%texture%" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_fence_gate_closed.json b/src/main/resources/assets/betterend/patterns/block/pattern_fence_gate_closed.json index da62db6f..dcbab258 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_fence_gate_closed.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_fence_gate_closed.json @@ -1,6 +1,6 @@ -{ - "parent": "block/template_fence_gate", - "textures": { - "texture": "betterend:block/%parent%" - } -} +{ + "parent": "block/template_fence_gate", + "textures": { + "texture": "betterend:block/%parent%" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_fence_gate_open.json b/src/main/resources/assets/betterend/patterns/block/pattern_fence_gate_open.json index 95e02ba2..1e7bc9bd 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_fence_gate_open.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_fence_gate_open.json @@ -1,6 +1,6 @@ -{ - "parent": "block/template_fence_gate_open", - "textures": { - "texture": "betterend:block/%parent%" - } -} +{ + "parent": "block/template_fence_gate_open", + "textures": { + "texture": "betterend:block/%parent%" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_fence_post.json b/src/main/resources/assets/betterend/patterns/block/pattern_fence_post.json index 057cfbe3..824045e1 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_fence_post.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_fence_post.json @@ -1,6 +1,6 @@ -{ - "parent": "block/fence_post", - "textures": { - "texture": "betterend:block/%parent%" - } -} +{ + "parent": "block/fence_post", + "textures": { + "texture": "betterend:block/%parent%" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_fence_side.json b/src/main/resources/assets/betterend/patterns/block/pattern_fence_side.json index 8870ba9b..0bf290c5 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_fence_side.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_fence_side.json @@ -1,6 +1,6 @@ -{ - "parent": "block/fence_side", - "textures": { - "texture": "betterend:block/%parent%" - } -} +{ + "parent": "block/fence_side", + "textures": { + "texture": "betterend:block/%parent%" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_inner_stairs.json b/src/main/resources/assets/betterend/patterns/block/pattern_inner_stairs.json index 39b0d96c..fd4af190 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_inner_stairs.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_inner_stairs.json @@ -1,8 +1,8 @@ -{ - "parent": "block/inner_stairs", - "textures": { - "bottom": "betterend:block/%parent%", - "side": "betterend:block/%parent%", - "top": "betterend:block/%parent%" - } +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "betterend:block/%parent%", + "side": "betterend:block/%parent%", + "top": "betterend:block/%parent%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_ladder.json b/src/main/resources/assets/betterend/patterns/block/pattern_ladder.json index 579af4df..741a7635 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_ladder.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_ladder.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/ladder", - "textures": { - "texture": "betterend:block/%texture%" - } -} +{ + "parent": "betterend:block/ladder", + "textures": { + "texture": "betterend:block/%texture%" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_outer_stairs.json b/src/main/resources/assets/betterend/patterns/block/pattern_outer_stairs.json index 060a9875..8bb69587 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_outer_stairs.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_outer_stairs.json @@ -1,8 +1,8 @@ -{ - "parent": "block/outer_stairs", - "textures": { - "bottom": "betterend:block/%parent%", - "side": "betterend:block/%parent%", - "top": "betterend:block/%parent%" - } +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "betterend:block/%parent%", + "side": "betterend:block/%parent%", + "top": "betterend:block/%parent%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_bottom.json b/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_bottom.json index d24efabd..e370058a 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_bottom.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_bottom.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_bottom", - "textures": { - "base": "%mod%:block/%base%", - "pillar": "%mod%:block/%pillar%", - "bottom": "%mod%:block/%bottom%" - } +{ + "parent": "betterend:block/pedestal_bottom", + "textures": { + "base": "%mod%:block/%base%", + "pillar": "%mod%:block/%pillar%", + "bottom": "%mod%:block/%bottom%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_column.json b/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_column.json index 3a1b2754..c8d9712d 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_column.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_column.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_column", - "textures": { - "base": "%mod%:block/%base%", - "pillar": "%mod%:block/%pillar%", - "bottom": "%mod%:block/%bottom%" - } +{ + "parent": "betterend:block/pedestal_column", + "textures": { + "base": "%mod%:block/%base%", + "pillar": "%mod%:block/%pillar%", + "bottom": "%mod%:block/%bottom%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_column_top.json b/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_column_top.json index 06b858ed..25537cbc 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_column_top.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_column_top.json @@ -1,7 +1,7 @@ -{ - "parent": "betterend:block/pedestal_column_top", - "textures": { - "base": "%mod%:block/%base%", - "pillar": "%mod%:block/%pillar%" - } +{ + "parent": "betterend:block/pedestal_column_top", + "textures": { + "base": "%mod%:block/%base%", + "pillar": "%mod%:block/%pillar%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_default.json b/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_default.json index b0c67390..3b20a2ea 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_default.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_default.json @@ -1,9 +1,9 @@ -{ - "parent": "betterend:block/pedestal_default", - "textures": { - "top": "%mod%:block/%top%", - "base": "%mod%:block/%base%", - "pillar": "%mod%:block/%pillar%", - "bottom": "%mod%:block/%bottom%" - } +{ + "parent": "betterend:block/pedestal_default", + "textures": { + "top": "%mod%:block/%top%", + "base": "%mod%:block/%base%", + "pillar": "%mod%:block/%pillar%", + "bottom": "%mod%:block/%bottom%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_pillar.json b/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_pillar.json index 2eb2a1f3..25e5f3bf 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_pillar.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_pillar.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/pedestal_pillar", - "textures": { - "pillar": "%mod%:block/%pillar%" - } +{ + "parent": "betterend:block/pedestal_pillar", + "textures": { + "pillar": "%mod%:block/%pillar%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_top.json b/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_top.json index 93cc04e9..a5457a58 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_top.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_pedestal_top.json @@ -1,8 +1,8 @@ -{ - "parent": "betterend:block/pedestal_top", - "textures": { - "top": "%mod%:block/%top%", - "base": "%mod%:block/%base%", - "pillar": "%mod%:block/%pillar%" - } +{ + "parent": "betterend:block/pedestal_top", + "textures": { + "top": "%mod%:block/%top%", + "base": "%mod%:block/%base%", + "pillar": "%mod%:block/%pillar%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_pillar.json b/src/main/resources/assets/betterend/patterns/block/pattern_pillar.json index 0dafd53c..e28a54e8 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_pillar.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_pillar.json @@ -1,7 +1,7 @@ -{ - "parent": "minecraft:block/cube_column", - "textures": { - "end": "betterend:block/%parent%_top", - "side": "betterend:block/%parent%_side" - } +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "betterend:block/%parent%_top", + "side": "betterend:block/%parent%_side" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_pressure_plate_down.json b/src/main/resources/assets/betterend/patterns/block/pattern_pressure_plate_down.json index 9a9285f7..c5a2d22e 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_pressure_plate_down.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_pressure_plate_down.json @@ -1,6 +1,6 @@ -{ - "parent": "block/pressure_plate_down", - "textures": { - "texture": "betterend:block/%parent%" - } +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "betterend:block/%parent%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_pressure_plate_up.json b/src/main/resources/assets/betterend/patterns/block/pattern_pressure_plate_up.json index e5c7ae95..19d7c9cc 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_pressure_plate_up.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_pressure_plate_up.json @@ -1,6 +1,6 @@ -{ - "parent": "block/pressure_plate_up", - "textures": { - "texture": "betterend:block/%parent%" - } +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "betterend:block/%parent%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_sapling.json b/src/main/resources/assets/betterend/patterns/block/pattern_sapling.json index 22e48132..98b5ed2f 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_sapling.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_sapling.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/cross", - "textures": { - "cross": "betterend:block/%texture%" - } -} +{ + "parent": "minecraft:block/cross", + "textures": { + "cross": "betterend:block/%texture%" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_slab.json b/src/main/resources/assets/betterend/patterns/block/pattern_slab.json index 1ac25f99..8b1c6769 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_slab.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_slab.json @@ -1,8 +1,8 @@ -{ - "parent": "minecraft:block/slab", - "textures": { - "bottom": "betterend:block/%parent%", - "side": "betterend:block/%parent%", - "top": "betterend:block/%parent%" - } +{ + "parent": "minecraft:block/slab", + "textures": { + "bottom": "betterend:block/%parent%", + "side": "betterend:block/%parent%", + "top": "betterend:block/%parent%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_stairs.json b/src/main/resources/assets/betterend/patterns/block/pattern_stairs.json index b6650ea0..86341429 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_stairs.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_stairs.json @@ -1,8 +1,8 @@ -{ - "parent": "block/stairs", - "textures": { - "bottom": "betterend:block/%parent%", - "side": "betterend:block/%parent%", - "top": "betterend:block/%parent%" - } +{ + "parent": "block/stairs", + "textures": { + "bottom": "betterend:block/%parent%", + "side": "betterend:block/%parent%", + "top": "betterend:block/%parent%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_trapdoor.json b/src/main/resources/assets/betterend/patterns/block/pattern_trapdoor.json index 18938255..c173a425 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_trapdoor.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_trapdoor.json @@ -1,7 +1,7 @@ -{ - "parent": "betterend:block/sided_trapdoor", - "textures": { - "texture": "betterend:block/%block%", - "side": "betterend:block/%texture%" - } -} +{ + "parent": "betterend:block/sided_trapdoor", + "textures": { + "texture": "betterend:block/%block%", + "side": "betterend:block/%texture%" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_wall_gate_closed.json b/src/main/resources/assets/betterend/patterns/block/pattern_wall_gate_closed.json index 53da3f90..01137e18 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_wall_gate_closed.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_wall_gate_closed.json @@ -1,6 +1,6 @@ -{ - "parent": "block/template_fence_gate_wall", - "textures": { - "texture": "betterend:block/%parent%" - } -} +{ + "parent": "block/template_fence_gate_wall", + "textures": { + "texture": "betterend:block/%parent%" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_wall_gate_open.json b/src/main/resources/assets/betterend/patterns/block/pattern_wall_gate_open.json index 700a3f56..7804bef0 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_wall_gate_open.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_wall_gate_open.json @@ -1,6 +1,6 @@ -{ - "parent": "block/template_fence_gate_wall_open", - "textures": { - "texture": "betterend:block/%parent%" - } -} +{ + "parent": "block/template_fence_gate_wall_open", + "textures": { + "texture": "betterend:block/%parent%" + } +} diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_wall_inventory.json b/src/main/resources/assets/betterend/patterns/block/pattern_wall_inventory.json index 76c092af..7c2f89c0 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_wall_inventory.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_wall_inventory.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "betterend:block/%parent%" - } +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "betterend:block/%parent%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_wall_post.json b/src/main/resources/assets/betterend/patterns/block/pattern_wall_post.json index 23cf5852..9acedf1f 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_wall_post.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_wall_post.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/template_wall_post", - "textures": { - "wall": "betterend:block/%parent%" - } +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "betterend:block/%parent%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_wall_side.json b/src/main/resources/assets/betterend/patterns/block/pattern_wall_side.json index f289b66f..bf2a7db1 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_wall_side.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_wall_side.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/template_wall_side", - "textures": { - "wall": "betterend:block/%parent%" - } +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "betterend:block/%parent%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/pattern_wall_side_tall.json b/src/main/resources/assets/betterend/patterns/block/pattern_wall_side_tall.json index ba283ef7..d82c1464 100644 --- a/src/main/resources/assets/betterend/patterns/block/pattern_wall_side_tall.json +++ b/src/main/resources/assets/betterend/patterns/block/pattern_wall_side_tall.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/template_wall_side_tall", - "textures": { - "wall": "betterend:block/%parent%" - } +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "betterend:block/%parent%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/stone_lantern_ceil.json b/src/main/resources/assets/betterend/patterns/block/stone_lantern_ceil.json new file mode 100644 index 00000000..a4ba3b3c --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/stone_lantern_ceil.json @@ -0,0 +1,155 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "parent": "block/block", + "textures": { + "particle": "betterend:block/%block%_side", + "texture": "betterend:block/%block%_side", + "top": "betterend:block/%block%_top", + "crystal": "betterend:block/aurora_crystal", + "bottom": "betterend:block/%block%_bottom" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 4, 1, 4 ], + "to": [ 12, 2, 12 ], + "faces": { + "down": { "uv": [ 4, 4, 12, 12 ], "texture": "#bottom" }, + "north": { "uv": [ 4, 15, 12, 16 ], "texture": "#texture" }, + "south": { "uv": [ 4, 15, 12, 16 ], "texture": "#texture" }, + "west": { "uv": [ 4, 15, 12, 16 ], "texture": "#texture" }, + "east": { "uv": [ 4, 15, 12, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 3, 2, 3 ], + "to": [ 13, 4, 13 ], + "faces": { + "down": { "uv": [ 3, 3, 13, 13 ], "texture": "#bottom" }, + "up": { "uv": [ 3, 3, 13, 13 ], "texture": "#top" }, + "north": { "uv": [ 3, 13, 13, 15 ], "texture": "#texture" }, + "south": { "uv": [ 3, 13, 13, 15 ], "texture": "#texture" }, + "west": { "uv": [ 3, 13, 13, 15 ], "texture": "#texture" }, + "east": { "uv": [ 3, 13, 13, 15 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 3, 12, 3 ], + "to": [ 13, 14, 13 ], + "faces": { + "down": { "uv": [ 3, 3, 13, 13 ], "texture": "#bottom" }, + "up": { "uv": [ 3, 3, 13, 13 ], "texture": "#top" }, + "north": { "uv": [ 3, 3, 13, 5 ], "texture": "#texture" }, + "south": { "uv": [ 3, 3, 13, 5 ], "texture": "#texture" }, + "west": { "uv": [ 3, 3, 13, 5 ], "texture": "#texture" }, + "east": { "uv": [ 3, 3, 13, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 4, 14, 4 ], + "to": [ 12, 15, 12 ], + "faces": { + "up": { "uv": [ 4, 4, 12, 12 ], "texture": "#top" }, + "north": { "uv": [ 4, 2, 12, 3 ], "texture": "#texture" }, + "south": { "uv": [ 4, 2, 12, 3 ], "texture": "#texture" }, + "west": { "uv": [ 4, 2, 12, 3 ], "texture": "#texture" }, + "east": { "uv": [ 4, 2, 12, 3 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 4, 5, 4 ], + "to": [ 6, 11, 6 ], + "faces": { + "north": { "uv": [ 10, 6, 12, 12 ], "texture": "#texture" }, + "south": { "uv": [ 4, 6, 6, 12 ], "texture": "#texture" }, + "west": { "uv": [ 4, 6, 6, 12 ], "texture": "#texture" }, + "east": { "uv": [ 10, 6, 12, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 10, 5, 4 ], + "to": [ 12, 11, 6 ], + "faces": { + "north": { "uv": [ 4, 6, 6, 12 ], "texture": "#texture" }, + "south": { "uv": [ 10, 6, 12, 12 ], "texture": "#texture" }, + "west": { "uv": [ 4, 6, 6, 12 ], "texture": "#texture" }, + "east": { "uv": [ 10, 6, 12, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 4, 5, 10 ], + "to": [ 6, 11, 12 ], + "faces": { + "north": { "uv": [ 10, 6, 12, 12 ], "texture": "#texture" }, + "south": { "uv": [ 4, 6, 6, 12 ], "texture": "#texture" }, + "west": { "uv": [ 10, 6, 12, 12 ], "texture": "#texture" }, + "east": { "uv": [ 4, 6, 6, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 10, 5, 10 ], + "to": [ 12, 11, 12 ], + "faces": { + "north": { "uv": [ 4, 6, 6, 12 ], "texture": "#texture" }, + "south": { "uv": [ 10, 6, 12, 12 ], "texture": "#texture" }, + "west": { "uv": [ 10, 6, 12, 12 ], "texture": "#texture" }, + "east": { "uv": [ 4, 6, 6, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 6, 15, 6 ], + "to": [ 10, 16, 10 ], + "faces": { + "up": { "uv": [ 6, 6, 10, 10 ], "texture": "#top" }, + "north": { "uv": [ 6, 1, 10, 2 ], "texture": "#texture" }, + "south": { "uv": [ 6, 1, 10, 2 ], "texture": "#texture" }, + "west": { "uv": [ 6, 1, 10, 2 ], "texture": "#texture" }, + "east": { "uv": [ 6, 1, 10, 2 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 4, 4, 4 ], + "to": [ 12, 5, 12 ], + "faces": { + "up": { "uv": [ 4, 4, 12, 12 ], "texture": "#top" }, + "north": { "uv": [ 4, 12, 12, 13 ], "texture": "#texture" }, + "south": { "uv": [ 4, 12, 12, 13 ], "texture": "#texture" }, + "west": { "uv": [ 4, 12, 12, 13 ], "texture": "#texture" }, + "east": { "uv": [ 4, 12, 12, 13 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 4, 11, 4 ], + "to": [ 12, 12, 12 ], + "faces": { + "down": { "uv": [ 4, 4, 12, 12 ], "texture": "#bottom" }, + "north": { "uv": [ 4, 5, 12, 6 ], "texture": "#texture" }, + "south": { "uv": [ 4, 5, 12, 6 ], "texture": "#texture" }, + "west": { "uv": [ 4, 5, 12, 6 ], "texture": "#texture" }, + "east": { "uv": [ 4, 5, 12, 6 ], "texture": "#texture" } + } + }, + { + "__comment": "Box10", + "from": [ 6, 5, 6 ], + "to": [ 10, 11, 10 ], + "shade": false, + "faces": { + "north": { "uv": [ 6, 5, 10, 11 ], "texture": "#crystal", "tintindex": 0 }, + "south": { "uv": [ 6, 5, 10, 11 ], "texture": "#crystal", "tintindex": 0 }, + "west": { "uv": [ 6, 5, 10, 11 ], "texture": "#crystal", "tintindex": 0 }, + "east": { "uv": [ 6, 5, 10, 11 ], "texture": "#crystal", "tintindex": 0 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/block/stone_lantern_floor.json b/src/main/resources/assets/betterend/patterns/block/stone_lantern_floor.json new file mode 100644 index 00000000..ebd3ba42 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/block/stone_lantern_floor.json @@ -0,0 +1,155 @@ +{ + "__comment": "Designed by Paulevs with Cubik Studio - https://cubik.studio", + "parent": "block/block", + "textures": { + "particle": "betterend:block/%block%_side", + "texture": "betterend:block/%block%_side", + "top": "betterend:block/%block%_top", + "crystal": "betterend:block/aurora_crystal", + "bottom": "betterend:block/%block%_bottom" + }, + "elements": [ + { + "__comment": "Box1", + "from": [ 4, 0, 4 ], + "to": [ 12, 1, 12 ], + "faces": { + "down": { "uv": [ 4, 4, 12, 12 ], "texture": "#bottom", "cullface": "down" }, + "north": { "uv": [ 4, 15, 12, 16 ], "texture": "#texture" }, + "south": { "uv": [ 4, 15, 12, 16 ], "texture": "#texture" }, + "west": { "uv": [ 4, 15, 12, 16 ], "texture": "#texture" }, + "east": { "uv": [ 4, 15, 12, 16 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 3, 1, 3 ], + "to": [ 13, 3, 13 ], + "faces": { + "down": { "uv": [ 3, 3, 13, 13 ], "texture": "#bottom" }, + "up": { "uv": [ 3, 3, 13, 13 ], "texture": "#top" }, + "north": { "uv": [ 3, 13, 13, 15 ], "texture": "#texture" }, + "south": { "uv": [ 3, 13, 13, 15 ], "texture": "#texture" }, + "west": { "uv": [ 3, 13, 13, 15 ], "texture": "#texture" }, + "east": { "uv": [ 3, 13, 13, 15 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 3, 11, 3 ], + "to": [ 13, 13, 13 ], + "faces": { + "down": { "uv": [ 3, 3, 13, 13 ], "texture": "#bottom" }, + "up": { "uv": [ 3, 3, 13, 13 ], "texture": "#top" }, + "north": { "uv": [ 3, 3, 13, 5 ], "texture": "#texture" }, + "south": { "uv": [ 3, 3, 13, 5 ], "texture": "#texture" }, + "west": { "uv": [ 3, 3, 13, 5 ], "texture": "#texture" }, + "east": { "uv": [ 3, 3, 13, 5 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 4, 13, 4 ], + "to": [ 12, 14, 12 ], + "faces": { + "up": { "uv": [ 4, 4, 12, 12 ], "texture": "#top" }, + "north": { "uv": [ 4, 2, 12, 3 ], "texture": "#texture" }, + "south": { "uv": [ 4, 2, 12, 3 ], "texture": "#texture" }, + "west": { "uv": [ 4, 2, 12, 3 ], "texture": "#texture" }, + "east": { "uv": [ 4, 2, 12, 3 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 4, 4, 4 ], + "to": [ 6, 10, 6 ], + "faces": { + "north": { "uv": [ 10, 6, 12, 12 ], "texture": "#texture" }, + "south": { "uv": [ 4, 6, 6, 12 ], "texture": "#texture" }, + "west": { "uv": [ 4, 6, 6, 12 ], "texture": "#texture" }, + "east": { "uv": [ 10, 6, 12, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 10, 4, 4 ], + "to": [ 12, 10, 6 ], + "faces": { + "north": { "uv": [ 4, 6, 6, 12 ], "texture": "#texture" }, + "south": { "uv": [ 10, 6, 12, 12 ], "texture": "#texture" }, + "west": { "uv": [ 4, 6, 6, 12 ], "texture": "#texture" }, + "east": { "uv": [ 10, 6, 12, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 4, 4, 10 ], + "to": [ 6, 10, 12 ], + "faces": { + "north": { "uv": [ 10, 6, 12, 12 ], "texture": "#texture" }, + "south": { "uv": [ 4, 6, 6, 12 ], "texture": "#texture" }, + "west": { "uv": [ 10, 6, 12, 12 ], "texture": "#texture" }, + "east": { "uv": [ 4, 6, 6, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 10, 4, 10 ], + "to": [ 12, 10, 12 ], + "faces": { + "north": { "uv": [ 4, 6, 6, 12 ], "texture": "#texture" }, + "south": { "uv": [ 10, 6, 12, 12 ], "texture": "#texture" }, + "west": { "uv": [ 10, 6, 12, 12 ], "texture": "#texture" }, + "east": { "uv": [ 4, 6, 6, 12 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 6, 14, 6 ], + "to": [ 10, 15, 10 ], + "faces": { + "up": { "uv": [ 6, 6, 10, 10 ], "texture": "#top" }, + "north": { "uv": [ 6, 1, 10, 2 ], "texture": "#texture" }, + "south": { "uv": [ 6, 1, 10, 2 ], "texture": "#texture" }, + "west": { "uv": [ 6, 1, 10, 2 ], "texture": "#texture" }, + "east": { "uv": [ 6, 1, 10, 2 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 4, 3, 4 ], + "to": [ 12, 4, 12 ], + "faces": { + "up": { "uv": [ 4, 4, 12, 12 ], "texture": "#top" }, + "north": { "uv": [ 4, 12, 12, 13 ], "texture": "#texture" }, + "south": { "uv": [ 4, 12, 12, 13 ], "texture": "#texture" }, + "west": { "uv": [ 4, 12, 12, 13 ], "texture": "#texture" }, + "east": { "uv": [ 4, 12, 12, 13 ], "texture": "#texture" } + } + }, + { + "__comment": "Box1", + "from": [ 4, 10, 4 ], + "to": [ 12, 11, 12 ], + "faces": { + "down": { "uv": [ 4, 4, 12, 12 ], "texture": "#bottom" }, + "north": { "uv": [ 4, 5, 12, 6 ], "texture": "#texture" }, + "south": { "uv": [ 4, 5, 12, 6 ], "texture": "#texture" }, + "west": { "uv": [ 4, 5, 12, 6 ], "texture": "#texture" }, + "east": { "uv": [ 4, 5, 12, 6 ], "texture": "#texture" } + } + }, + { + "__comment": "Box10", + "from": [ 6, 4, 6 ], + "to": [ 10, 10, 10 ], + "shade": false, + "faces": { + "north": { "uv": [ 6, 6, 10, 12 ], "texture": "#crystal", "tintindex": 0 }, + "south": { "uv": [ 6, 6, 10, 12 ], "texture": "#crystal", "tintindex": 0 }, + "west": { "uv": [ 6, 6, 10, 12 ], "texture": "#crystal", "tintindex": 0 }, + "east": { "uv": [ 6, 6, 10, 12 ], "texture": "#crystal", "tintindex": 0 } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_barrel.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_barrel.json index 26ffbc1b..d0e55903 100644 --- a/src/main/resources/assets/betterend/patterns/blockstate/pattern_barrel.json +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_barrel.json @@ -1,56 +1,56 @@ -{ - "variants": { - "facing=down,open=false": { - "model": "betterend:pattern/%block%", - "x": 180 - }, - "facing=down,open=true": { - "model": "betterend:pattern/%block%/%block%_open", - "x": 180 - }, - "facing=east,open=false": { - "model": "betterend:pattern/%block%", - "x": 90, - "y": 90 - }, - "facing=east,open=true": { - "model": "betterend:pattern/%block%/%block%_open", - "x": 90, - "y": 90 - }, - "facing=north,open=false": { - "model": "betterend:pattern/%block%", - "x": 90 - }, - "facing=north,open=true": { - "model": "betterend:pattern/%block%/%block%_open", - "x": 90 - }, - "facing=south,open=false": { - "model": "betterend:pattern/%block%", - "x": 90, - "y": 180 - }, - "facing=south,open=true": { - "model": "betterend:pattern/%block%/%block%_open", - "x": 90, - "y": 180 - }, - "facing=up,open=false": { - "model": "betterend:pattern/%block%" - }, - "facing=up,open=true": { - "model": "betterend:pattern/%block%/%block%_open" - }, - "facing=west,open=false": { - "model": "betterend:pattern/%block%", - "x": 90, - "y": 270 - }, - "facing=west,open=true": { - "model": "betterend:pattern/%block%/%block%_open", - "x": 90, - "y": 270 - } - } -} +{ + "variants": { + "facing=down,open=false": { + "model": "betterend:pattern/%block%", + "x": 180 + }, + "facing=down,open=true": { + "model": "betterend:pattern/%block%/%block%_open", + "x": 180 + }, + "facing=east,open=false": { + "model": "betterend:pattern/%block%", + "x": 90, + "y": 90 + }, + "facing=east,open=true": { + "model": "betterend:pattern/%block%/%block%_open", + "x": 90, + "y": 90 + }, + "facing=north,open=false": { + "model": "betterend:pattern/%block%", + "x": 90 + }, + "facing=north,open=true": { + "model": "betterend:pattern/%block%/%block%_open", + "x": 90 + }, + "facing=south,open=false": { + "model": "betterend:pattern/%block%", + "x": 90, + "y": 180 + }, + "facing=south,open=true": { + "model": "betterend:pattern/%block%/%block%_open", + "x": 90, + "y": 180 + }, + "facing=up,open=false": { + "model": "betterend:pattern/%block%" + }, + "facing=up,open=true": { + "model": "betterend:pattern/%block%/%block%_open" + }, + "facing=west,open=false": { + "model": "betterend:pattern/%block%", + "x": 90, + "y": 270 + }, + "facing=west,open=true": { + "model": "betterend:pattern/%block%/%block%_open", + "x": 90, + "y": 270 + } + } +} diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_block.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_block.json index c2eaaf79..e3210284 100644 --- a/src/main/resources/assets/betterend/patterns/blockstate/pattern_block.json +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_block.json @@ -1,7 +1,7 @@ -{ - "variants": { - "": { - "model": "betterend:pattern/%block%" - } - } +{ + "variants": { + "": { + "model": "betterend:pattern/%block%" + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_button.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_button.json index d4bf513f..5b11978a 100644 --- a/src/main/resources/assets/betterend/patterns/blockstate/pattern_button.json +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_button.json @@ -1,118 +1,118 @@ -{ - "variants": { - "face=ceiling,facing=east,powered=false": { - "model": "betterend:pattern/%block%", - "x": 180, - "y": 270 - }, - "face=ceiling,facing=east,powered=true": { - "model": "betterend:pattern/%block%/%block%_pressed", - "x": 180, - "y": 270 - }, - "face=ceiling,facing=north,powered=false": { - "model": "betterend:pattern/%block%", - "x": 180, - "y": 180 - }, - "face=ceiling,facing=north,powered=true": { - "model": "betterend:pattern/%block%/%block%_pressed", - "x": 180, - "y": 180 - }, - "face=ceiling,facing=south,powered=false": { - "model": "betterend:pattern/%block%", - "x": 180 - }, - "face=ceiling,facing=south,powered=true": { - "model": "betterend:pattern/%block%/%block%_pressed", - "x": 180 - }, - "face=ceiling,facing=west,powered=false": { - "model": "betterend:pattern/%block%", - "x": 180, - "y": 90 - }, - "face=ceiling,facing=west,powered=true": { - "model": "betterend:pattern/%block%/%block%_pressed", - "x": 180, - "y": 90 - }, - "face=floor,facing=east,powered=false": { - "model": "betterend:pattern/%block%", - "y": 90 - }, - "face=floor,facing=east,powered=true": { - "model": "betterend:pattern/%block%/%block%_pressed", - "y": 90 - }, - "face=floor,facing=north,powered=false": { - "model": "betterend:pattern/%block%" - }, - "face=floor,facing=north,powered=true": { - "model": "betterend:pattern/%block%/%block%_pressed" - }, - "face=floor,facing=south,powered=false": { - "model": "betterend:pattern/%block%", - "y": 180 - }, - "face=floor,facing=south,powered=true": { - "model": "betterend:pattern/%block%/%block%_pressed", - "y": 180 - }, - "face=floor,facing=west,powered=false": { - "model": "betterend:pattern/%block%", - "y": 270 - }, - "face=floor,facing=west,powered=true": { - "model": "betterend:pattern/%block%/%block%_pressed", - "y": 270 - }, - "face=wall,facing=east,powered=false": { - "model": "betterend:pattern/%block%", - "uvlock": true, - "x": 90, - "y": 90 - }, - "face=wall,facing=east,powered=true": { - "model": "betterend:pattern/%block%/%block%_pressed", - "uvlock": true, - "x": 90, - "y": 90 - }, - "face=wall,facing=north,powered=false": { - "model": "betterend:pattern/%block%", - "uvlock": true, - "x": 90 - }, - "face=wall,facing=north,powered=true": { - "model": "betterend:pattern/%block%/%block%_pressed", - "uvlock": true, - "x": 90 - }, - "face=wall,facing=south,powered=false": { - "model": "betterend:pattern/%block%", - "uvlock": true, - "x": 90, - "y": 180 - }, - "face=wall,facing=south,powered=true": { - "model": "betterend:pattern/%block%/%block%_pressed", - "uvlock": true, - "x": 90, - "y": 180 - }, - "face=wall,facing=west,powered=false": { - "model": "betterend:pattern/%block%", - "uvlock": true, - "x": 90, - "y": 270 - }, - "face=wall,facing=west,powered=true": { - "model": "betterend:pattern/%block%/%block%_pressed", - "uvlock": true, - "x": 90, - "y": 270 - } - } +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "betterend:pattern/%block%", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=east,powered=true": { + "model": "betterend:pattern/%block%/%block%_pressed", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=north,powered=false": { + "model": "betterend:pattern/%block%", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "betterend:pattern/%block%/%block%_pressed", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "betterend:pattern/%block%", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "betterend:pattern/%block%/%block%_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "betterend:pattern/%block%", + "x": 180, + "y": 90 + }, + "face=ceiling,facing=west,powered=true": { + "model": "betterend:pattern/%block%/%block%_pressed", + "x": 180, + "y": 90 + }, + "face=floor,facing=east,powered=false": { + "model": "betterend:pattern/%block%", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "betterend:pattern/%block%/%block%_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "betterend:pattern/%block%" + }, + "face=floor,facing=north,powered=true": { + "model": "betterend:pattern/%block%/%block%_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "betterend:pattern/%block%", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "betterend:pattern/%block%/%block%_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "betterend:pattern/%block%", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "betterend:pattern/%block%/%block%_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "betterend:pattern/%block%", + "uvlock": true, + "x": 90, + "y": 90 + }, + "face=wall,facing=east,powered=true": { + "model": "betterend:pattern/%block%/%block%_pressed", + "uvlock": true, + "x": 90, + "y": 90 + }, + "face=wall,facing=north,powered=false": { + "model": "betterend:pattern/%block%", + "uvlock": true, + "x": 90 + }, + "face=wall,facing=north,powered=true": { + "model": "betterend:pattern/%block%/%block%_pressed", + "uvlock": true, + "x": 90 + }, + "face=wall,facing=south,powered=false": { + "model": "betterend:pattern/%block%", + "uvlock": true, + "x": 90, + "y": 180 + }, + "face=wall,facing=south,powered=true": { + "model": "betterend:pattern/%block%/%block%_pressed", + "uvlock": true, + "x": 90, + "y": 180 + }, + "face=wall,facing=west,powered=false": { + "model": "betterend:pattern/%block%", + "uvlock": true, + "x": 90, + "y": 270 + }, + "face=wall,facing=west,powered=true": { + "model": "betterend:pattern/%block%/%block%_pressed", + "uvlock": true, + "x": 90, + "y": 270 + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_door.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_door.json index d194b2e6..55e2892c 100644 --- a/src/main/resources/assets/betterend/patterns/blockstate/pattern_door.json +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_door.json @@ -1,124 +1,124 @@ -{ - "variants": { - "facing=east,half=lower,hinge=left,open=false": { - "model": "betterend:pattern/%block%/%block%_bottom" - }, - "facing=east,half=lower,hinge=left,open=true": { - "model": "betterend:pattern/%block%/%block%_bottom_hinge", - "y": 90 - }, - "facing=east,half=lower,hinge=right,open=false": { - "model": "betterend:pattern/%block%/%block%_bottom_hinge" - }, - "facing=east,half=lower,hinge=right,open=true": { - "model": "betterend:pattern/%block%/%block%_bottom", - "y": 270 - }, - "facing=east,half=upper,hinge=left,open=false": { - "model": "betterend:pattern/%block%/%block%_top" - }, - "facing=east,half=upper,hinge=left,open=true": { - "model": "betterend:pattern/%block%/%block%_top_hinge", - "y": 90 - }, - "facing=east,half=upper,hinge=right,open=false": { - "model": "betterend:pattern/%block%/%block%_top_hinge" - }, - "facing=east,half=upper,hinge=right,open=true": { - "model": "betterend:pattern/%block%/%block%_top", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=false": { - "model": "betterend:pattern/%block%/%block%_bottom", - "y": 270 - }, - "facing=north,half=lower,hinge=left,open=true": { - "model": "betterend:pattern/%block%/%block%_bottom_hinge" - }, - "facing=north,half=lower,hinge=right,open=false": { - "model": "betterend:pattern/%block%/%block%_bottom_hinge", - "y": 270 - }, - "facing=north,half=lower,hinge=right,open=true": { - "model": "betterend:pattern/%block%/%block%_bottom", - "y": 180 - }, - "facing=north,half=upper,hinge=left,open=false": { - "model": "betterend:pattern/%block%/%block%_top", - "y": 270 - }, - "facing=north,half=upper,hinge=left,open=true": { - "model": "betterend:pattern/%block%/%block%_top_hinge" - }, - "facing=north,half=upper,hinge=right,open=false": { - "model": "betterend:pattern/%block%/%block%_top_hinge", - "y": 270 - }, - "facing=north,half=upper,hinge=right,open=true": { - "model": "betterend:pattern/%block%/%block%_top", - "y": 180 - }, - "facing=south,half=lower,hinge=left,open=false": { - "model": "betterend:pattern/%block%/%block%_bottom", - "y": 90 - }, - "facing=south,half=lower,hinge=left,open=true": { - "model": "betterend:pattern/%block%/%block%_bottom_hinge", - "y": 180 - }, - "facing=south,half=lower,hinge=right,open=false": { - "model": "betterend:pattern/%block%/%block%_bottom_hinge", - "y": 90 - }, - "facing=south,half=lower,hinge=right,open=true": { - "model": "betterend:pattern/%block%/%block%_bottom" - }, - "facing=south,half=upper,hinge=left,open=false": { - "model": "betterend:pattern/%block%/%block%_top", - "y": 90 - }, - "facing=south,half=upper,hinge=left,open=true": { - "model": "betterend:pattern/%block%/%block%_top_hinge", - "y": 180 - }, - "facing=south,half=upper,hinge=right,open=false": { - "model": "betterend:pattern/%block%/%block%_top_hinge", - "y": 90 - }, - "facing=south,half=upper,hinge=right,open=true": { - "model": "betterend:pattern/%block%/%block%_top" - }, - "facing=west,half=lower,hinge=left,open=false": { - "model": "betterend:pattern/%block%/%block%_bottom", - "y": 180 - }, - "facing=west,half=lower,hinge=left,open=true": { - "model": "betterend:pattern/%block%/%block%_bottom_hinge", - "y": 270 - }, - "facing=west,half=lower,hinge=right,open=false": { - "model": "betterend:pattern/%block%/%block%_bottom_hinge", - "y": 180 - }, - "facing=west,half=lower,hinge=right,open=true": { - "model": "betterend:pattern/%block%/%block%_bottom", - "y": 90 - }, - "facing=west,half=upper,hinge=left,open=false": { - "model": "betterend:pattern/%block%/%block%_top", - "y": 180 - }, - "facing=west,half=upper,hinge=left,open=true": { - "model": "betterend:pattern/%block%/%block%_top_hinge", - "y": 270 - }, - "facing=west,half=upper,hinge=right,open=false": { - "model": "betterend:pattern/%block%/%block%_top_hinge", - "y": 180 - }, - "facing=west,half=upper,hinge=right,open=true": { - "model": "betterend:pattern/%block%/%block%_top", - "y": 90 - } - } -} +{ + "variants": { + "facing=east,half=lower,hinge=left,open=false": { + "model": "betterend:pattern/%block%/%block%_bottom" + }, + "facing=east,half=lower,hinge=left,open=true": { + "model": "betterend:pattern/%block%/%block%_bottom_hinge", + "y": 90 + }, + "facing=east,half=lower,hinge=right,open=false": { + "model": "betterend:pattern/%block%/%block%_bottom_hinge" + }, + "facing=east,half=lower,hinge=right,open=true": { + "model": "betterend:pattern/%block%/%block%_bottom", + "y": 270 + }, + "facing=east,half=upper,hinge=left,open=false": { + "model": "betterend:pattern/%block%/%block%_top" + }, + "facing=east,half=upper,hinge=left,open=true": { + "model": "betterend:pattern/%block%/%block%_top_hinge", + "y": 90 + }, + "facing=east,half=upper,hinge=right,open=false": { + "model": "betterend:pattern/%block%/%block%_top_hinge" + }, + "facing=east,half=upper,hinge=right,open=true": { + "model": "betterend:pattern/%block%/%block%_top", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=false": { + "model": "betterend:pattern/%block%/%block%_bottom", + "y": 270 + }, + "facing=north,half=lower,hinge=left,open=true": { + "model": "betterend:pattern/%block%/%block%_bottom_hinge" + }, + "facing=north,half=lower,hinge=right,open=false": { + "model": "betterend:pattern/%block%/%block%_bottom_hinge", + "y": 270 + }, + "facing=north,half=lower,hinge=right,open=true": { + "model": "betterend:pattern/%block%/%block%_bottom", + "y": 180 + }, + "facing=north,half=upper,hinge=left,open=false": { + "model": "betterend:pattern/%block%/%block%_top", + "y": 270 + }, + "facing=north,half=upper,hinge=left,open=true": { + "model": "betterend:pattern/%block%/%block%_top_hinge" + }, + "facing=north,half=upper,hinge=right,open=false": { + "model": "betterend:pattern/%block%/%block%_top_hinge", + "y": 270 + }, + "facing=north,half=upper,hinge=right,open=true": { + "model": "betterend:pattern/%block%/%block%_top", + "y": 180 + }, + "facing=south,half=lower,hinge=left,open=false": { + "model": "betterend:pattern/%block%/%block%_bottom", + "y": 90 + }, + "facing=south,half=lower,hinge=left,open=true": { + "model": "betterend:pattern/%block%/%block%_bottom_hinge", + "y": 180 + }, + "facing=south,half=lower,hinge=right,open=false": { + "model": "betterend:pattern/%block%/%block%_bottom_hinge", + "y": 90 + }, + "facing=south,half=lower,hinge=right,open=true": { + "model": "betterend:pattern/%block%/%block%_bottom" + }, + "facing=south,half=upper,hinge=left,open=false": { + "model": "betterend:pattern/%block%/%block%_top", + "y": 90 + }, + "facing=south,half=upper,hinge=left,open=true": { + "model": "betterend:pattern/%block%/%block%_top_hinge", + "y": 180 + }, + "facing=south,half=upper,hinge=right,open=false": { + "model": "betterend:pattern/%block%/%block%_top_hinge", + "y": 90 + }, + "facing=south,half=upper,hinge=right,open=true": { + "model": "betterend:pattern/%block%/%block%_top" + }, + "facing=west,half=lower,hinge=left,open=false": { + "model": "betterend:pattern/%block%/%block%_bottom", + "y": 180 + }, + "facing=west,half=lower,hinge=left,open=true": { + "model": "betterend:pattern/%block%/%block%_bottom_hinge", + "y": 270 + }, + "facing=west,half=lower,hinge=right,open=false": { + "model": "betterend:pattern/%block%/%block%_bottom_hinge", + "y": 180 + }, + "facing=west,half=lower,hinge=right,open=true": { + "model": "betterend:pattern/%block%/%block%_bottom", + "y": 90 + }, + "facing=west,half=upper,hinge=left,open=false": { + "model": "betterend:pattern/%block%/%block%_top", + "y": 180 + }, + "facing=west,half=upper,hinge=left,open=true": { + "model": "betterend:pattern/%block%/%block%_top_hinge", + "y": 270 + }, + "facing=west,half=upper,hinge=right,open=false": { + "model": "betterend:pattern/%block%/%block%_top_hinge", + "y": 180 + }, + "facing=west,half=upper,hinge=right,open=true": { + "model": "betterend:pattern/%block%/%block%_top", + "y": 90 + } + } +} diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_fence.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_fence.json index 9667f89d..f4f56fdf 100644 --- a/src/main/resources/assets/betterend/patterns/blockstate/pattern_fence.json +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_fence.json @@ -1,48 +1,48 @@ -{ - "multipart": [ - { - "apply": { - "model": "betterend:pattern/%block%/%block%_post" - } - }, - { - "apply": { - "model": "betterend:pattern/%block%/%block%_side", - "uvlock": true - }, - "when": { - "north": true - } - }, - { - "apply": { - "model": "betterend:pattern/%block%/%block%_side", - "uvlock": true, - "y": 90 - }, - "when": { - "east": true - } - }, - { - "apply": { - "model": "betterend:pattern/%block%/%block%_side", - "uvlock": true, - "y": 180 - }, - "when": { - "south": true - } - }, - { - "apply": { - "model": "betterend:pattern/%block%/%block%_side", - "uvlock": true, - "y": 270 - }, - "when": { - "west": true - } - } - ] -} +{ + "multipart": [ + { + "apply": { + "model": "betterend:pattern/%block%/%block%_post" + } + }, + { + "apply": { + "model": "betterend:pattern/%block%/%block%_side", + "uvlock": true + }, + "when": { + "north": true + } + }, + { + "apply": { + "model": "betterend:pattern/%block%/%block%_side", + "uvlock": true, + "y": 90 + }, + "when": { + "east": true + } + }, + { + "apply": { + "model": "betterend:pattern/%block%/%block%_side", + "uvlock": true, + "y": 180 + }, + "when": { + "south": true + } + }, + { + "apply": { + "model": "betterend:pattern/%block%/%block%_side", + "uvlock": true, + "y": 270 + }, + "when": { + "west": true + } + } + ] +} diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_fence_gate.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_fence_gate.json index b9a38445..4d91b44a 100644 --- a/src/main/resources/assets/betterend/patterns/blockstate/pattern_fence_gate.json +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_fence_gate.json @@ -1,80 +1,80 @@ -{ - "variants": { - "facing=east,in_wall=false,open=false": { - "model": "betterend:pattern/%block%/%block%_closed", - "uvlock": true, - "y": 270 - }, - "facing=east,in_wall=false,open=true": { - "model": "betterend:pattern/%block%/%block%_open", - "uvlock": true, - "y": 270 - }, - "facing=east,in_wall=true,open=false": { - "model": "betterend:pattern/%block%/%block%_wall_closed", - "uvlock": true, - "y": 270 - }, - "facing=east,in_wall=true,open=true": { - "model": "betterend:pattern/%block%/%block%_wall_open", - "uvlock": true, - "y": 270 - }, - "facing=north,in_wall=false,open=false": { - "model": "betterend:pattern/%block%/%block%_closed", - "uvlock": true, - "y": 180 - }, - "facing=north,in_wall=false,open=true": { - "model": "betterend:pattern/%block%/%block%_open", - "uvlock": true, - "y": 180 - }, - "facing=north,in_wall=true,open=false": { - "model": "betterend:pattern/%block%/%block%_wall_closed", - "uvlock": true, - "y": 180 - }, - "facing=north,in_wall=true,open=true": { - "model": "betterend:pattern/%block%/%block%_wall_open", - "uvlock": true, - "y": 180 - }, - "facing=south,in_wall=false,open=false": { - "model": "betterend:pattern/%block%/%block%_closed", - "uvlock": true - }, - "facing=south,in_wall=false,open=true": { - "model": "betterend:pattern/%block%/%block%_open", - "uvlock": true - }, - "facing=south,in_wall=true,open=false": { - "model": "betterend:pattern/%block%/%block%_wall_closed", - "uvlock": true - }, - "facing=south,in_wall=true,open=true": { - "model": "betterend:pattern/%block%/%block%_wall_open", - "uvlock": true - }, - "facing=west,in_wall=false,open=false": { - "model": "betterend:pattern/%block%/%block%_closed", - "uvlock": true, - "y": 90 - }, - "facing=west,in_wall=false,open=true": { - "model": "betterend:pattern/%block%/%block%_open", - "uvlock": true, - "y": 90 - }, - "facing=west,in_wall=true,open=false": { - "model": "betterend:pattern/%block%/%block%_wall_closed", - "uvlock": true, - "y": 90 - }, - "facing=west,in_wall=true,open=true": { - "model": "betterend:pattern/%block%/%block%_wall_open", - "uvlock": true, - "y": 90 - } - } -} +{ + "variants": { + "facing=east,in_wall=false,open=false": { + "model": "betterend:pattern/%block%/%block%_closed", + "uvlock": true, + "y": 270 + }, + "facing=east,in_wall=false,open=true": { + "model": "betterend:pattern/%block%/%block%_open", + "uvlock": true, + "y": 270 + }, + "facing=east,in_wall=true,open=false": { + "model": "betterend:pattern/%block%/%block%_wall_closed", + "uvlock": true, + "y": 270 + }, + "facing=east,in_wall=true,open=true": { + "model": "betterend:pattern/%block%/%block%_wall_open", + "uvlock": true, + "y": 270 + }, + "facing=north,in_wall=false,open=false": { + "model": "betterend:pattern/%block%/%block%_closed", + "uvlock": true, + "y": 180 + }, + "facing=north,in_wall=false,open=true": { + "model": "betterend:pattern/%block%/%block%_open", + "uvlock": true, + "y": 180 + }, + "facing=north,in_wall=true,open=false": { + "model": "betterend:pattern/%block%/%block%_wall_closed", + "uvlock": true, + "y": 180 + }, + "facing=north,in_wall=true,open=true": { + "model": "betterend:pattern/%block%/%block%_wall_open", + "uvlock": true, + "y": 180 + }, + "facing=south,in_wall=false,open=false": { + "model": "betterend:pattern/%block%/%block%_closed", + "uvlock": true + }, + "facing=south,in_wall=false,open=true": { + "model": "betterend:pattern/%block%/%block%_open", + "uvlock": true + }, + "facing=south,in_wall=true,open=false": { + "model": "betterend:pattern/%block%/%block%_wall_closed", + "uvlock": true + }, + "facing=south,in_wall=true,open=true": { + "model": "betterend:pattern/%block%/%block%_wall_open", + "uvlock": true + }, + "facing=west,in_wall=false,open=false": { + "model": "betterend:pattern/%block%/%block%_closed", + "uvlock": true, + "y": 90 + }, + "facing=west,in_wall=false,open=true": { + "model": "betterend:pattern/%block%/%block%_open", + "uvlock": true, + "y": 90 + }, + "facing=west,in_wall=true,open=false": { + "model": "betterend:pattern/%block%/%block%_wall_closed", + "uvlock": true, + "y": 90 + }, + "facing=west,in_wall=true,open=true": { + "model": "betterend:pattern/%block%/%block%_wall_open", + "uvlock": true, + "y": 90 + } + } +} diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_ladder.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_ladder.json index 2bf2f520..e02e2aff 100644 --- a/src/main/resources/assets/betterend/patterns/blockstate/pattern_ladder.json +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_ladder.json @@ -1,19 +1,19 @@ -{ - "variants": { - "facing=north": { - "model": "betterend:pattern/%block%" - }, - "facing=east": { - "model": "betterend:pattern/%block%", - "y": 90 - }, - "facing=south": { - "model": "betterend:pattern/%block%", - "y": 180 - }, - "facing=west": { - "model": "betterend:pattern/%block%", - "y": 270 - } - } -} +{ + "variants": { + "facing=north": { + "model": "betterend:pattern/%block%" + }, + "facing=east": { + "model": "betterend:pattern/%block%", + "y": 90 + }, + "facing=south": { + "model": "betterend:pattern/%block%", + "y": 180 + }, + "facing=west": { + "model": "betterend:pattern/%block%", + "y": 270 + } + } +} diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_pedestal.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_pedestal.json index e52dcb8c..17d389b4 100644 --- a/src/main/resources/assets/betterend/patterns/blockstate/pattern_pedestal.json +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_pedestal.json @@ -1,22 +1,22 @@ -{ - "variants": { - "state=default": { - "model": "betterend:pattern/%block%/%block%_default" - }, - "state=column": { - "model": "betterend:pattern/%block%/%block%_column" - }, - "state=column_top": { - "model": "betterend:pattern/%block%/%block%_column_top" - }, - "state=pedestal_top": { - "model": "betterend:pattern/%block%/%block%_top" - }, - "state=bottom": { - "model": "betterend:pattern/%block%/%block%_bottom" - }, - "state=pillar": { - "model": "betterend:pattern/%block%/%block%_pillar" - } - } +{ + "variants": { + "state=default": { + "model": "betterend:pattern/%block%/%block%_default" + }, + "state=column": { + "model": "betterend:pattern/%block%/%block%_column" + }, + "state=column_top": { + "model": "betterend:pattern/%block%/%block%_column_top" + }, + "state=pedestal_top": { + "model": "betterend:pattern/%block%/%block%_top" + }, + "state=bottom": { + "model": "betterend:pattern/%block%/%block%_bottom" + }, + "state=pillar": { + "model": "betterend:pattern/%block%/%block%_pillar" + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_pillar.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_pillar.json index f752f00b..078eff09 100644 --- a/src/main/resources/assets/betterend/patterns/blockstate/pattern_pillar.json +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_pillar.json @@ -1,7 +1,7 @@ -{ - "variants": { - "axis=x": { "model": "betterend:pattern/%block%", "x": 90, "y": 90 }, - "axis=y": { "model": "betterend:pattern/%block%" }, - "axis=z": { "model": "betterend:pattern/%block%", "x": 90 } - } +{ + "variants": { + "axis=x": { "model": "betterend:pattern/%block%", "x": 90, "y": 90 }, + "axis=y": { "model": "betterend:pattern/%block%" }, + "axis=z": { "model": "betterend:pattern/%block%", "x": 90 } + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_pressure_plate.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_pressure_plate.json index f2781e4b..e0184902 100644 --- a/src/main/resources/assets/betterend/patterns/blockstate/pattern_pressure_plate.json +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_pressure_plate.json @@ -1,10 +1,10 @@ -{ - "variants": { - "powered=false": { - "model": "betterend:pattern/%block%/%block%_up" - }, - "powered=true": { - "model": "betterend:pattern/%block%/%block%_down" - } - } +{ + "variants": { + "powered=false": { + "model": "betterend:pattern/%block%/%block%_up" + }, + "powered=true": { + "model": "betterend:pattern/%block%/%block%_down" + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_sapling.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_sapling.json index 895caf78..55e9080f 100644 --- a/src/main/resources/assets/betterend/patterns/blockstate/pattern_sapling.json +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_sapling.json @@ -1,5 +1,5 @@ -{ - "variants": { - "": { "model": "betterend:pattern/%block%" } - } +{ + "variants": { + "": { "model": "betterend:pattern/%block%" } + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_slab.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_slab.json index 2ae9b387..a6b22fa8 100644 --- a/src/main/resources/assets/betterend/patterns/blockstate/pattern_slab.json +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_slab.json @@ -1,15 +1,15 @@ -{ - "variants": { - "type=bottom": { - "model": "betterend:pattern/%block%" - }, - "type=double": { - "model": "betterend:block/%parent%" - }, - "type=top": { - "model": "betterend:pattern/%block%", - "uvlock": true, - "x": 180 - } - } +{ + "variants": { + "type=bottom": { + "model": "betterend:pattern/%block%" + }, + "type=double": { + "model": "betterend:block/%parent%" + }, + "type=top": { + "model": "betterend:pattern/%block%", + "uvlock": true, + "x": 180 + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_stairs.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_stairs.json index 2fc8f835..818305f8 100644 --- a/src/main/resources/assets/betterend/patterns/blockstate/pattern_stairs.json +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_stairs.json @@ -1,209 +1,209 @@ -{ - "variants": { - "facing=east,half=bottom,shape=inner_left": { - "model": "betterend:pattern/%block%/%block%_inner", - "uvlock": true, - "y": 270 - }, - "facing=east,half=bottom,shape=inner_right": { - "model": "betterend:pattern/%block%/%block%_inner" - }, - "facing=east,half=bottom,shape=outer_left": { - "model": "betterend:pattern/%block%/%block%_outer", - "uvlock": true, - "y": 270 - }, - "facing=east,half=bottom,shape=outer_right": { - "model": "betterend:pattern/%block%/%block%_outer" - }, - "facing=east,half=bottom,shape=straight": { - "model": "betterend:pattern/%block%" - }, - "facing=east,half=top,shape=inner_left": { - "model": "betterend:pattern/%block%/%block%_inner", - "uvlock": true, - "x": 180 - }, - "facing=east,half=top,shape=inner_right": { - "model": "betterend:pattern/%block%/%block%_inner", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=east,half=top,shape=outer_left": { - "model": "betterend:pattern/%block%/%block%_outer", - "uvlock": true, - "x": 180 - }, - "facing=east,half=top,shape=outer_right": { - "model": "betterend:pattern/%block%/%block%_outer", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=east,half=top,shape=straight": { - "model": "betterend:pattern/%block%", - "uvlock": true, - "x": 180 - }, - "facing=north,half=bottom,shape=inner_left": { - "model": "betterend:pattern/%block%/%block%_inner", - "uvlock": true, - "y": 180 - }, - "facing=north,half=bottom,shape=inner_right": { - "model": "betterend:pattern/%block%/%block%_inner", - "uvlock": true, - "y": 270 - }, - "facing=north,half=bottom,shape=outer_left": { - "model": "betterend:pattern/%block%/%block%_outer", - "uvlock": true, - "y": 180 - }, - "facing=north,half=bottom,shape=outer_right": { - "model": "betterend:pattern/%block%/%block%_outer", - "uvlock": true, - "y": 270 - }, - "facing=north,half=bottom,shape=straight": { - "model": "betterend:pattern/%block%", - "uvlock": true, - "y": 270 - }, - "facing=north,half=top,shape=inner_left": { - "model": "betterend:pattern/%block%/%block%_inner", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=north,half=top,shape=inner_right": { - "model": "betterend:pattern/%block%/%block%_inner", - "uvlock": true, - "x": 180 - }, - "facing=north,half=top,shape=outer_left": { - "model": "betterend:pattern/%block%/%block%_outer", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=north,half=top,shape=outer_right": { - "model": "betterend:pattern/%block%/%block%_outer", - "uvlock": true, - "x": 180 - }, - "facing=north,half=top,shape=straight": { - "model": "betterend:pattern/%block%", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=south,half=bottom,shape=inner_left": { - "model": "betterend:pattern/%block%/%block%_inner" - }, - "facing=south,half=bottom,shape=inner_right": { - "model": "betterend:pattern/%block%/%block%_inner", - "uvlock": true, - "y": 90 - }, - "facing=south,half=bottom,shape=outer_left": { - "model": "betterend:pattern/%block%/%block%_outer" - }, - "facing=south,half=bottom,shape=outer_right": { - "model": "betterend:pattern/%block%/%block%_outer", - "uvlock": true, - "y": 90 - }, - "facing=south,half=bottom,shape=straight": { - "model": "betterend:pattern/%block%", - "uvlock": true, - "y": 90 - }, - "facing=south,half=top,shape=inner_left": { - "model": "betterend:pattern/%block%/%block%_inner", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=south,half=top,shape=inner_right": { - "model": "betterend:pattern/%block%/%block%_inner", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=south,half=top,shape=outer_left": { - "model": "betterend:pattern/%block%/%block%_outer", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=south,half=top,shape=outer_right": { - "model": "betterend:pattern/%block%/%block%_outer", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=south,half=top,shape=straight": { - "model": "betterend:pattern/%block%", - "uvlock": true, - "x": 180, - "y": 90 - }, - "facing=west,half=bottom,shape=inner_left": { - "model": "betterend:pattern/%block%/%block%_inner", - "uvlock": true, - "y": 90 - }, - "facing=west,half=bottom,shape=inner_right": { - "model": "betterend:pattern/%block%/%block%_inner", - "uvlock": true, - "y": 180 - }, - "facing=west,half=bottom,shape=outer_left": { - "model": "betterend:pattern/%block%/%block%_outer", - "uvlock": true, - "y": 90 - }, - "facing=west,half=bottom,shape=outer_right": { - "model": "betterend:pattern/%block%/%block%_outer", - "uvlock": true, - "y": 180 - }, - "facing=west,half=bottom,shape=straight": { - "model": "betterend:pattern/%block%", - "uvlock": true, - "y": 180 - }, - "facing=west,half=top,shape=inner_left": { - "model": "betterend:pattern/%block%/%block%_inner", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=west,half=top,shape=inner_right": { - "model": "betterend:pattern/%block%/%block%_inner", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=west,half=top,shape=outer_left": { - "model": "betterend:pattern/%block%/%block%_outer", - "uvlock": true, - "x": 180, - "y": 180 - }, - "facing=west,half=top,shape=outer_right": { - "model": "betterend:pattern/%block%/%block%_outer", - "uvlock": true, - "x": 180, - "y": 270 - }, - "facing=west,half=top,shape=straight": { - "model": "betterend:pattern/%block%", - "uvlock": true, - "x": 180, - "y": 180 - } - } +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "betterend:pattern/%block%/%block%_inner", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "betterend:pattern/%block%/%block%_inner" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "betterend:pattern/%block%/%block%_outer", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "betterend:pattern/%block%/%block%_outer" + }, + "facing=east,half=bottom,shape=straight": { + "model": "betterend:pattern/%block%" + }, + "facing=east,half=top,shape=inner_left": { + "model": "betterend:pattern/%block%/%block%_inner", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "betterend:pattern/%block%/%block%_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "betterend:pattern/%block%/%block%_outer", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "betterend:pattern/%block%/%block%_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "betterend:pattern/%block%", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "betterend:pattern/%block%/%block%_inner", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "betterend:pattern/%block%/%block%_inner", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "betterend:pattern/%block%/%block%_outer", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "betterend:pattern/%block%/%block%_outer", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "betterend:pattern/%block%", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "betterend:pattern/%block%/%block%_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "betterend:pattern/%block%/%block%_inner", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "betterend:pattern/%block%/%block%_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "betterend:pattern/%block%/%block%_outer", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "betterend:pattern/%block%", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "betterend:pattern/%block%/%block%_inner" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "betterend:pattern/%block%/%block%_inner", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "betterend:pattern/%block%/%block%_outer" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "betterend:pattern/%block%/%block%_outer", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "betterend:pattern/%block%", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "betterend:pattern/%block%/%block%_inner", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "betterend:pattern/%block%/%block%_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "betterend:pattern/%block%/%block%_outer", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "betterend:pattern/%block%/%block%_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "betterend:pattern/%block%", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "betterend:pattern/%block%/%block%_inner", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "betterend:pattern/%block%/%block%_inner", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "betterend:pattern/%block%/%block%_outer", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "betterend:pattern/%block%/%block%_outer", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "betterend:pattern/%block%", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "betterend:pattern/%block%/%block%_inner", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "betterend:pattern/%block%/%block%_inner", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "betterend:pattern/%block%/%block%_outer", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "betterend:pattern/%block%/%block%_outer", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "betterend:pattern/%block%", + "uvlock": true, + "x": 180, + "y": 180 + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_trapdoor.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_trapdoor.json index 9d21f404..1c1da9c4 100644 --- a/src/main/resources/assets/betterend/patterns/blockstate/pattern_trapdoor.json +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_trapdoor.json @@ -1,77 +1,77 @@ -{ - "variants": { - "facing=east,half=bottom,open=false": { - "model": "betterend:pattern/%block%", - "y": 90 - }, - "facing=east,half=bottom,open=true": { - "model": "betterend:pattern/%block%", - "x": 90, - "y": 90 - }, - "facing=east,half=top,open=false": { - "model": "betterend:pattern/%block%", - "x": 180, - "y": 90 - }, - "facing=east,half=top,open=true": { - "model": "betterend:pattern/%block%", - "x": 270, - "y": 270 - }, - "facing=north,half=bottom,open=false": { - "model": "betterend:pattern/%block%" - }, - "facing=north,half=bottom,open=true": { - "model": "betterend:pattern/%block%", - "x": 90 - }, - "facing=north,half=top,open=false": { - "model": "betterend:pattern/%block%", - "x": 180 - }, - "facing=north,half=top,open=true": { - "model": "betterend:pattern/%block%", - "x": 270, - "y": 180 - }, - "facing=south,half=bottom,open=false": { - "model": "betterend:pattern/%block%", - "y": 180 - }, - "facing=south,half=bottom,open=true": { - "model": "betterend:pattern/%block%", - "x": 90, - "y": 180 - }, - "facing=south,half=top,open=false": { - "model": "betterend:pattern/%block%", - "x": 180, - "y": 180 - }, - "facing=south,half=top,open=true": { - "model": "betterend:pattern/%block%", - "x": 270, - "y": 0 - }, - "facing=west,half=bottom,open=false": { - "model": "betterend:pattern/%block%", - "y": 270 - }, - "facing=west,half=bottom,open=true": { - "model": "betterend:pattern/%block%", - "x": 90, - "y": 270 - }, - "facing=west,half=top,open=false": { - "model": "betterend:pattern/%block%", - "x": 180, - "y": 270 - }, - "facing=west,half=top,open=true": { - "model": "betterend:pattern/%block%", - "x": 270, - "y": 90 - } - } -} +{ + "variants": { + "facing=east,half=bottom,open=false": { + "model": "betterend:pattern/%block%", + "y": 90 + }, + "facing=east,half=bottom,open=true": { + "model": "betterend:pattern/%block%", + "x": 90, + "y": 90 + }, + "facing=east,half=top,open=false": { + "model": "betterend:pattern/%block%", + "x": 180, + "y": 90 + }, + "facing=east,half=top,open=true": { + "model": "betterend:pattern/%block%", + "x": 270, + "y": 270 + }, + "facing=north,half=bottom,open=false": { + "model": "betterend:pattern/%block%" + }, + "facing=north,half=bottom,open=true": { + "model": "betterend:pattern/%block%", + "x": 90 + }, + "facing=north,half=top,open=false": { + "model": "betterend:pattern/%block%", + "x": 180 + }, + "facing=north,half=top,open=true": { + "model": "betterend:pattern/%block%", + "x": 270, + "y": 180 + }, + "facing=south,half=bottom,open=false": { + "model": "betterend:pattern/%block%", + "y": 180 + }, + "facing=south,half=bottom,open=true": { + "model": "betterend:pattern/%block%", + "x": 90, + "y": 180 + }, + "facing=south,half=top,open=false": { + "model": "betterend:pattern/%block%", + "x": 180, + "y": 180 + }, + "facing=south,half=top,open=true": { + "model": "betterend:pattern/%block%", + "x": 270, + "y": 0 + }, + "facing=west,half=bottom,open=false": { + "model": "betterend:pattern/%block%", + "y": 270 + }, + "facing=west,half=bottom,open=true": { + "model": "betterend:pattern/%block%", + "x": 90, + "y": 270 + }, + "facing=west,half=top,open=false": { + "model": "betterend:pattern/%block%", + "x": 180, + "y": 270 + }, + "facing=west,half=top,open=true": { + "model": "betterend:pattern/%block%", + "x": 270, + "y": 90 + } + } +} diff --git a/src/main/resources/assets/betterend/patterns/blockstate/pattern_wall.json b/src/main/resources/assets/betterend/patterns/blockstate/pattern_wall.json index a09ffd57..5d69a841 100644 --- a/src/main/resources/assets/betterend/patterns/blockstate/pattern_wall.json +++ b/src/main/resources/assets/betterend/patterns/blockstate/pattern_wall.json @@ -1,90 +1,90 @@ -{ - "multipart": [ - { - "when": { - "up": "true" - }, - "apply": { - "model": "betterend:pattern/%block%/%block%_post" - } - }, - { - "when": { - "north": "low" - }, - "apply": { - "model": "betterend:pattern/%block%/%block%_side", - "uvlock": true - } - }, - { - "when": { - "east": "low" - }, - "apply": { - "model": "betterend:pattern/%block%/%block%_side", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "low" - }, - "apply": { - "model": "betterend:pattern/%block%/%block%_side", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "low" - }, - "apply": { - "model": "betterend:pattern/%block%/%block%_side", - "y": 270, - "uvlock": true - } - }, - { - "when": { - "north": "tall" - }, - "apply": { - "model": "betterend:pattern/%block%/%block%_side_tall", - "uvlock": true - } - }, - { - "when": { - "east": "tall" - }, - "apply": { - "model": "betterend:pattern/%block%/%block%_side_tall", - "y": 90, - "uvlock": true - } - }, - { - "when": { - "south": "tall" - }, - "apply": { - "model": "betterend:pattern/%block%/%block%_side_tall", - "y": 180, - "uvlock": true - } - }, - { - "when": { - "west": "tall" - }, - "apply": { - "model": "betterend:pattern/%block%/%block%_side_tall", - "y": 270, - "uvlock": true - } - } - ] +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "betterend:pattern/%block%/%block%_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "betterend:pattern/%block%/%block%_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "betterend:pattern/%block%/%block%_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "betterend:pattern/%block%/%block%_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "betterend:pattern/%block%/%block%_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "betterend:pattern/%block%/%block%_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "betterend:pattern/%block%/%block%_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "betterend:pattern/%block%/%block%_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "betterend:pattern/%block%/%block%_side_tall", + "y": 270, + "uvlock": true + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/blockstate/stone_lantern.json b/src/main/resources/assets/betterend/patterns/blockstate/stone_lantern.json new file mode 100644 index 00000000..f8917353 --- /dev/null +++ b/src/main/resources/assets/betterend/patterns/blockstate/stone_lantern.json @@ -0,0 +1,6 @@ +{ + "variants": { + "is_floor=false": { "model": "betterend:pattern/%block%/%block%_ceil" }, + "is_floor=true": { "model": "betterend:pattern/%block%/%block%_floor" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_block_item.json b/src/main/resources/assets/betterend/patterns/item/pattern_block_item.json index 79412c0a..8c7a1b76 100644 --- a/src/main/resources/assets/betterend/patterns/item/pattern_block_item.json +++ b/src/main/resources/assets/betterend/patterns/item/pattern_block_item.json @@ -1,6 +1,6 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "betterend:block/%texture%" - } -} +{ + "parent": "item/generated", + "textures": { + "layer0": "betterend:block/%texture%" + } +} diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_button.json b/src/main/resources/assets/betterend/patterns/item/pattern_button.json index ddf66659..cd18bb89 100644 --- a/src/main/resources/assets/betterend/patterns/item/pattern_button.json +++ b/src/main/resources/assets/betterend/patterns/item/pattern_button.json @@ -1,6 +1,6 @@ -{ - "parent": "block/button_inventory", - "textures": { - "texture": "betterend:block/%parent%" - } +{ + "parent": "block/button_inventory", + "textures": { + "texture": "betterend:block/%parent%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_chest.json b/src/main/resources/assets/betterend/patterns/item/pattern_chest.json index 1febc69c..f2ac2fa3 100644 --- a/src/main/resources/assets/betterend/patterns/item/pattern_chest.json +++ b/src/main/resources/assets/betterend/patterns/item/pattern_chest.json @@ -1,6 +1,6 @@ -{ - "parent": "betterend:block/chest_item", - "textures": { - "texture": "betterend:entity/chest/%texture%" - } -} +{ + "parent": "betterend:block/chest_item", + "textures": { + "texture": "betterend:entity/chest/%texture%" + } +} diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_fence.json b/src/main/resources/assets/betterend/patterns/item/pattern_fence.json index d63ee15b..7ffb87d9 100644 --- a/src/main/resources/assets/betterend/patterns/item/pattern_fence.json +++ b/src/main/resources/assets/betterend/patterns/item/pattern_fence.json @@ -1,6 +1,6 @@ -{ - "parent": "block/fence_inventory", - "textures": { - "texture": "betterend:block/%parent%" - } -} +{ + "parent": "block/fence_inventory", + "textures": { + "texture": "betterend:block/%parent%" + } +} diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_item.json b/src/main/resources/assets/betterend/patterns/item/pattern_item.json index 65ac21fc..9d72ad4a 100644 --- a/src/main/resources/assets/betterend/patterns/item/pattern_item.json +++ b/src/main/resources/assets/betterend/patterns/item/pattern_item.json @@ -1,6 +1,6 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "betterend:item/%texture%" - } -} +{ + "parent": "item/generated", + "textures": { + "layer0": "betterend:item/%texture%" + } +} diff --git a/src/main/resources/assets/betterend/patterns/item/pattern_wall.json b/src/main/resources/assets/betterend/patterns/item/pattern_wall.json index 76c092af..7c2f89c0 100644 --- a/src/main/resources/assets/betterend/patterns/item/pattern_wall.json +++ b/src/main/resources/assets/betterend/patterns/item/pattern_wall.json @@ -1,6 +1,6 @@ -{ - "parent": "minecraft:block/wall_inventory", - "textures": { - "wall": "betterend:block/%parent%" - } +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "betterend:block/%parent%" + } } \ No newline at end of file diff --git a/src/main/resources/assets/betterend/shaders/material/glow_10.frag b/src/main/resources/assets/betterend/shaders/material/glow_10.frag index 70f71947..cc21726c 100644 --- a/src/main/resources/assets/betterend/shaders/material/glow_10.frag +++ b/src/main/resources/assets/betterend/shaders/material/glow_10.frag @@ -1,6 +1,6 @@ -#include frex:shaders/api/fragment.glsl -#include frex:shaders/lib/math.glsl - -void frx_startFragment(inout frx_FragmentData fragData) { - fragData.emissivity = frx_luminance(fragData.spriteColor.rgb) > 0.1 ? 1 : 0; -} +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + fragData.emissivity = frx_luminance(fragData.spriteColor.rgb) > 0.1 ? 1 : 0; +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_20_half.frag b/src/main/resources/assets/betterend/shaders/material/glow_20_half.frag index 9efc319b..c4c92a19 100644 --- a/src/main/resources/assets/betterend/shaders/material/glow_20_half.frag +++ b/src/main/resources/assets/betterend/shaders/material/glow_20_half.frag @@ -1,8 +1,8 @@ -#include frex:shaders/api/fragment.glsl -#include frex:shaders/lib/math.glsl - -void frx_startFragment(inout frx_FragmentData fragData) { - float glow = frx_luminance(fragData.spriteColor.rgb) - 0.2; - glow = clamp(glow * 3, 0, 0.5); - fragData.emissivity = glow; -} +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + float glow = frx_luminance(fragData.spriteColor.rgb) - 0.2; + glow = clamp(glow * 3, 0, 0.5); + fragData.emissivity = glow; +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_33.frag b/src/main/resources/assets/betterend/shaders/material/glow_33.frag index 1aa1b27d..3cd1a7fe 100644 --- a/src/main/resources/assets/betterend/shaders/material/glow_33.frag +++ b/src/main/resources/assets/betterend/shaders/material/glow_33.frag @@ -1,6 +1,6 @@ -#include frex:shaders/api/fragment.glsl -#include frex:shaders/lib/math.glsl - -void frx_startFragment(inout frx_FragmentData fragData) { - fragData.emissivity = frx_luminance(fragData.spriteColor.rgb) > 0.33 ? 1 : 0; -} +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + fragData.emissivity = frx_luminance(fragData.spriteColor.rgb) > 0.33 ? 1 : 0; +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_33_half.frag b/src/main/resources/assets/betterend/shaders/material/glow_33_half.frag index 17f1e47e..13e68d20 100644 --- a/src/main/resources/assets/betterend/shaders/material/glow_33_half.frag +++ b/src/main/resources/assets/betterend/shaders/material/glow_33_half.frag @@ -1,6 +1,6 @@ -#include frex:shaders/api/fragment.glsl -#include frex:shaders/lib/math.glsl - -void frx_startFragment(inout frx_FragmentData fragData) { - fragData.emissivity = frx_luminance(fragData.spriteColor.rgb) > 0.33 ? 0.5 : 0; -} +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + fragData.emissivity = frx_luminance(fragData.spriteColor.rgb) > 0.33 ? 0.5 : 0; +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_50.frag b/src/main/resources/assets/betterend/shaders/material/glow_50.frag index 40a3441b..e1c3af27 100644 --- a/src/main/resources/assets/betterend/shaders/material/glow_50.frag +++ b/src/main/resources/assets/betterend/shaders/material/glow_50.frag @@ -1,6 +1,6 @@ -#include frex:shaders/api/fragment.glsl -#include frex:shaders/lib/math.glsl - -void frx_startFragment(inout frx_FragmentData fragData) { - fragData.emissivity = frx_luminance(fragData.spriteColor.rgb) > 0.5 ? 1 : 0; -} +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + fragData.emissivity = frx_luminance(fragData.spriteColor.rgb) > 0.5 ? 1 : 0; +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_50_blue.frag b/src/main/resources/assets/betterend/shaders/material/glow_50_blue.frag index af528089..3f0c5554 100644 --- a/src/main/resources/assets/betterend/shaders/material/glow_50_blue.frag +++ b/src/main/resources/assets/betterend/shaders/material/glow_50_blue.frag @@ -1,8 +1,8 @@ -#include frex:shaders/api/fragment.glsl -#include frex:shaders/lib/math.glsl - -void frx_startFragment(inout frx_FragmentData fragData) { - float a = abs(fragData.spriteColor.b - fragData.spriteColor.r); - float b = abs(fragData.spriteColor.b - fragData.spriteColor.g); - fragData.emissivity = (a > 0.1 && b > 0.1 && fragData.spriteColor.b > 0.5) ? 1 : 0; -} +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + float a = abs(fragData.spriteColor.b - fragData.spriteColor.r); + float b = abs(fragData.spriteColor.b - fragData.spriteColor.g); + fragData.emissivity = (a > 0.1 && b > 0.1 && fragData.spriteColor.b > 0.5) ? 1 : 0; +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_50_half.frag b/src/main/resources/assets/betterend/shaders/material/glow_50_half.frag index 349cfacc..b88e5c63 100644 --- a/src/main/resources/assets/betterend/shaders/material/glow_50_half.frag +++ b/src/main/resources/assets/betterend/shaders/material/glow_50_half.frag @@ -1,6 +1,6 @@ -#include frex:shaders/api/fragment.glsl -#include frex:shaders/lib/math.glsl - -void frx_startFragment(inout frx_FragmentData fragData) { - fragData.emissivity = frx_luminance(fragData.spriteColor.rgb) > 0.5 ? 0.5 : 0; -} +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + fragData.emissivity = frx_luminance(fragData.spriteColor.rgb) > 0.5 ? 0.5 : 0; +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_all.frag b/src/main/resources/assets/betterend/shaders/material/glow_all.frag index 2458e833..242501f8 100644 --- a/src/main/resources/assets/betterend/shaders/material/glow_all.frag +++ b/src/main/resources/assets/betterend/shaders/material/glow_all.frag @@ -1,6 +1,6 @@ -#include frex:shaders/api/fragment.glsl -#include frex:shaders/lib/math.glsl - -void frx_startFragment(inout frx_FragmentData fragData) { - fragData.emissivity = 1; -} +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + fragData.emissivity = 1; +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_all_half.frag b/src/main/resources/assets/betterend/shaders/material/glow_all_half.frag index 7bb29ff4..0135e3c4 100644 --- a/src/main/resources/assets/betterend/shaders/material/glow_all_half.frag +++ b/src/main/resources/assets/betterend/shaders/material/glow_all_half.frag @@ -1,6 +1,6 @@ -#include frex:shaders/api/fragment.glsl -#include frex:shaders/lib/math.glsl - -void frx_startFragment(inout frx_FragmentData fragData) { - fragData.emissivity = 0.5; -} +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + fragData.emissivity = 0.5; +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_inc.frag b/src/main/resources/assets/betterend/shaders/material/glow_inc.frag index 7000eb4f..e44f5622 100644 --- a/src/main/resources/assets/betterend/shaders/material/glow_inc.frag +++ b/src/main/resources/assets/betterend/shaders/material/glow_inc.frag @@ -1,7 +1,7 @@ -#include frex:shaders/api/fragment.glsl -#include frex:shaders/lib/math.glsl - -void frx_startFragment(inout frx_FragmentData fragData) { - float light = frx_luminance(fragData.spriteColor.rgb) * 2 - 0.3; - fragData.emissivity = clamp(light, 0, 1); -} +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + float light = frx_luminance(fragData.spriteColor.rgb) * 2 - 0.3; + fragData.emissivity = clamp(light, 0, 1); +} diff --git a/src/main/resources/assets/betterend/shaders/material/glow_transparent.frag b/src/main/resources/assets/betterend/shaders/material/glow_transparent.frag index 562c7ace..53f4a4ea 100644 --- a/src/main/resources/assets/betterend/shaders/material/glow_transparent.frag +++ b/src/main/resources/assets/betterend/shaders/material/glow_transparent.frag @@ -1,8 +1,8 @@ -#include frex:shaders/api/fragment.glsl -#include frex:shaders/lib/math.glsl - -void frx_startFragment(inout frx_FragmentData fragData) { - fragData.emissivity = 1; - fragData.ao = false; - fragData.diffuse = false; -} +#include frex:shaders/api/fragment.glsl +#include frex:shaders/lib/math.glsl + +void frx_startFragment(inout frx_FragmentData fragData) { + fragData.emissivity = 1; + fragData.ao = false; + fragData.diffuse = false; +} diff --git a/src/main/resources/assets/betterend/shaders/material/offset_floor.vert b/src/main/resources/assets/betterend/shaders/material/offset_floor.vert index a80a3b5e..c6c19e47 100644 --- a/src/main/resources/assets/betterend/shaders/material/offset_floor.vert +++ b/src/main/resources/assets/betterend/shaders/material/offset_floor.vert @@ -1,18 +1,18 @@ -#include frex:shaders/api/vertex.glsl -#include frex:shaders/api/world.glsl -#include frex:shaders/lib/math.glsl -#include frex:shaders/lib/noise/noise4d.glsl - -/****************************************************** - Based on "GPU-Generated Procedural Wind Animations for Trees" - by Renaldas Zioma in GPU Gems 3, 2007 - https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees - - Remake of canvas default shader for the Nether -******************************************************/ - -#define NOISE_SCALE 0.125 - -void frx_startVertex(inout frx_VertexData data) { - data.vertex.xz += data.normal.xz * data.spriteUV.y * 0.02; -} +#include frex:shaders/api/vertex.glsl +#include frex:shaders/api/world.glsl +#include frex:shaders/lib/math.glsl +#include frex:shaders/lib/noise/noise4d.glsl + +/****************************************************** + Based on "GPU-Generated Procedural Wind Animations for Trees" + by Renaldas Zioma in GPU Gems 3, 2007 + https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees + + Remake of canvas default shader for the Nether +******************************************************/ + +#define NOISE_SCALE 0.125 + +void frx_startVertex(inout frx_VertexData data) { + data.vertex.xz += data.normal.xz * data.spriteUV.y * 0.02; +} diff --git a/src/main/resources/assets/betterend/shaders/material/small_wave.vert b/src/main/resources/assets/betterend/shaders/material/small_wave.vert index 2d726f17..3314593a 100644 --- a/src/main/resources/assets/betterend/shaders/material/small_wave.vert +++ b/src/main/resources/assets/betterend/shaders/material/small_wave.vert @@ -1,24 +1,24 @@ -#include frex:shaders/api/vertex.glsl -#include frex:shaders/api/world.glsl -#include frex:shaders/lib/math.glsl -#include frex:shaders/lib/noise/noise4d.glsl - -/****************************************************** - Based on "GPU-Generated Procedural Wind Animations for Trees" - by Renaldas Zioma in GPU Gems 3, 2007 - https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees - - Remake of canvas default shader for the Nether -******************************************************/ - -void frx_startVertex(inout frx_VertexData data) { - #ifdef ANIMATED_FOLIAGE - float t = frx_renderSeconds() * 0.05; - - vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * 0.5; - float wind = snoise(vec4(pos, t)) * 0.02; - - data.vertex.x += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; - data.vertex.z += sin(t * 19) * wind; - #endif -} +#include frex:shaders/api/vertex.glsl +#include frex:shaders/api/world.glsl +#include frex:shaders/lib/math.glsl +#include frex:shaders/lib/noise/noise4d.glsl + +/****************************************************** + Based on "GPU-Generated Procedural Wind Animations for Trees" + by Renaldas Zioma in GPU Gems 3, 2007 + https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees + + Remake of canvas default shader for the Nether +******************************************************/ + +void frx_startVertex(inout frx_VertexData data) { + #ifdef ANIMATED_FOLIAGE + float t = frx_renderSeconds() * 0.05; + + vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * 0.5; + float wind = snoise(vec4(pos, t)) * 0.02; + + data.vertex.x += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; + data.vertex.z += sin(t * 19) * wind; + #endif +} diff --git a/src/main/resources/assets/betterend/shaders/material/wall_wave.vert b/src/main/resources/assets/betterend/shaders/material/wall_wave.vert index f95caecb..6cf34fe1 100644 --- a/src/main/resources/assets/betterend/shaders/material/wall_wave.vert +++ b/src/main/resources/assets/betterend/shaders/material/wall_wave.vert @@ -1,27 +1,27 @@ -#include frex:shaders/api/vertex.glsl -#include frex:shaders/api/world.glsl -#include frex:shaders/lib/math.glsl -#include frex:shaders/lib/noise/noise4d.glsl - -/****************************************************** - Based on "GPU-Generated Procedural Wind Animations for Trees" - by Renaldas Zioma in GPU Gems 3, 2007 - https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees - - Remake of canvas default shader for the Nether -******************************************************/ - -void frx_startVertex(inout frx_VertexData data) { - #ifdef ANIMATED_FOLIAGE - float t = frx_renderSeconds() * 0.05; - - vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * 0.5; - float wind = snoise(vec4(pos, t)) * 0.1; - - wind *= 1 - data.spriteUV.y; - - data.vertex.y += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; - data.vertex.x += cos(t * 14) * wind; - data.vertex.z += sin(t * 19) * wind; - #endif -} +#include frex:shaders/api/vertex.glsl +#include frex:shaders/api/world.glsl +#include frex:shaders/lib/math.glsl +#include frex:shaders/lib/noise/noise4d.glsl + +/****************************************************** + Based on "GPU-Generated Procedural Wind Animations for Trees" + by Renaldas Zioma in GPU Gems 3, 2007 + https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees + + Remake of canvas default shader for the Nether +******************************************************/ + +void frx_startVertex(inout frx_VertexData data) { + #ifdef ANIMATED_FOLIAGE + float t = frx_renderSeconds() * 0.05; + + vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * 0.5; + float wind = snoise(vec4(pos, t)) * 0.1; + + wind *= 1 - data.spriteUV.y; + + data.vertex.y += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; + data.vertex.x += cos(t * 14) * wind; + data.vertex.z += sin(t * 19) * wind; + #endif +} diff --git a/src/main/resources/assets/betterend/shaders/material/wall_wave_inverted.vert b/src/main/resources/assets/betterend/shaders/material/wall_wave_inverted.vert index bc664478..e5238c4a 100644 --- a/src/main/resources/assets/betterend/shaders/material/wall_wave_inverted.vert +++ b/src/main/resources/assets/betterend/shaders/material/wall_wave_inverted.vert @@ -1,27 +1,27 @@ -#include frex:shaders/api/vertex.glsl -#include frex:shaders/api/world.glsl -#include frex:shaders/lib/math.glsl -#include frex:shaders/lib/noise/noise4d.glsl - -/****************************************************** - Based on "GPU-Generated Procedural Wind Animations for Trees" - by Renaldas Zioma in GPU Gems 3, 2007 - https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees - - Remake of canvas default shader for the Nether -******************************************************/ - -void frx_startVertex(inout frx_VertexData data) { - #ifdef ANIMATED_FOLIAGE - float t = frx_renderSeconds() * 0.05; - - vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * 0.5; - float wind = snoise(vec4(pos, t)) * 0.1; - - wind *= data.spriteUV.y; - - data.vertex.y += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; - data.vertex.x += cos(t * 14) * wind; - data.vertex.z += sin(t * 19) * wind; - #endif -} +#include frex:shaders/api/vertex.glsl +#include frex:shaders/api/world.glsl +#include frex:shaders/lib/math.glsl +#include frex:shaders/lib/noise/noise4d.glsl + +/****************************************************** + Based on "GPU-Generated Procedural Wind Animations for Trees" + by Renaldas Zioma in GPU Gems 3, 2007 + https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees + + Remake of canvas default shader for the Nether +******************************************************/ + +void frx_startVertex(inout frx_VertexData data) { + #ifdef ANIMATED_FOLIAGE + float t = frx_renderSeconds() * 0.05; + + vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * 0.5; + float wind = snoise(vec4(pos, t)) * 0.1; + + wind *= data.spriteUV.y; + + data.vertex.y += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; + data.vertex.x += cos(t * 14) * wind; + data.vertex.z += sin(t * 19) * wind; + #endif +} diff --git a/src/main/resources/assets/betterend/shaders/material/wave.vert b/src/main/resources/assets/betterend/shaders/material/wave.vert index df877506..1ec4c5e1 100644 --- a/src/main/resources/assets/betterend/shaders/material/wave.vert +++ b/src/main/resources/assets/betterend/shaders/material/wave.vert @@ -1,26 +1,26 @@ -#include frex:shaders/api/vertex.glsl -#include frex:shaders/api/world.glsl -#include frex:shaders/lib/math.glsl -#include frex:shaders/lib/noise/noise4d.glsl - -/****************************************************** - Based on "GPU-Generated Procedural Wind Animations for Trees" - by Renaldas Zioma in GPU Gems 3, 2007 - https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees - - Remake of canvas default shader for the Nether -******************************************************/ - -#define NOISE_SCALE 0.125 - -void frx_startVertex(inout frx_VertexData data) { - #ifdef ANIMATED_FOLIAGE - float t = frx_renderSeconds() * 0.05; - - vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * NOISE_SCALE; - float wind = snoise(vec4(pos, t)) * 0.1; - - data.vertex.x += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; - data.vertex.z += sin(t * 19) * wind; - #endif -} +#include frex:shaders/api/vertex.glsl +#include frex:shaders/api/world.glsl +#include frex:shaders/lib/math.glsl +#include frex:shaders/lib/noise/noise4d.glsl + +/****************************************************** + Based on "GPU-Generated Procedural Wind Animations for Trees" + by Renaldas Zioma in GPU Gems 3, 2007 + https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees + + Remake of canvas default shader for the Nether +******************************************************/ + +#define NOISE_SCALE 0.125 + +void frx_startVertex(inout frx_VertexData data) { + #ifdef ANIMATED_FOLIAGE + float t = frx_renderSeconds() * 0.05; + + vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * NOISE_SCALE; + float wind = snoise(vec4(pos, t)) * 0.1; + + data.vertex.x += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; + data.vertex.z += sin(t * 19) * wind; + #endif +} diff --git a/src/main/resources/assets/betterend/shaders/material/wave_floor.vert b/src/main/resources/assets/betterend/shaders/material/wave_floor.vert index 5b7c4ecf..d91ec974 100644 --- a/src/main/resources/assets/betterend/shaders/material/wave_floor.vert +++ b/src/main/resources/assets/betterend/shaders/material/wave_floor.vert @@ -1,27 +1,27 @@ -#include frex:shaders/api/vertex.glsl -#include frex:shaders/api/world.glsl -#include frex:shaders/lib/math.glsl -#include frex:shaders/lib/noise/noise4d.glsl - -/****************************************************** - Based on "GPU-Generated Procedural Wind Animations for Trees" - by Renaldas Zioma in GPU Gems 3, 2007 - https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees - - Remake of canvas default shader for the Nether -******************************************************/ - -#define NOISE_SCALE 0.125 - -void frx_startVertex(inout frx_VertexData data) { - #ifdef ANIMATED_FOLIAGE - float t = frx_renderSeconds() * 0.05; - - vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * NOISE_SCALE; - float wind = snoise(vec4(pos, t)) * 0.1; - wind *= 1 - data.spriteUV.y; - - data.vertex.x += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; - data.vertex.z += sin(t * 19) * wind; - #endif -} +#include frex:shaders/api/vertex.glsl +#include frex:shaders/api/world.glsl +#include frex:shaders/lib/math.glsl +#include frex:shaders/lib/noise/noise4d.glsl + +/****************************************************** + Based on "GPU-Generated Procedural Wind Animations for Trees" + by Renaldas Zioma in GPU Gems 3, 2007 + https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees + + Remake of canvas default shader for the Nether +******************************************************/ + +#define NOISE_SCALE 0.125 + +void frx_startVertex(inout frx_VertexData data) { + #ifdef ANIMATED_FOLIAGE + float t = frx_renderSeconds() * 0.05; + + vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * NOISE_SCALE; + float wind = snoise(vec4(pos, t)) * 0.1; + wind *= 1 - data.spriteUV.y; + + data.vertex.x += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; + data.vertex.z += sin(t * 19) * wind; + #endif +} diff --git a/src/main/resources/assets/betterend/shaders/material/wave_large.vert b/src/main/resources/assets/betterend/shaders/material/wave_large.vert index c2d2019e..9d30934c 100644 --- a/src/main/resources/assets/betterend/shaders/material/wave_large.vert +++ b/src/main/resources/assets/betterend/shaders/material/wave_large.vert @@ -1,24 +1,24 @@ -#include frex:shaders/api/vertex.glsl -#include frex:shaders/api/world.glsl -#include frex:shaders/lib/math.glsl -#include frex:shaders/lib/noise/noise4d.glsl - -/****************************************************** - Based on "GPU-Generated Procedural Wind Animations for Trees" - by Renaldas Zioma in GPU Gems 3, 2007 - https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees - - Remake of canvas default shader for the Nether -******************************************************/ - -void frx_startVertex(inout frx_VertexData data) { - #ifdef ANIMATED_FOLIAGE - float t = frx_renderSeconds() * 0.05; - - vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * 0.0625; - float wind = snoise(vec4(pos, t)) * 0.25; - - data.vertex.x += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; - data.vertex.z += sin(t * 19) * wind; - #endif -} +#include frex:shaders/api/vertex.glsl +#include frex:shaders/api/world.glsl +#include frex:shaders/lib/math.glsl +#include frex:shaders/lib/noise/noise4d.glsl + +/****************************************************** + Based on "GPU-Generated Procedural Wind Animations for Trees" + by Renaldas Zioma in GPU Gems 3, 2007 + https://developer.nvidia.com/gpugems/gpugems3/part-i-geometry/chapter-6-gpu-generated-procedural-wind-animations-trees + + Remake of canvas default shader for the Nether +******************************************************/ + +void frx_startVertex(inout frx_VertexData data) { + #ifdef ANIMATED_FOLIAGE + float t = frx_renderSeconds() * 0.05; + + vec3 pos = (data.vertex.xyz + frx_modelOriginWorldPos()) * 0.0625; + float wind = snoise(vec4(pos, t)) * 0.25; + + data.vertex.x += (cos(t) * cos(t * 3) * cos(t * 5) * cos(t * 7) + sin(t * 25)) * wind; + data.vertex.z += sin(t * 19) * wind; + #endif +} diff --git a/src/main/resources/assets/betterend/sounds/entity/shadow_walker/shadow_walker_1.ogg b/src/main/resources/assets/betterend/sounds/entity/shadow_walker/shadow_walker_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..154a25f946fa03167b10174637935346a3dad089 GIT binary patch literal 103524 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 L{*jje&X-E-56 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/sounds/entity/shadow_walker/shadow_walker_damage.ogg b/src/main/resources/assets/betterend/sounds/entity/shadow_walker/shadow_walker_damage.ogg new file mode 100644 index 0000000000000000000000000000000000000000..bf6bffcf8d4fb22e21029b34accd06681231ef2f GIT binary patch literal 26038 zcmce;by%D|*DpF0D5a%PC|(!uEh%!26t(TySo+}++l!W zm^1Ww-tYVNKG(JP`RnA$gsj}j%AJ+pT3N|tP_nR41v~=$8`PfulL>YcyFsBqakY0e zwsLwXdi3tczg2cn|7IFdlpb3CS9oZNf~0=S8W-RyApX}ti~0{I7Gwo2tIw9~N{$v( zHde+OfB93%P;qerxj4Bvxv3bHZ0)Q*JDNF}**P;k@WV!aBvjO7RMkX28@bq+xjLbs z|I1ABtp*C<3Gz8mo~qk_ELI%=cmV)>qGiHPFqdH}Ow48UNKKS}$aQmur6z`T6PrW= zd;XJ9@t6_-0B8VzM$G8^Z5itk0SjV=Xvc2?R*L+^R2bnO*90(sU(%b{71b7j>_(XA zo;=q^M+yQUE=?Vbukw%>hf;?SBa^RWj(ya{nT}7HzkmDkl&g;_P@ZeIAVE=Z_j`V{ z;2vY`nB+6I+6h^C;IxKGMcZS2Z>JFfNanu@=HGEpA>T#vF^TC5$tMr&Lz#+F9g(d5 z85R}5A303Ghd6whD*VAJvf*)Br8Cx#FL}qg->a%As3U`mzNV|$tgFkctB-bSux_J| zc4M&aT(CYg*oZjf-+1k_3Vn!whfak8_(mg;yup4Qk9Fymh{ z#plZunOj#_Wz<`i)!PnMvkq2c{jGwWX0(U50erJcFZzE)bM0ia|9cd->|+LqBW2m^ zK-TL(`(A~%*O3+DuY~&m$T<~PVeNM0`QXIU>m-bfADrLyC&~|B$m9HH5+0@<01yX~ zbvuytBc-9jHtEQ#=_E4iq%eyV#e+ot&mrJ1UXTN!&N5H7_J6`1YxGwv{z$gOxli6= z{nHb<K(LRr*-^`LFZTN0?OLc&n!{N?Y+sQ`eW7k^RwpX4u;|3Ps21ombIDoSGhGr|AS90&Z~II{jYTDfXkg$dT-GajXL zp7EFOKk_K366lW;xJ(k7slL&lSRoK+kME=hjgM2#8qcF*X6l@XzKmq`~t=iTL!i#rQmK~JQ zmSuu`C){E(#ZQt(MiYeNAg98}>EyJc z0~Lk&t>)@y+Jx%r^=YLn-0Irf%@tVMkCAWxH~4=qtsho1OS2x}noct7t3Z+pyk==7 z16;F7W{uSVfIkWbz#s5(KpZJT6n{nl;42cqNICUZu`0ZLA8n$YP9IL&UoAY!W2BvJ zkv_(Q)DX*bNE-da$_IE#hWukQmZ(Mc?EwVh(g6Q%2U?j);nDMV<2>p~8(PUl9@#r- zMWv<84;;^hk~=jP*vC0On&eL{+EEX%VhjWn@23cK%!1)l#fY7;r|~%`2$0N-Kj>hNRz}PE5k&W zC@m{pQjjPkQ(ia2#Z-bcSagN88ajgo1v5IJw8SYLP&oiliHd>zJj?w%E(!qPORP$y z0ECQJnyDw#Df)E*zR8GyC9X<15JFWu!`z+f^g=~8$#_Tr!dNH^+|G1LROv}Ynq_34 z56zGUv4_|x8fg_xA_W)#fbTz108~Gv;)XG$zC3-djR`1t1Ry5st^Q}&Y)JHvzI;Ea zrY;x%uOO0;D=Q;%c`ao|Y8+Bp$Y-U@;YB46!qU_HE0tN7|CS00U=0%+Addd#NAzbE z9zre4K3M=25>&v))TUUHeZ)cdl24clU*G`%oNGug>60W0BabN^AQtJg5$7kGypXjj zmkb3$3JRulLSC4R$jFq`eFyfCCC00OKAJ>IFc#Jk=gVdV#;SmTQb~ds)P*y~kt*pb zva)PF#DzSCiHXKPfXK1RmUnA`5+`O7bt0-}7z>@bdNe?z!vYY~$f};qX8>`_&j5f> zrIAZeLSEHR=oBr%K$rBCx`)bH z5&7EcPmrPsQc-HKJq3x8g-CHl0_h8FVZn?v_J~7Oj}Mi zz#bhC5(?C&5hV{|;Pm(m@RzN02uUia`8~e&R}M`m04&Lek^Z~1%M=nLbI4Wg!5>Wg zi?9)iza%5ce?JIPmfg*CdZ_YHFE?>Q0OOw)NRp}0>E9N}rz*1lvU;e81n0jkkd={u z{ilz=9jVA-{ucwr!bH4>ddd%FNP!e4{%!lWBjjju6Om=PK`O|Oko=Gdo+PsD!4G&y zsDqGg|K=W&Cv*>$|0VGxF{%Hp_rM<6>_7D+F?0Xv2+4pB$r&>jIiE|pxS^f^j_{W&)AongeD!WI-b`(nuhhU}Xm)XMnDD zLdOR9c>DnpDmq9s5(h>;2vwG?o6uxfqGwEo5eZ4_p{i}FAjVuIOhLezbR>X>@T*&8Q(Yp*rNq{j)akpEN~_jG$ew=l5&a5oHf>)Sv_Q@ zJ4-sCs+n|9C9+fR&usO?Af!E|LV{C6h8K8O$`1Hg-z}*=sg)gW8aesn? z0oL*bM!P*)j$5h|O!6uc5=SNiZUNj2>F0G?n68%SeC{ZJ4V^z00N_9fDzBOupkkma zBz6kD(| z5=vB00GuzVxdX&e@QM2X{-{A{On`5dKgWQ2XlR>wTu-r{_69jkSfK)51odIXg=%5p zy(|sLGZqAB>3!OFK)<5v2o%{N8rN&>Fg6|8l zk*gLmJOUusm-y#YuhY{6qOoIeVqe7J#^WWtOvESn$D*V8;{g0k(L+Pc&7<=>H&AKc znFbYfZKBb=r$ZWV@xM&aUika_|IIzn{{H{$#>EN$76Bf1;}4tqvJYTgd~@VxTnB+j zL?9v%h)e_`0D-W`Jk+8IE?l;Nzqakg$d^ecu_W+Z^*xE%5PTj^oU8m9SeGLF^(&d) zeG9EMg0f50uBy#WuwQ;Y$V((Mc%RY0iU8{6xBto$3w*CdW7b=hy$^{UvdgAiJ?CE5 z%bfHb;u(p)7xH9ijhI-jq;B$OI&w3!>JQqUV8#5sF9h)K7-g>TA)W1jv$g9}eDrhl z5pHt<*$N54dbiFXqU$$%DUjCNu+XOds#EV6dJXKs9MGgt*DZtRcJzVWGTc>9V5XU^ ztPx6(*|xC&)2TPtO-X|4<*&w^`g-=djOhH7JNnst3yP`7U3WhocUyVeP>-3hd^xx5 zy~`4{jBjn38?v-)i{B*bLm}nCs9dCM!kC`=$ok$p5d~0D)AEew!Z)g|JWillYQcfz zF@Tv7VD%kE9Boa&MLa9MmsNUgfJUif3&3KIo`y9DR|)^ikViodb-s;aJ0_W;JoRY9C%R? z)j2OR;1~YKbqw#K1S9@33S68i{l=as_~oM2OBneFYuA*oi(d0lNr6;s_Dd3^hCl;o zBms;;0fy;uWc2*`#z#20K6#e|M%A07dGvee&9BD0yX=rxa~WQAy@G^i4LfP$Qar#5 zdxX$}hF%*+-e zT%NNqJFD$mm#hzc_cO+1^$sWOCG%ohb@@(n$0U!>M&$+%GrPnt!4Wz4o7EPl-kc2C_53CtXka{+(`<&r<&PL z{F8a+t7o>gBCW?C%Y{c>99LF~^?OklT|9D_|M;E9}A zoA7@k3fZGPUXKRnOC=!?kx2!#^G((&6l(xhQviikYZH1p960w0XIt@OZvR`q3v@|u z_%Q-H>GOzcB$WPxTliO4$*YDb1)ln2gE>83Jq<%1wX7_Tqp>^;hbs3 z!mN{5@27Se6X(|-dApt50Exir7M>0bpH0;2k8($cDqmen5o5rfm)Y{!KE~NS^nuB^ zUf>0dzw2@+8Qs8B0PaTG?{!?bUtS3~d`%kSO5aj<@%DCIj2MKB@o7p~!}i+Y@r*e6 z>7N>IXny)7*I^WcU0txHH7>55IlCK2f~M?Drr*ZfO(rt5ueIL3;ls(XU8mF2Z6%kn zqbD&0U)?o<_t?1(*1f)SX_LLjlx^gghc$9?<9^~DUp4O=ciP0^8Jy*2D%|clq8URR z_d+J6BK5gSjADb^Tvt`KFYes*X+PmK^@}yb28D5*&EhX1A30Rv7U;@^R)&)YCa*-` zy~pP)q8?lFcfR^p8CDrwnasq7ONhPa=30iA3&-s^#qGs7fm!0t6}a4j2iR8;8={2s zR1yY6dW-J5$sO8k7Ly1PVXC{`FItU|yGhXeF{+s7967asw?TqQ{or$}9;-I0#UaXH z8r3(4yw0BGqXjbxi@u682B3DKZyq%i!xmgaC0MEp?V_)|R;|6h``#~bnDYmYQNq(# z1VFQtGB!pkFmWqqi~6&DvdGyz(b0(Tn{js4BW?A0;|+t(4=>V&XD?&F3uy&+<|;M!#Bz?#H8hX_dY3Db%O%<4I66%;#(D-g;WYvP3CuZK1=jmo;fa$w(k*^eOaM)fF~OGi5Ge}$MqC&aFrcx94oKgHR@4;!glh8FCGzMALw7QQpl zei|Z+eNK8%nD+Vby@e-vB7Va=idDPIm3g!0&^*VE_BI1jtEk+VkrFtUN z(zE1}K)21z!De%t^b0z7_a^^=EQ*nvU*DQsj%B1Zmu7WT^{1 zrSPmOtn`^g%yp&HKFCRV3(D3JzkOfn(#O#ZA8e>wcSEEWeO-*Kl>-lgNBQd3vUcJK_ro zXo~3#>=SMH5sSkXll<#XEakxLd8SQ#29qq*p?9IJ;@$wXFoBwVD(ksY6YDeROCiRv zdjuZ2AH)Hv%*cHg%pmCSH+3bci8grY^WxsXP|c?uXW{g~Wxs0ELA4flrm5LQ!kqPH zO@M^5wF}`40SU?uExM)xom~!n^yeif`%X+ei0VE_T)*!3pLg=QLg_ zvm>i)@o`y78n^F$kPoa7-5kI_Xzq>Af$XO{D+tS9A%Z;i)Dbg|xPe-rB(dVenQMmfVQC3nH9Rj))`B#HB796ZEv{ks=YJrLm#X$i{M>*@?$5~UW{v3!5o>v-gR!` z)egPN%lYG|OlNmX$a3snQA_Ic^e{Vt*aS6k*Mjz{5V>FS=VcD8ajxtPfnlD?%&558 z&0DXy5ZQT)V0Kqy&rX6L$L@E@(3ubL)SQeD7k5eO{bDkWdH);CBT|NnPE5SOO zm#(V%(yaQ~mYdzRm7d*akC|3iS1d<8fW$AaKAJf5ZmtTi90;)B_72Zkg2ch<&(b$K zR8L(!mwmk^-?@J{^!DyZ4^2F{Y1#Xbza+NeQ>4-!`sum!t=YGn-y?PM5y6FhxlK;o zpiBGG>;oO*YPLG^+qUunKX|jqt}_Fg!?ehcEOT#b_1$fq>5aS3496wq7zsY9Vb0a( z^};SrC25z9X4^+($0NG*z5>pp1B+UBEuXc(P}}{jSl*N24Ba!uBy+nag!}b^(6gMw zRY(ZnjWuwiJevrR$5Y$<+0N{=45$uNy(qDVZ$S<+uPdSb(;Ygs-Ae! z(a`Se?+2!t?Oo}%fbaI)cJXS8Vr!}Z%5DrwfPui$7i+r9(2^Pm8f>sZZQ zzn`Dw2q-^&{!`+=jbjOr8OpVhYRq{~bbar(o`E(1m zq-Aupe{#|};g*%0pvS|6SAE8q!N zf}!>O;Q`T=Fb)v|)2o>cTBqT|?c=k?trp@UT)$^*Iq#G1Bb(=q7}bU8W;XJKMxd^z zt-4oNIiIeQ79Z6OyuJFw!HIp|l`0lE^DPxV)f{1txM<U&LjTOWbOB-m`Ff6 zT-PWnuZ4Y?b~7#-0{d$Ae1P-EYPrJ ze%)YX_}p%Q*uF^$e)l`f3w|m@<5cJU{85@ut&ZYGtcHX9TslKeg`+6w567r8st_gz!@mD9SD_bgQCL?A;8mmTrAaA5UA|9e1wOzhP|x8WkBedsxtOGg2!0 z=2eFYxBEb2Su##u&&74(ynbT7P2Z~N0uh{-f8Sh}Kap2mTsQ7px&5I%&F`nkxn^pE9~>;#~iI2=Q=PpuqC3p5X7{ zgD(Q%ia_`w5Z(wxI09ka-tQes2z=_|CI6JJ_Qs(hp2G9$Q}Y`YMugJFo%@h9W}snJ zGc2}uXLP-BM%?YoAU%6!@+sN3&jEyoXB`JUgLb=B(JdLgskXzP+Po%nKYhN6c%*3G z*oglPh4`}=0C(*Tk>~*+C8TGIT&UgaV`-@@?K6KJ!XYZ%0?ciow>|y+Z?9O0%!{KU zZILFMe1@yhP|=}Z#}K*^%HTra4yDGoP^LEsknuhDo?Jhtg&tW=i2f3|r=`F5bk&S` zF1FpE*A%O+S4)m%?%lZ$j+>EV=T{fQ6XRFG`^z2;s_SO=i z2Admo)VrNuuA_|fvm!T?*{$`tGxV_=T=z({U<%ftr)X;MeNU4jS~9DY_42Z-bDwhw z%o@W*5&8nsvCMrqb$nGZTXE)%AI^3$$-Uo>a5}#ez2&Id+^9)7KId76Ts0@`j+`7j zrBFJ8@hDk+yl-X^@LNq7zsZMa*ij|LJ6hW_9{gw{Q6A!fEHZh8^Le0Z<-%g8Rb9DkBnd3$VDvcF04{u1uDn##joJzcXS;e(j! zlzCK;IjT5)oV_Feq>W8mU@#yQ}fD+2@$A5cE*1r96x3Xvojalbsb^J|RY-|8)0)UkY^?u2 z=~C~wvs=nhEX9u%M)uQ_9rfyMZhc3Xz^DMq$LIh-e0S8XbyU5;+hi%!wKpZ|>MUpp zSZkS=x}z7zubGXV-c84~+J5EBY|S;E<$@O{lZX0J#+)nMJJ>BggDN0Mi?WJM?qQ;= z1Pv#ktCu-%XjC6}Dex#NF!`-KjMaJYC`K zJ)dv|VU!ux~50JW&x==Y#mV-b}Bf z1uA|dbskk8UW>N33~u6DOkIYrS3dL644hS$=&U|tDBjetpGaWmG)i ze0!dv6AIbY#Zw z*xa!)V;Tk@g?U?&YMicxb(Yd~w$98a+`#Weh0YFZ+!eYvmP@F>FskBaJM^4piARJ0 zg9YzUpok{czQpe=?ijZTi|7}_5FbXagL`c<;a=Rz$>^%!_UczkJ_xR8gr491+49gb zxN{BSf`yJ>*lzjD40y%WXu$D7=!={PCV==3@csGs>FaM-D6jD=`*qhmE4oM8qlBY* zOJn2!C{8Ao%<6^o>gE7B@y-Zo80|EuDz9QmYy$;OXysw}lDAMgAI zJdzop6wj`3vackrw3-7uCRf1kpV5rAZR@mkbl@d)=tW0QrR1qUTgYzElRZqxlh)&fZP>e6bE`!Pd? zr+4m;*ve3ID9Gc!%&3PqX3sJtt{<^)BFKN^KpHSM zva=p#izusw9Nzc9f`UX|^Spc}Todi)N}eR>L#9(l6>%_W&NRA`!Hr!I^-_ofq`j@O z5ItFkCoOvGU4{Ji0e<43tg=_RE94NA>?;qB!ux&h)OPKm7i;Obq&f#%Igs=7Q9N=u zYA~|-eYA8v%iFVy;!o)Pvrw3*{U7he35Hy{(CGW>DIQ;*n}Wz-H@PIZ zfdQi^##k`c%MQf@ou@JHLE1$twufzJjIPE@w}vfYbf+~b*qY0yRB^r^@zR(2%(cC8 z=J878k_RtbJFLX~6qe7Rb@!S=kZJME^PjYCfho&}ce)jXG3T&lNS;p{os)Z&Pi%J% zMl=5Rj9vFGFg&-3)24y&vBkb^SI5-(t?-&%0?jdMe!KPw-z=42oUlmIDmmmZVz>Iq z6p`{9`_u^z6tNq!lhwhFSMzvF?=p{Ja~jE?cwnp0{;yc{nVF&xtmd!}Mu>egQiY8Z zGj1=>I0#yqVgH_#j9@d4<(tjBA^M+Rw|5sg9$TKw;q4R2@OZLpE9V zMln&({P$}g)*w2+S1ijW=qt*+v62i_X zhQ`(CC|Qx|#U_`D>i3J+5!U;ZDT>8*)mVpf4B2{%1lou{k`xLwh*QSILkvyL80QxC zvk&it+<0Ei^|NJ74(IT4cI}dLkOtF_?wj+Bdaw=lsg=nxol7Aie_&lLpQKUhO`t>* zjV8>2ryb5GCf-=MPeAOY^2|XudVJpO+#l7a)v4Ok%Q6eqtm~c}xUGB-93l4MQ0!&t zQGTrgYpU|tb4%nWt03H8@DskOX%iTd={xA%gC9sZ?bfsu7}G(t!-%(p0|#iSRp6#J zYc|%kSxR^J6au(@;A1ntEiVW5w)rygRcavLz3swwZwZNFW92+&4IUa{%er~l3cX(g ztd;CeGN(>cTzvbgS~PCkZ3_11(-0n7p3X6JcEflK2XTR`VDeJ;^*w>qF}S^2t}pZx zW|>^w-RbOCXmHqax=0#{K(FVn;jPy$c3yipuM$Ym>uVU}l^JgZKb^+?Czp3w;aL5M zo>$@<)(6MJrDwlnJ)Nt#*CQ&kKUbq2W(o?=U~t!fYsO!!jj9s2?m`#HGs)9VTe*A$ zIIzrXRCh}ZrhCXY(nirJ1NhEC1F1AJTzERDlG5#HzG+MS@ySe=^-GKrHX^~I7it&d zLxt{beD6c#!hG-U8YU%aB%BNuXQ~;--DXA`{RG@z!RqVpmqk4*fKqzT{o--o9=<*N zLYNp*IB#NeEV|h2G@WY2nStV@r&ZPDIxs^_WDN*L%bE;8@yE#xY5w`-+m~@S@0p#9 zDUkmF_BVEQ^&}F&qd+?aXIaA4o3~ev#XQ5Ghe9!b+wEIblV-K#)ZL-{-nu>BtF?=> z?t=}0LUyw^_J6gDR{!31d+{hMKYI5uJcVLuXX_J?3@Ew6i^?~s>t_^+zeV+*GY-Z3Y?uZff9mHr(Rv|l*#xYvI3RbaKX^hx zJ_W^8p*A}*pZiHBX3Xt=a%|zd?qaE{k*(xWBNBI^aD9^*Om>c8fCtWU%~}*=lV0J)5?1tD<|$jQ6mj{migX6yHR%An$r+P#<>jmRt zhO{=F+hsS;TwOas${mH<`a-C}*BNWQH^v^N(N`ZjHZX2Wj46=?n@_4uk#>FWQ5V@$0jg+Vc(Rlq)*qbA62Siqvn0gL&!v(v2EQ)Ms&(Pm-&H~NO5^o_cBZ(o)6V-1Cr7Wv zOwoct7kehAI@w)m&yrCdIoYcy(F=Ex6+->0In1{NPtsJ_dQ!J}oMRq+wDdzJoukYiz~CeKNi2JZOA&4=arK9%65_rpwV&8Su$_dWmRVq5%yq zz3DaC^|sy7LhebGP$0=PCFydzQnb>vqAY2ic|+%mUnR%HW(+S9Vv0s<&kHzpXOo4j zQtHG$(3Au|t*h%#DS~v~iRgNzU0Bb~JQrXIB=bl2=9B&2F6!S2TXj7mtzOs`xmu_ulN?k7dm5>&}*_=X}OM-Z*6b z_fm-Bf1k%Z+(3!K3AaI>$9N$Sb_j$&0)af0u}2`nkmoVkIz9tH5&PS12YcCQRZlhc z@Cb*WW$G1R9)XEo?JqB>Av_itqUNt=w`Z=)6 zCQa~tVk8Rit*lZhvpQ!2;G3VsRbi)?%+KPt#y-4GK^wEou2M1Z7;}z@vac2REgkdM zM+%hrr-S5&cL68+ZwAUKPvWr+bu2<*>(2QYN`l3A;HB$Yp3>hiF;erMtEu0@6_cf1 ziWoK@MP9FoTPvADKw07POGW&Cx`vnRGu+8@+;u^#ZC~1NOyIwW?mkvYv_Iee1Mzlm zE%3^FCCE0%afmMqW1*brT)W}sB(ps7eQ^kUC+1KR&#XL((YQvXWFiR`-{6Uf^(e^=55z^WXmbz z!*}%Bdr2AB=i`Vr?1r4ZQyq9z#YIwr5Akj5B;w+;Ma{(X{@b~U1KYAyTEV9KN(~B( z_BJa|g^G>RPDvM1lm4R14dIJpRpxwgsk(@;n1G$jWXA{kX}2J$gxMER&#%LWXd&XcbZeZE`pMZO%3Kd> zNr?I_L`P1+XILZBHfq0*-1QIYb0}t@ZU8B<-cJlvJpiuw_keWHpPGpgMW*Fybrfpo zD42l!B>qqqX;@vUaJMtq)1`Lq<~hBAt83Kf4Z@?t>Ejea21wCecBpyCwpHtqr+wGR z(bSY@l@`gLtRccP+T%rLZi+ODozSN*onraXQ$CP+E_e6*vb|59CqLxseT#27wz|Q^ zSL=&65q$QG&I}u};ca2aexE&2&#-Wp-j*Y$By|rqX8{!$W$yl&d2h1&qh+ogqKRQ} zg?GflQoYn#jGwDn$%oNXDYWyZxche^53c$Fe0W!=FE-gZIccV%-GaQ-vnJM%s9$<{ z*vSKHiCw6PbKvMt?qP&AWS^c13wqC$#(V0XqJ7J|72N{+PPoJy$YlZym(0JB)vt!C z^-}BzsC3vPq86reBX_e zM(GY*C&?mVgRz_XB zXFnCZ6cIlU+*mJrc`6E#9FJ9Lk2u}*o5{Rn6U!DH9)+BJ-Gz$nhdl*o8%cLGg-k#F zeAlP4Zo16Yl;PyNd}A`MaIiMsiLmxft#p@A-Au2fH(rtHg%x`)qsez=qnX7>gm5(U zc=L-Hm@eM1Wi(1Xs|;66@Q$1Y_1RqczTQFG+F3Td5J|vD%gEk!YY@KUCK1G+lS*zk zLB#fazLrP0KH}~h{dv?g0`)$icXDS>Z}eu_AvNSblwg`;!LpBhA$*gPSd;Gp_R_{Y z5`R=V2e>a0mMHg8tD&4>ki~EKkjAHcOS*g%G5d-xB*V|ZD=V5;;;kXq?MEk`c>&K3 zF!y>bqRrk9e7lDc#CzL}ZD5l6Eafb>h>Zu30_@p?HPz*l08Yl)L?4UkeX|q;WRyFQ zn_!>h;lb71&D>!QbARD+7iI1CK((Ge)HQ7ShW%VRtzz)@u;4g9u_7hxc zx&V6XvnoV@RtdgWGOhlkR>kOky74Mc%QuQM`3iS9=cgVwB4iy zrt_Y99!7hmP)ErfQCfzGvf0^RE)EptHU=k`)Ag#p;6#ZBM{3JtufGs_F85`O6D!zTk?zHZCtMl%n*i@usTX}eSm*O>cqbu2} zMw7(7`uIJICUyl1${YY6?Z|hpwO?cE#kPq~2bL^0pFXoi1p%8|?^wr2mFAlc*kMPS zl;n?bFYJiWx>`k(wq+O`ghejcGB4@dZ3(#k<`O{BbZao9>g?>#sRvM)1&lr3nfit= zt_4U=0fGc$zA2_lqNKb_)G2vP@CD8P>DON+bkEeuK*SNx=AiUcsrPk>-kH9I<4~f# zb3fL3zsa)bmv9JaydP|nt)Rf7<_m4eRjyD63b6iAin-(4MDARr0%j9mK zs6dw7dW+qQZzv3UHH-5R9V|g}T=E@tqW7XB+7!s2D3+!OQ%;H*CQ#1kWhTJgx4w3a z!! zvh+7q7(g(~%b2>ceazCX1E)TE)vNWcRD}+Mskx+tz1)ZnZ^sr$lsvreLYY(BJJ_-? zwR?Sx><0%rwY&>(g_pjIIH?($2O9Dn#h^H0oxJi0VXm6#HK~m|gm}(Kvv%(bl$dG_+@JfM`dtw} zd!uDkc;FLx3$a?tKVC$Od@c%x15qh?#Gj2(iPpZNNfv1Yc)PBqaHeMkJ_e{#0K^>v zm;nCR$RoZ$(%%5lPQJZhZ_wN;g|CnUc6GKw`A6cCnnH>o%rdtphq@-|;h6omVetDg zqRCFtFO%RR2 z`s(H_<-$(!rH`dkI{dZ3Wknk9&3)H#lIO=arQ12?^qwuODa38A| z4r&&`DI&C&>0G2;Z(Us`+evoe&ZhR=pL8+uF}%PBd%1P!e#-|CK`~RB;*4`E-$=NXz83M568IY}D(s@<&nvOa-e$A`P3rjgkb;%xVgJ$vlN^_OUmqs!2&K|9p#(Momb= z=%pUVep}!$I+{#))xJUPcS7c`Z!oON{>Mem&Vs?I(uSEX4zSX{B*7t^woJJn6>kDj z*uvHs=LRP4dd3@fHp2B0v&bE4ohRiy?74t8>|$rsA=B|WCf*G3@@EP5PV_BUb}Rb;o}*)3J46{a{)&1F})3O>5yEw)xm8 zKE$7-03*0vw>lc(z{?2!YVzY??i_)OF~@h8<&Zt)vCW(-zY3=KVP3zAmtP9hSoY$d z`kE5(gKy`FLz1)A5$X)CZ2XsW&C_ad8vb?+3ViIOWnu4PH;x$;i{Q0B4x{pXCaTQGd*9UKNS>5dy4*P z>N}JF)FZomClXDTs3vGdMF8m!UUauIW@5laUD=-&GKPUao;3+=b}T`zG%6!ZY{4S3 z$nAPnq$=S-Na4~(HCTn;HdSN@Z|YL?C!?uPxZtFtWRX? zH$wDQYI3}$O4kF;yT`^gdL!n$Dk|zqv1Lnj;uM^jvsbhO+~N-5Y5IMuK>J@5Y3g^4 zHpFL?8QBpp3xpT|JnB1q*X@-y*+X0@tG(&}r=cUTsr#*oQ%iq(&(*D;dERe#2! zb{T&oVB)fuqJD%@BG`-kk%hUp7ZW7`DCU*viD_=h{TS|Br??^=FH=?a@vkbH%q(0= z${XwZN78@PY}?>w%HDrkRp7-Dz6pCvzO85ZiB+o%C~vOdL4Ko0tzNf*O&)hgmzO^m zZ>-R+n_tFW%p*#-&m*&9))A{t;C{Y#V9!R`Xj9CudZn;&sIEPj!ReFSIh4gr=DZ=} zp5s{`^V}+xJGGmTb+{GOz5Z;(IIH0vqQ$U0Xid*~g+d|H_eY4K{;xX zr<;Di`oDeTzu`368zuOuowrZ^#rW`vGcS;mk0pvQ4||EL&hd?*{-W?g0SeVExB972 zTqpoOioEJt#0A+O)B1Oe{#&_RQBCB|(p*o}Q*{3Om#?pJOeQQbmd=glG4%2EcE7qj zSHJDf0#vxh1pr#O==xrltD!$v$O86X7QA*dXE&^o7?n=}zaEq8?^$E?noq%_SiSi#}pk}=XdT( zdR|ay5NWrSs+1e(-`<)=ib2c&+xo22<%&%@w)@?Pe~NFpblV1zlGcUNKk?R---0)- z&@5_-_T2qz0{ct9g20V-m8n(MI!A7e0tv+0{u2kQdmeh*`_B0z?b)%||G%i7L-*OR z#cgG>Ikb#zyH66q{*E__aGbCxyml($YPE6 z5Rc|&5#)C5eTJC23#Z6q)IBt9sb1o?AEVE|xv$mvUe2WPv3t$Ce%!D(<&9}SplK-wUF&^q!EKqC4fzk#nL~U`KEAt(_6)`qyZt)PyJzkb^;y?U_E+|R@GLc0HZV?|L*PVk)QA`%aA;{{t1BBi^ z%pYlCt-RR7HNPj;e3;&m`;_%v`E=%w+1)-{o0smC4hGf`iGBng)w{iw(z=q7Yb0rA zuNRLT1AG8V1puBoJiv%Y{@Ls8@f_w7lT+&Bv7^@AlF>c&-$Ti1_pkj+=S!?+fyNzd zqx-pee&9HNTc5-GzSq+w<0u-J>&VgV07H!ept4poH}mTfk+18BH2_eT(a+*_XnpR* z)?`QW8lfqG(tUvE?0X~{YcuXvUhslu05;fQsakbPL`eYg%K3pOOI{my+0~VjJTVBX z%)SR`v_oOwlc0G-qx&AjIJel<*6_1M5;XeVO`ISamZ#UFz-ttCdQ49$jU-G{CZ9}$ zp5=EN&OiMO_&*1aCk$fsck8Q|t5d3~lV%cK=MQiHp014_zWm+b&(Bw}qGHNFY~bkY zOXGe#zS_;5-7Q7?`yZ@b>3(EeXmOceqEDofwEt?3^D_`zSnn!GXGq&d)>-P6CdfDQ zy^2X>XjbJ{2U8XsuY1)IX2KXom!L!?_!mwiYirIIhYNn-6g>8m;SZNsvi9=?(+|JS z1aINI^;b_PSn7BGYZd{&&2xu-`u=^S{#*DU7mkbb`&kwD`FC7tp84^v|0N;cg)w~) z#9u|HrgH4a^=$swzSe*DE#89PkB@cQW$E==Yv}$H8PliV(?j;dT)EX1TY0&fDc|-+`?Ej zC->v_cpq#e-`+f4Vd*}wy&UWFP;&hJ^Yr!GTCtY_O(KW!(&6{sZ+Yi<_P8%wXR`K1 zIm6CI%&r+rGN9&afnwWp-ZGzi_oW*(0MKx1LJQDXaWyt8JGjzhtFXS zJtMLK@Q{+Klu}ih1Wu9^d(JJFI2RUKUOJK}Dy*&$3D<@*fKe zz4Y0Aj)O`rmR+qc{;73dU^eQ!lyMmo#UAW6Hkc0ocB4HW|Hm(RRmrS-NJ`{+fBG-X zKF=$(uvNq9QM~(GXcguadvW39!MiT(fq1B4_t;^~US_l3%2!ei8W4-{pjDqmfA==y z9BQ;ja?9UA>Q7>>xQ?UKul2I%uVhm=J8CZ>PTG}x%$>|%`LIi0*-G*ckAm-38~&~T zO}BsVXQyVa`A!~?J6^W8OY?2C7n}Y`cdI#*^A$zh$C~bSq^$D;XJ*R2?C-&szoW)O zC#F}t`EcfsL*aw!W|g1J=zVsxIR^ba^~29b*{8m}k8c0ImdKtvmM3dv{O%LthF^@H zO?1ZHF~N7oj>G3Q)2;1>VEVGE+f6a9ELn+`p#dzgE;ds zNp>s!%S;jdL-v7nt&PC?pfDwT6Xvo;7;0#}zxi|2N@*(@cii~AjvbPw=##OzpDmI4 zov?k;p^}^Vc@azqESe4evs;fHBw2~>9GNdWX;J7_zO=D)sk;`DU$Bj*7j%vx3Yp_0 zMDyX>Vuf|n>8xDUXOyP#?_Yja3itpE{#aazJ}R-X-X2d>GITcU)!Wb{2&bbH^%k9*(y^t$^XHCto-+<_?ofN_CO{X{9CW?Qb^vNX~FFaQ8k z1wMd0xVQjK0ptSEf&zN>kL;a~m0c!PtI{e}CIC=*foVPGKPu+BhBqPM!oBXdE8Y7c zd+3+3+U1gp7MzA4Jsd>FB7$9EmSmQfN8*uQZPq^f)9b7K!&fZ1iot+Xq@GQ4_GR$W zuZg9n#vJQ(Dew2m|1DhlfNC#?waSN>_UU7MyIm1l&KGkZ(R)&eC;v27RB-{<8?9OF90)LZkS^!e}h}oy} z#|>+fI@eWkPM+f~gLce@{Gz`p=Dv+~zV+XXm%)gA^$srN>`#AB|J*HUB*tbh*@Er0 z#=pjC<|&7#Ma5@Dyn88)HJ|I=KS(scYuHRDcf;?czUKp{`Lb?q{vO*n&vy952+p5* z3XC6({*^I&@@BgK-U}GGbX52wZ*m}4BCp6Tcj(#t?xZun;^Wuz;^jn49vP`C{8xnc zc!@LTsW+Sf(Bah|gLI4xISDvYW!V_onX%KhEI5>J8A*LMF1vq2aJZ!~UpWhS!|vfX zIds)BTMAA5xC$+AcLh2AJsFr5re}`x`*NBxo|c?bnFM|_9y{ONDk!t}<0!0kKstSQ z)xOuI9dGn6?e`TgA{}Y*zv}nvYlGK10)OXx6jlvvXU96-b22J2pa8!3TR=y8_Ip3J z$4#Z=)V=6iiHcYDn~!aMqmr@vKc?fe3rkpg61kfZ4cl;h#PoSiyL$|ij^OI`G@f#- z#u9r)bLkke8Ng{!28}TT0OFa=pMc?9{DDgWHH`}t0AIpht}LCE2LNi+D8Q<+s!Ho> z5)5E8{Orxqu9HdASPvBL=@kFFYt~j?4odw_!)$On{%}g!EwiN^VhU$BFQ;mhgAii% zy3@ziBRWI9_l2Wj7Tvk{w-yib%I&#+z8FqR>~15AZ|jnmLv!J)AtwNDqsf7J4O@v>$1K1tk> zKQUA0dGdR{c@eh%G3+NOB}S}kF@(JQQy8A-fa4N|n+D!?s?5gI&6S^{k=|*}Q)3=1 zQ|DzJYNuWMvoEQRb)F80v)}fBZRFmg-nbqAP2F<&lE3&xl!pg%sG9sb?ZvsaX_pWkPcKRrAAErZ7N z^6`YZKfQZBaQ*9EJUv>w1ZVmblu-_|ZT#I2<-5kG7G^y|O6KS*I`U2q;o(FqiefBK zvy-?di2=v*3-43(?OHmbft6hhE0-QgjkY{7q+H$kO_ML>BfvZNhfv@Z4^OdA(Y08q z3g!*Y<&r}Ei)Em7XxtU*1Kiq1;f`?+nz3Pe&gM^F5yAAZXo;EfFUR8V-xN33RQd_% z_vS`}SKK!|MBu$nwYaC&_Qm~lE%#~8o*U6j1?_oH2J~DH_uNWLMNto)N4YggSipV* z0Nz;Kg5G0L+wizivb=Tix58;fg7#xu-&9PH_ut2Ve%>-58rxv9bKIBRKfe1m?wm|d zk^p-@KKz*S1aP7K0h&c0@!UP-b&Xj7z6W{&+L{Y4boyFjqvu8qgj4_)V#bUMgchLD zjmFrlR}NNH5UHxFP{AaC)R6o-U=IZDBD-m$VWwJKU#H`zj*`(03oTORU@AwYk+JUm z%IFBFkKIZ>IuPGyamvS{F6hNHSoJ%}ejCNCgW$=!DH^UD{u=4FH{3Md-H{B~g24!! zWmY&Fb&Kz*_EqeA&oSfXD-I`T)6RgM062}X)8|F5ofpp`51$L=P}MeNOSvDH zZ@Z_LuNzV@t3(quxr*kn4w*j>Hhs7Q>oo6WLK*F8uc+d!59B?_I%4n9`k$h?;T(PI zIzLL(%(ki)`9h)HdE1l~1!HZ3O-AyL4N6U48S*(`#V; zryjSg^0b{25p?&5^L4L$#kxw3b?>!4ChJdDJ?4w_XTJvEY0rUo|M2>WejD33t0(2# zDQ6Y;8URUuxGTr@iLb_wn{g~&)dzjP(;}};emt)p>HgLG@91~C_(8Ic!~^Hy;j>!& zphMrD-Peol|2=#2)w-espfFhn9Q8K8pjE03askeClOir`)&fmG82se?L0Q(Kf z*$4ZIzoX_ZcSI)9SR+sVXAa*V9(Rv+_w|XjyK`DT@lhgG*$PtDO(n4R z;WbOf%0L27XJ=CY1hjn0 z|Ng%BYs6GFq0w*M6DA0E5V#Y4LYcPx*7vr+Yw_5%zqXq6w|?OYzE5*Jf&)ciI{NWT7@=;{y6 zzf6AazAf^4-~F$O)$pP)ey7=KCjqHMl}dOFXf^oR)}zZltu!AiX2!vi5x26Jrfz}{ zKFK5b?7Y!oBjl$rdokpZQJ=Hi(EVh~&B)(;=^N+wZ{!x7t2AjJ&(jFrT2fl~XPr7= zA$yK|{_%V7P#6N8@}lpc#GWrFR8_@B zsh;glk3N}o%>rof@6FT(VqNe#F2I_vYW5IjU(1ls4q_oW>a#xbq_63)%|g}o5OQA8 z9G4BqTNm0eO)!5yyx08nLXHbMnjg_G76L+E>4rVMR3)Vmx2x^rB_G~D_m=zr^wgu1 zmK$tfw~mRf$SzArB=9!?-uGLGKH9*_>vlaQqOcDBwzw9R(D`T{w`!5&e$D+`9};N9 zWSI1kJ6KIV<8JliBmtHQD2xxUL*v2#fMoY40RV9RG^PnoW3YSnr@0R+o89*uYmeqN zwmlc%UIh(6_70E>$;GNwsa8trRtRDM_MCFZHX)Q-3X|tdkSXq$^{~5ox-C+?wZO08 zX}ff&zwwqT3?^yO%r9T7({;PIe|+ATa({gMzIawX+vriT_}mb(zaOxF*8P>W%|TZ@ z9{5UJUO?K+yuEKYT_QD8$tV;h;lIy@EZyJVZe<16+`2fsmRlBok+aVl(+lvtPA$nlIeHb$VCR zg7VNQ`<&u(Qdx#3x_lcMDH7-H?afh%L^~Lg%1c6m!LwuyfyaB$Uw`n)Xx{$! z$g`4#k*xkV+j(gy=bmAB%;;aw89Vhu$z#_fkNz@IrtB3FpTA>Nd#_&OjJ`z+pe9{roFmW4~={ud))vT z8b5nqb>XuSXGN5M)?oiUJBpA@K7T~!k!#O9SF@zpT^%ND4k~Ub=J2v+SxsKD21Y+l z-btP$37eUB3c>BP_w_Z->e6+EoN)+XWSUXl2>_)e8hT zBoA|{1myZq9X;P_Ev=Mn&!7Mb&;S4c9``HcTpMh@j()=gY2EuxXfC>B-+t;hl-IxC z{pZ4x!_q(;4%MQ?3IdRR!-a^wfGxKGyAptGG%)I($tc%t3DFEux^=X97}A~eJ!x|CN)R^C^Q!(lxBY1ReRg9%jq~cJorBt zgsOTH*$YG@?cMk9vhW_FcV|cK>j0nRy6e>%Pv>2~7*7wTX4nF>)#E{*@;{f3 z>i5+T{?Q-r56`#B*Z63sfgMy7No)=K&-_HjuUdB`Pm(vxD=g}9ro~}@( zI=;+$Zx}-$!TtKCM7QR8K7wrV*X|kRkMC^{S}*m2%Cjw~-PbiuB8eulhoSSAPmoxD zK#E5pOg8oRU_3~|HBQx|f6N-5D$3>h zmXF6)+^P3VcdN|SL_Dz*4dC5of?wtD)vPH~(26#@ebSx0xrzsqCd6*&_>M-yp*EzN zKS~`n<0#y@^m*KY)y#eg`Qu7J0Tckf_dD5Cbi>{sEC&(On)jROGRm;~al|JS*Pr>f zSgR-4D`fUzWn{kezFyapryWKg6V}G=Gu?0@EmMFGpam{{A)bAWt`98$G$Z9QcJ${! z4S=%;*`+PJeGTi_gaH724M6Syh7M?s3jnx5sI)>|s!{+z)kW7oMmHB>sII)H zz47Ss7H^k(rc?{}rkn0sHPcsrJE+s1ghpr4Yeu9xv{n)Akk?uG_`28PGJ8a0!`3`w zm1u*R-o{c~?Cw=*Eh04=PVPNulyp4G@CQ_rVulF$h20;Vz4M2OBu9#H9`J0~(?T0H z2NgCci}FaH{lX^q zo~rd%!XLk9I`s*jDC7AF_Euv0VJHeD@-4l1pu!{5dpN$0CUsFPP_4La&)5roCU%F05kx3 z06Q-X$ct6>H&NY*z6;FCZRN?Ns`zd%lye2NkzqEKG}hCbXWN z&zni@`Z+r{Z&KhHN1u^qdqF~Pd<>2!)Sa9?E#_<=@I@}gN)Ppr+Xdr58~?rVwW=se~PK~KXjHh3@SWYxy=vf2hXU-z$# zL;TtDGui$eJdo2<^MZZ>qkY=cEI&K0^tGG5Jvht%wHtDD&yTsv6lTYv!s_i{0U51Z zc!_)S6GuLKcsk6}+HW7)o%Hus8_Wd??u7(2U0ub+u@&R%f0DuS}hY+k)K_t~O2><}8 zPWMEKX3So?sfLX|N0DgUUikC%in=xy|87sveX{j*WA*paV)Ucpb`&k0jPo;?Y2;ug=} zY*U+h2N;QVKE&{}^?BJkv7)|RqEg^NmK|64?l~?2f2t{@(Xr~@lJk4DV{zpME~HBafg09@Pbu?#S3`&Jhj-LaMzb+~iA{H|ugFyFk^r)#h1$oh{fpZl;N z`>(}vN}Ttfmp`^Ia$=v|6MK#9JLh?tp?{i*3B#t?0}2dOXM3f~Rx`+W8SCkCUHM2b zxr@uwmz)0fEx0%Z-k$I6S$*ymm>6CkKV|O}Oa%-ntmHKxMGdUG&4ka}iILi&9N9hj zo?cl$z)8?|Xd;=6&|weOgpfU*y_rKdndd`aZW30I%uCdi|P9A@1<>z_gO<9UJ_H7yL8q%zC@E z?q4p4wcZ2(9u>U0#1vZH3Rak?5F#Jz4po&y=exMy|Q0k zPs<-`7iBT}fLwb3fHNhhrFFS>V4i0>Km-s0L;$q{NS=bVR0T-_0002db3_U5F1xJS zb}S49e@4}Ka{CiB{Pl`s?@*uba*dxmH~LFlrdDSu2f1&o9G@#=@Z6l5V&D1gZ7=IL zpX1-{--vRRxz#@Vzxn-J1a=(0j1=XW}6UbmACJ& zi@B2ZWmsgFD|PkdHP?1+w!fcG3Ai3iqfZvp)QS~ijrQw(lpDj`9MiX#U(;x}j@&$m z<(2QQEQ#YrC|<$Kp`ZKNul)oNzUN1rM}}X2`DYKklIg0PPVY^%S|<&2iDIfOz|H&n z`#j~^aS9pz{Qci^d^~b`b|jIPD`m1yEE15j}lBW+&NuYeZUwgHd)>J(` zy?CdRRfWoHc6PS68yyaZho5}v7t9t|A3jmvY{efO+5jHPanTBS0JmZ`gAML%1|Sr! AF8}}l literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/sounds/entity/shadow_walker/shadow_walker_death.ogg b/src/main/resources/assets/betterend/sounds/entity/shadow_walker/shadow_walker_death.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b9a68e19c16b8e5ecc0d85bf86736281e4d86bcb GIT binary patch literal 60539 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

  • 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

    t?aJ=j+IHM+ zNQMJ3(!E zuEqnp32~3hOUew#;=JHuytKe_lW~@2c#7sJ#!b?UNP9)MfM1feCHs$r|ThC7Tv(i?0) zft2>AkT7zznw2RNDj1al2F18&C#5t{k#jhs!HlPaD>4P+Fab5&LRcn;MO6xibMOIa z6Nwz!vMZJ$MVZ_NL|c(Y15yj1r8k%|tXPI3j?W4+V!EwcG5v4y$UV+wV~7D00$VpD zx*pFqsyfSp2LeuGe0bSnRa5k&HNgp#nFE8shJJ#jS(;=RlI9~UE7GjU36p5INYnk$ zFtUOIY;YCW7hyQj;}IF|FJN6!qmBOvRb(-$n+bplr6xcfqztVt9W5LdLz-m+O@^VM zpFmPws;Y=GC;2?I50IS1OQa-m3JF-+OZs@XM{@J5k5TyS{Gcv3I8Ais_xoAVWyFyy zohWe}@G^iQdD$nEz|GO51ZA0I-E1@(E=mFcNu!}8MOj($aUKtW{~0%+$8|HTE2!pf$IxkGiIu8_y4RRlA`9VznNeKD z(_RvR?AYB;$WEW3LS$~M1Jvop6!p_4V-S&Er}_ObOOM(~V8Ze`RMQ*r7xj1gEwJqR z>SX|+mzN;P@IW91hJ&QUD3D}%o^wk;P!vhZW`C`ES`CJpIx!fqIRZlq0QSF=H43UBKO{b8Y-2E-YWN; zSTh8}2CWDM%Ok$SoeTYUzgu1G-yT}OB{W}MKXh#I;O3UT?uw%PneXK*>bo!OX{hODl?Vq;f-}OP)#r;;#l#A15PB_@yy;b<}$y>^1 zWAl$3u#@nzqrlP_(W zGi%VLw!H3O*}2ZxBNsZ>PA=Z@>g_MCTGSPoxb~>Ld|%U?*Y@n#+w$eE_Ey7s{*$)o zx=^7fQPTVU_|>OM=522tg@e6EHXbV(Sr$0>?eP;|)oLRH>+;H<8XjNKOwKMk-yXhi zUlaRQ{==n*XH2gw#d{C^x@gMQF^3NHKIGfKcITFN*qe$zZ#;A^aKyaz>&xc@KbNj~ zwEcu|Ldz4pOJAf)%Sfdv@;m@S7PMJhepcqRV+Zo@wivxa;HN Q&bL9RqAIv;<^wH%06nhYw*UYD literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/granite_lantern_top.png b/src/main/resources/assets/betterend/textures/block/granite_lantern_top.png new file mode 100644 index 0000000000000000000000000000000000000000..f8715e705aca1c79e621999aa83b1c7bab29b70e GIT binary patch literal 2436 zcmb_eeQeZZ9PZ5wWddQrAYjZ&C%VCU{k~qyjZ8r*I@v$&8Hdg#zYPI&8E@AwaWU-PDgF__w!JzH z!|pz9#9O`A*g{#gQbC|u3Jj)GHbP@qWmVb+Y6tXi1-2Vzg!uWL_Xyn3B1DT2qhoe0 zOc?dO4qV*Z7*~5cR7oSM=HZoT84;wQ2k>+%X}WScLS%SlH1;1;1fGF-9TB414~VzM zn($i7fw&M1kt)NpxF`jg5G}EM1U30C*M%aM=7iY^%d^~sb&EXmuk+d1a;*b_XE|}p zO6D5Xlw-kbYyHNA@v;`f)U0l|+z*tU1Eau$5rU;znq(M~7UL`{(}K*0=g^!?)5Fjh zvVsOYa1%HjXLwm)W#QjoOEdJI+d?%})-5LmP@#+zXor+-wr8TnVseA&dcag+Lo`Al zsX@cgWG19(0)zso1D+>=$TOq@fKI9qYCJ2)&)=FAV%+gTJIp5G3W6AY~i@Mj7T_TI&Guctnz%yQwf$G~m zLa2V9p+;mM8zaI|yyAu$Rj?(;Lm}}`?H*jEeJF4ke{6*bLzYDrXSI^N5D>5)d zvOFp!?RQy%j6!mpu7+tv7kD1^Wfb+I%!)bd-l6&|y_x`KJ49blin#N9#^%})^ZD=U z`d{;*{BP&5)u@|Yc-^l#&sU?>=zG-7cD4qz=X*SFH07#-DD3uu%N#k~0oDLzc@HDCFoQBpKVht-2BozjRfhI|`7}Cbd1q4NuB$Xvu zpa4?$Efx-kXmk=84Fae#47`CWqi{G~YV^8fkT>j3D5=aNwB`B3{9cQ0^1C%Ok-;3a z7u%0T=VMr4aYM8^9zJsNrMZpo&!4=mYT*18xi3&WYePYx#-2OrU~$>Lf|mNaRcn3> z6i%Pe7p-qPTe-h$|Kr8uFR`)N{SO$IKdu@&8a}o3$-bgFhYn+xBxA?+&)YuRReb8h zsfBfb?%&xq@t55XeRBWc;MeYou8UXqEI;x57iZ?~EGt@ecfq;RH3JnVzhAQ8_n)?2 zD=TmLHazLOwxjCctO-}CwU?H0Pjplq*m|vQRZ)R1mrhs_n(@kok_S(G`E+3NxOsoR zx&A&=n*Un)uBBZs*Bn2vZ}*fBqJPiCwr~F9!0eKl4T4Z!|HHPadruGUUit=i%)zEE zX*3r~J0C9Ga=2M}^|f~Qum{j?IkyJth&x_t)={~DON@z9iUA8p>&+*)yHM$N2ECkCd~_Fs8H fkcWo0o(Wv&+_d@R>HdWOKdGUvG5UJV^40$Uww^6~ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/purpur_lantern_bottom.png b/src/main/resources/assets/betterend/textures/block/purpur_lantern_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..e48dc0cf7a36061f1c1a1556aceeb94329263c0e GIT binary patch literal 2282 zcmb_eYm5_B6fSRMMP306pbmp3OZ0Z`ydR;vF6}~>*cGA3>JQyJcW%3r?R2^`v$P8; z5d(1*{-7>Fh)SYvqLD;}Kls2%Fd|WrmxlNVLHvOUn_%#r;GMoeTpl4dna-o%eCIpo zeCOWwFKu5ual)(#kw|1>TQaeXo+pRL__6f+j$bYydb+8Qe8`VP8m5KEh{%iEZ;eF8 zJ!_{sf{xUE26mk&vRsoyOHP5JBasEor2@j;Bw$REwevA{=)JuxV_PwHrJRDPLY#Ej z$<-cNzPde)S9fFGVw;GlROmMX2J z;1ue#dB0jFS}?AJ3LGDWVM=A7h3mLNua_$aw=hR?#3A{>r&zv@rBzC$>hNJ{9jA`= zgVt44Q8l+=(SEwGK)7YZcY8fdT36AC^J>BhU2fp|UG5d~sQ+BgreMT9f&$k|yKb)5 zsHHU)CLRwPqcM#u?Y!j{{rO>_>N_NX0uo~dC_upT0IF$0FraKm+TBnzAgn-B)Cv{~ z&}CpP%}a)?Q~bZcu4QNXt_iiUk#Ri-(L&h{$`Y=S&z7U5Qbt?e4^SSHwnU7jQlqwQ z8AQ~fNU#7D+0p<{Bp#ShRe{PQNmMc!g~(Fv{e+8q!zPCBSNv?bm~zxhXGo?*G>9`G zlMyojDv}0}NeiGNEI=gcL>9#w+x?zRM+)UGWertXlu^-iO+p9)!Gt2fri1}fApsJR zp^y=If+eczV%)f!bG?*n(VB~)q07cHlD1E~*H;~p<)o*2m9v?$mkfkMyT@1@_L*30 z^|3unovu$&g|^s5DCt$2UxE2bug729mGt{))z#H&f+>oUC<9R!bfB3M z0!Y*>z^g=&6jOv2UAd~+52v1&4Ib9qc!TPz^tcPwnFM z3)jwy)ws)Dc+syl&$rNN3_a>sJG&5N>pgB7e#CfU5*11WD2gcqNtI-vOBMpMMX-X9 zu9~vBpsXTiUyDo35JE>50-O;oI%||wGj#$?o@mI@b*L)VC0u3JibU?}xs;KY>?l-7 z`4Qcw!pr*pNN?&pEXh+-cy#}KaMO3ABasnf+7c~k?clNHE$#c@)A`M(&wnO9{P{Qi{wQCB{_)6xm+n1xq4~(nV|&+6 V+57UqiSXY@TWfn_=fci){{W!v@i71Z literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/purpur_lantern_side.png b/src/main/resources/assets/betterend/textures/block/purpur_lantern_side.png new file mode 100644 index 0000000000000000000000000000000000000000..788be07a81bd157f987cf99192984d1aa1625cfc GIT binary patch literal 2209 zcmb_e4Qvx-81BZ88;H(;3J7={LO{IUPp?0Bq3)-JtwNz}bqraQ@9w^~=h|MqyV8zd zF#%*qh(OehMOk2wEfFx1r~yGDuuS6k4`TSsCTL<*62v*9;CF3T5e5=slk44m_k7R$ zyzl$m_uXpW%+eu)Mh-HWOhY_n?s9Z4Fpj)|=>O?!Hvu~3$I9kvCez@d#*t%cXdG@b z4Q!JAReF_o1}`cRGmsPknv;G{RKf=eO^!!QD)x`wcH7K^In^=9FH z(nca#w5Cs8fD~nN>l3Z{Yh#cshnf;sML2Z|9s4eapKR^Di|{a;{3k^{B>36(@Xpr{dm3MEHC5R$QIFcr<~7v z+)f-xHOsPu6xl2sumeJb93<>E)LzHKFSnjJ%_oXO3KM{h6^d8Mm!!#wJCx8lzgQ%wW<1g}V`ZciN z-s(jFpv^8og0=&W;Aj>S0xdy;vD;aT08qyTp*Q3U|VvfdU5mV-H*JS+`G5?=eEzjKbJRY{9kRq9`Cn4 ze{8bwrStE~4dvTUj=k93a^}a?Umxx`R$Bl2>Pz9Sjr~TqHBGE5I}^X)Jlf@4H1tSY zO;295d&kxQ?{9D1bKWesOj{|h@9N0SISZf4_s#xpLUP&CEqhkgoS4VYedo~CHHYx= zo|2W|*nDbpNmJ39-5b|oi-v8J)mblYf1zp2v9~T?n>YNSQ#TejFWpa0SfBUJuDYLQ zUu&M^`|$B8^rPD4x`Rs!R*8*k-_Cn;?RD3_D(>u<%CA~a^i;ZX5B=cW(sA;MU0seq z`>xkb2bOg#Kk;M-_L$n*J=P>+I4ek@xdY zm$djhKW^PybiI8;)ux@E{+(?(x&51-Jv`!KJuhlk2V7Wj?zg#@4#tg-2+!1+?j0rb G-}oD8wfS`b literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/purpur_lantern_top.png b/src/main/resources/assets/betterend/textures/block/purpur_lantern_top.png new file mode 100644 index 0000000000000000000000000000000000000000..bec7d20ac69938e9927eeb974cbae1f5ce6091be GIT binary patch literal 2478 zcmb_eYitx%6kduVU`jxFC<$>g7*k{K&YjoJgDzOQ*j8M?b_w+b-nnz99oXGjXQtgP z4N0qzSbi9V1P~uFVu%_sDiFl}Af#GC2n0l9Fc1M7L=B1&lY(fyv)x?~3pB({X6Lcr zeCM3+eCOWnUbLXLeEjtBp-`y2zAn~4&l7`V>=^oe-|vHnp2lVBp727UJMRvTQK8MR z-xCUrooOeU{HFM0I(AZFWI6^3=TaGp4uz`byKbdR8dokz;FT+|X0mf;GgUdA5~PTam|QBE_Viqo&GYK?I(W>nOdjH|h_cl| zK&C0ah^cX0!pPwWz`P_diWcT0P!ps|Mu5D+L51T*0C^oobWvjpAC^XQO-pZxJyM88 z@1ksr?`L$5%Vx9TtQdCOW{%f1je`Ow2!JAh*PixK4y3)AMTQvhuxn?0+etG4BQl&; zKg!Zfhe}9gO0;ROAQKgg%b^U%hhb1s9%$kcF4O8J^TAEbkt9ixwC_(o*Dxl~O?uWck`%W+eP3T3BIGvPAn=6tkxT(3`iK1yR! zAB(ay)v#@wx+-DSASMqCXllSDk_A+YrYwjWgqkcU7LSYX#~j=mG%9}#nq?(I?q4UPl>uis9ue~rLjpVt)RnlhiUeXZ` z>>g!t&}U+@g~#?VI*lx&A=+#Up`*epEwi{Jn9uXI~O&VdOUmh5u+1E6i5dv5;0^TDUu8{ z$wWXl363D7DTZuR<+DiIH{%j5LL@_i09&F-XN|I|hDK+WCn_>E4Jr|Hq+FDTs1RGg zvP28Oh@=8!(1k=nSb#{>h%AaDN0g zHG2EG9W!2J$>d3M`WBvFc6sXH7t%H!V#Z$gry>`Qq&7FTOJ-+lrqJ7=m#fvv>?XEl!TY6OLYJFy(*?;QvrG{hM zIyWBf*xI@5gVoDnfBQ@CZ+WY7{_5|QstI?vxBH)Nn%2~J^pAo4-wYh;*|&V>x{il$ zo6HY(o>SGcGw^q_@A`QwUEIog;o*-j9PGPvaqqyC{gt0Hxpdv%_gAcad+&uaPnN$r zebu3lPR>W~eD#79@47hV&)#WO0}IRc)HYs7)t>xJoHefUK-mvZC$^|jf7h8`-aJ;Z zzO74#-MtUge)1!G@He)r{m!I{!9j7==!V`` WF3&nuHYNB+RX=Y*?8CXwKK~CdJ3=G? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/quartz_lantern_bottom.png b/src/main/resources/assets/betterend/textures/block/quartz_lantern_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..b3b4521d7b66d583f81b99e05cecccc9a64623cc GIT binary patch literal 2243 zcmb_eTZ|J`7@n0x1%p{Zlg%dTWHuN;PUp;}a|;D_TVNaLifj!l7sHuzPTL9X%s4Yk zyBmEFB1TP&pd=zji5ek>sKj^=AiNNR39>{bA{%_*L4x4{9*mK!XLTDblOf05Gc!IqxHsSG z;<&qBcJf2fP;R+}y-ETR&!&l5#b;=ao4>H;BfNn|yiJRan-VU3b5P(Nk`h)Wb1>(p zY02py4d~$LKpu~7z$OtEF5u_aEJjeF5#no=vKv~plu+lj*me9^6!`@78o-h&^SYUkG-%4|JYI&9E<#b*HROv@0>&xTfdsd4{%}yP2PashWm=(b6f&&T#0@*vL#9X0(-J@e#XPYaTDYB8-6ApW*qI(Sp+c#S||XT zR82sjN&&Jp4HP6@)l{rYs)So?j|C1JDOA3iHC9C!qh^?fikJ-9h6=#8iUDG3fJ&24 zE+`Vksw(hT;-^k>-dD(x;nOWrweO$wD}`drH7@pD7WV zkDW>CbZd$lwAB)2q&H}O0~UIPsEPvGTVyr86@Q7>(;uRZH&$=RwxXy?5-6r@0>f4j zK#Dkm@p2haw@oc6yZyfz`@aVmpVCS!gw_Q4S{Jn_@x@7b0 z&Ryj-JG$p~o_qeao#nBgzdt{)=Is96JzI|-GM0aPG`nv5+dIBny{rU|UHs$~^RT(p z-Sc~NV9)7kho76%(Rp9@5vddHeO)-QV9ztBPdu>bcvpHXb@2Va&9ULWCkAIIyQl8j z``HKMr@nmT*_lU9ZeFyFJNt3pU)$fkG~@EgS#L~V`{9y1emeBRJ6~{+>rgvB?-=}a z-m-&JxZnPKsOyjO`&W<8{ei4MHD2o4awhxu{rfHqt$T?(^Ywu(Pi^In%}PJ`Ri*dx cL~(S=FX5IkVQtT=@!yQ>;(^RZed{;<12hcbb^rhX literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/quartz_lantern_side.png b/src/main/resources/assets/betterend/textures/block/quartz_lantern_side.png new file mode 100644 index 0000000000000000000000000000000000000000..6bd07ae9e044acce2cc8d1fa665fe22dcb146646 GIT binary patch literal 2133 zcmb_de{9rL9Pd=vU|<%OMWTP$bQlEe^~d$@+KzL-I^C(aE!!azQM4XEtC<5|Rkc0>cL}Hd8ZqebKi*cA>Lj1`=YE_PxIM zd7tmE&wKB+riO>7PQH6GhGA1f^-?oxOWe0;BKqEYVHBWdl3D+RjbX*5?puJZSvMWS zCT`RstxjwBF;OuR9-taB^rR9dLSxw6%9II|cIe+L896Lw7_x?;4IAqC^|qfUXo@++An$qJo^yHnx#g?X6d15DV8M>g0$1R15%`Jm**HHXe*XxI+~&5E+deQ4kt(; zPsc(?n0Z>=&ZY?^j7kBMVm!1PQU<6hd7Rl{#WTiLg@SRIfVyKNER)BgEQP~)__(x* zL>_HBb)CqgY;5DA?MT{$R5P@V4oiV`oycN&&M`A)IEEcFt`kRoIv;rah7~c4 zc&<=QITpOO)-4Q=-#=f|RU>K7at&qIKnXZ7NU$_ZlMF-Bfe6crG%Iq#9NH_=^cXaZ zq@V%^Tm|MMj88-`FaIyFp=#0ee?nD7j2cz~phRg2&;}_}Z_8K0s3V@Wo9LqwLMRR;^y<{jIZV}z}V|rE%1##q4C#rr` z1%OjY)*FB%7v*FU_*p>uL4biA&H6cp$+0zB8ro7IekH5xm5LZSj^hEt1xSwJc#@X6 zC=tpfkb}>opryFP+^YEpTDB7uWENmPDYq zat{)UTW6>e*>l4|$bZ^o7Y;u(t(Ayw7K`G+aIx7PDbf6HF08cUsD zI9Pbklkc^@=``7M`WNlL_|&Dxr!1{FT_Gt`MlKe=`0I}8%0S=me>4{?@B6u^v*_E^ z7Y6ojD-T5r_g6OlIbqd|w;R_C4gWBSCrwIMe~#mtp|@U{i%X`eQ>}$_RAz}o9E=t166aTR^7RxQ5h*b X@w_m`9f64tunAzNg~TLNwQY)DLRo@(pB>j9wZTClA`0L*bDESVj0Iuv1{cV%=tZ} zw@6jGR;e<|Tnq^(3!AU62+t0_0T=svIu@$Qw{GM4f5=SQ;&`Y@TtJP#xOnO0)<8@u8SyAi4ZH=NgE$dC{RjvqOm%fyVx^oF7oOEYbh zQ1RQeZrGHG3dYrt&+$nZmsAH@xQ+9Nf^t2$g*j3t72-xA#qw<|RVkNi!^fqqRNCk; z>fJ~)YSuO`I?NCIgzG1vHxyvfyOBnm*GkMUd65^Eyc^Wf{<~d`Z}bENMP88iymG5i zYg#N!Pfy$!jaj(XaV@VJE{X#+-yseV(wj8D0Si4ls-l3Ti&WEz_=~$y{vq0U^Xx^)3o1_(AV^e7s7gH0 z32y>Xw6O+FTb3lVRsFcxtA?Pq+<2SWH^s#zzSBq$L+>{XV?E)4;QbU z4Xbh2yYQ-CTb@tT*%*5?Y<9LA727>tI{p;niAhu_5uhlh3?x;Ofi77H$QHp0Lb__o z=8}3AW#?90qD_coN)TXMwCG%;teUA4VDdymmaaopu_nqzd58wF4QyMq0aPRnAd{|r zD#8LpqE2K{oG2HPO;y*i00cyr5xNxdbQw_~J*m7!5Wzf8uHmXz+mMdCxyE(mH9H*@ zsQ!phtZcr0?yDIm_Rbz2`Zcp`@~TO5EdcYur?>qB DYvLQT literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/violecite_lantern_bottom.png b/src/main/resources/assets/betterend/textures/block/violecite_lantern_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..fbeccbafa5ad70d3dcadeac15cc7c56cdcd2ec77 GIT binary patch literal 2370 zcmb_eeTWog7#|bA?v&1~G?ALdq&$6h-uc?u8E!rAZp}Nry<|PmlOo@F=iS}uc4wxU zx!XN8B8yBeNXZ1ve~O5NG6a$A(6mD70}9K8!mKC)jWkctg0y$`OS4lCX<>Fg_V@mt z-}5}bXWreotZVU2r?amM2dNrq8X;Cx#%L?O9Iv)8Ox4yXNErDSj&uaE0iQmx@{zD zwXgBW@-vkL7oJNE#`B!uNUK7iC3rB;bWd-OOT*9&b5RA*_Fv< zY@6c|R*6Ib7G#lCwTKXfnkdg_MJT8|RCz%HP|#simo&EW;b=6^OzWw{!hSL|sIjXdr zLf);>+J2=>v|xM@xx5g8VM-;SiEB8w&&!p9o0um#k|%cHQ>;+K(kdmBHTa0M`FsuS z2aEctqDpQfqW$gxm+&d#JAED|i~4EA*;Qd~)(IRx>s%*~+RwFYT)oXBC~&-P$H`S2 zwXDj*wzY+giLno@ux!&Q_;bTRl{F-R0utv$C_*3z0IJ=hs6$1UWAmV-Ls*6;sTE8V zp#Op;U6gcL`4`wRt@OZ6p(fVTj+aNYP*xsg2=CgNQnX}J@38#<*_d=B;vAJ4u`E+p z6xkFd)c~p_nLvoi8qlzk25Br31)4EM)kt-H!ohuE6T|goKbsDw9JSKvQkoFikRiZn z$|f2z0Wm`(zz|3bnVJUGs99xu#Ixu~q1@H1p(>LyMq^q`MhH?0C;@E97$6lAAX80Z zS`rABWsbcPx6R2pUeYmX&85)LC1dIBmQTAkP#KZsg zA6p~TX>^Lp>kC;zNpH~nGR$|>NBB|~dE8h`QE)9<7H8>^R~AgTh10#T-=gsLn6 zjR*#iq%@8}Bdy4?QO$lt^{OtaRX5(E`bu$e7TFm>-=I8q>-mh%wb$#$HPiLK=EH~Y z&a&0`Yh8H7uT{^t&}j@k>Q_43iZZnxFBo~m1Y!^s(!q*G4F$-mtN=|m5l~EmqX=oL zp%_gi6*=o>T%#G+(Q+ZhP&EyUKtu)t>Cj@aSQOGPRWJ!6SP;lnTqT9&bom?CrG&g{ zccMv^9?>l?ysYiD^rp636Pp^$qkHki6ZJ1M%$TViiI(ozXUCQ=wLfC-oON(q&(jjC!hUcEX%y3+&y&g{i#DoCj2q)nQz9QKE)p0ovM3rapT5@)>H3Z zY`VR8qWSn;jF8-a=+fEo&o5;M&9{F%KV~k8k6pk2@!>tUJ+S%0f(twRKld$J2%j4K z`L%VO>vx^@POf@&c;_m16Z@%|o!=FSH_kk=d)Mlot+O88+}Zm3SMpNflX2(X)SR=2aO~c*=Po^W;EeRb6BB=WeS7nyu3zzi%wN1Uecbf5 j!iKf4e0TZswgb$Tx}9@&Ojh{tUrxuOuEeg^)$9KOY$y+k literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/violecite_lantern_side.png b/src/main/resources/assets/betterend/textures/block/violecite_lantern_side.png new file mode 100644 index 0000000000000000000000000000000000000000..9842c6017502041c8410b2a5ac9cada91550f381 GIT binary patch literal 2218 zcmb_e32YQq7@ihfpj;b{q!yHMN@$CnonvRO30t6Dpe1bClog6Z;myq3?bzL!b!N(L z%Y7fBDWC?bAWBI<31T@KtP!bT0u36XhO`hNawr<3Mp2Lie6!tMkxN3HWMCIdWv%D<_ ztBq>^6kb%LHXx}2v?Zc3gvPKjV-qnT)^T8)=P{x4dT`Q0A8kQ z5O>&|q{whA?(*0eC+%UmVw|NJ7e%`$#!k`%ER?$;wLJ6Z1AVx7Z+6*ZPl*9}!R;NXh#wC%05g3Jvp(8Al!J;hr{TcW@X`|5$ zS~n)lMINPMyC+%?*2f@K1$DJf6XArp$YOrlu~?02sCtchpExqZnP_5snFfKOYC%EG7L$(f-K9^EYEqKrtLgUcSHS1 z3KB5D-C#SGC6N!QS`?r}$x#r7R7?pct@-_Yg`yik5n+YTOCVQm zvMlj#=w=}&0Fn#QkQ8aoNeYm4ky1!-GH!tlv2G?k-=~UoW)aQ#-FlW(5piTv#|sW8 z;}ismlh+K}bh`xA#b~4xY_O_Yu8MC0DEgN*JOYlp-EI zo`+NI{i<=t>iS>fq0GIrTWZvuDol>uw$Gw+CcDt)Z8kHf2KvaHJ5WKX($J|g!WZ}w z!?ND5@Qn|;J9bPvRQc&R>w>nDZ-?hh3J`miTGp(zjBXB8HL^=LoLjcik~6vRTCb7I z#}S42fIj8(_iTY-y|HJnr$9&7uZhbi-`E@;wd3d_oBd?x6=Uzm9~Nz=m&;A7H}(WW z_O@Lr+=A~`<@dYxOUIRC z>nqQn&E4l{>an4s|$1j|?bfLDnc~|@Xk{iX}7muDjYUB0iP6WU1-<4>n|3o=p+tnm@ ztroMssNH^P!M4MjgGHy`y|JO_I{!+K)}KZXyzf+M8$+k K-=5MrOaBJ%67V$u literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/violecite_lantern_top.png b/src/main/resources/assets/betterend/textures/block/violecite_lantern_top.png new file mode 100644 index 0000000000000000000000000000000000000000..da9757df36338ac3b1325a5c770eebe086cef1a1 GIT binary patch literal 2315 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 JS?mz7^FOBa6T$!h literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minecraft/blockstates/chorus_flower.json b/src/main/resources/assets/minecraft/blockstates/chorus_flower.json index 45269fb3..fed5be0f 100644 --- a/src/main/resources/assets/minecraft/blockstates/chorus_flower.json +++ b/src/main/resources/assets/minecraft/blockstates/chorus_flower.json @@ -1,22 +1,22 @@ -{ - "variants": { - "age=0": { - "model": "betterend:block/chorus_plant_flower" - }, - "age=1": { - "model": "betterend:block/chorus_plant_flower" - }, - "age=2": { - "model": "betterend:block/chorus_plant_flower" - }, - "age=3": { - "model": "betterend:block/chorus_plant_flower" - }, - "age=4": { - "model": "betterend:block/chorus_plant_flower" - }, - "age=5": { - "model": "betterend:block/chorus_plant_flower_open" - } - } +{ + "variants": { + "age=0": { + "model": "betterend:block/chorus_plant_flower" + }, + "age=1": { + "model": "betterend:block/chorus_plant_flower" + }, + "age=2": { + "model": "betterend:block/chorus_plant_flower" + }, + "age=3": { + "model": "betterend:block/chorus_plant_flower" + }, + "age=4": { + "model": "betterend:block/chorus_plant_flower" + }, + "age=5": { + "model": "betterend:block/chorus_plant_flower_open" + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/minecraft/blockstates/chorus_plant.json b/src/main/resources/assets/minecraft/blockstates/chorus_plant.json index 5a46ba98..52268ebc 100644 --- a/src/main/resources/assets/minecraft/blockstates/chorus_plant.json +++ b/src/main/resources/assets/minecraft/blockstates/chorus_plant.json @@ -1,69 +1,69 @@ -{ - "multipart": [ - { - "when": { "OR": [ - {"up": "false"}, - {"down": "false"} - ]}, - "apply": { "model": "betterend:block/chorus_plant_center" } - }, - { - "when": {"roots": "true"}, - "apply": { "model": "betterend:block/chorus_plant_roots" } - }, - { - "when": {"north": "true"}, - "apply": [ - { "model": "betterend:block/chorus_plant_stem", "x": 90, "y": 180 }, - { "model": "betterend:block/chorus_plant_stem_2", "x": 90, "y": 180 }, - { "model": "betterend:block/chorus_plant_stem_3", "x": 90, "y": 180 }, - { "model": "betterend:block/chorus_plant_stem_4", "x": 90, "y": 180 } - ] - }, - { - "when": { "east": "true" }, - "apply": [ - { "model": "betterend:block/chorus_plant_stem", "x": 90, "y": 270 }, - { "model": "betterend:block/chorus_plant_stem_2", "x": 90, "y": 270 }, - { "model": "betterend:block/chorus_plant_stem_3", "x": 90, "y": 270 }, - { "model": "betterend:block/chorus_plant_stem_4", "x": 90, "y": 270 } - ] - }, - { - "when": { "south": "true" }, - "apply": [ - { "model": "betterend:block/chorus_plant_stem", "x": 90 }, - { "model": "betterend:block/chorus_plant_stem_2", "x": 90 }, - { "model": "betterend:block/chorus_plant_stem_3", "x": 90 }, - { "model": "betterend:block/chorus_plant_stem_4", "x": 90 } - ] - }, - { - "when": { "west": "true" }, - "apply": [ - { "model": "betterend:block/chorus_plant_stem", "x": 90, "y": 90 }, - { "model": "betterend:block/chorus_plant_stem_2", "x": 90, "y": 90 }, - { "model": "betterend:block/chorus_plant_stem_3", "x": 90, "y": 90 }, - { "model": "betterend:block/chorus_plant_stem_4", "x": 90, "y": 90 } - ] - }, - { - "when": { "up": "true" }, - "apply": [ - { "model": "betterend:block/chorus_plant_stem", "x": 180 }, - { "model": "betterend:block/chorus_plant_stem_2", "x": 180 }, - { "model": "betterend:block/chorus_plant_stem_3", "x": 180 }, - { "model": "betterend:block/chorus_plant_stem_4", "x": 180 } - ] - }, - { - "when": { "down": "true" }, - "apply": [ - { "model": "betterend:block/chorus_plant_stem" }, - { "model": "betterend:block/chorus_plant_stem_2" }, - { "model": "betterend:block/chorus_plant_stem_3" }, - { "model": "betterend:block/chorus_plant_stem_4" } - ] - } - ] +{ + "multipart": [ + { + "when": { "OR": [ + {"up": "false"}, + {"down": "false"} + ]}, + "apply": { "model": "betterend:block/chorus_plant_center" } + }, + { + "when": {"roots": "true"}, + "apply": { "model": "betterend:block/chorus_plant_roots" } + }, + { + "when": {"north": "true"}, + "apply": [ + { "model": "betterend:block/chorus_plant_stem", "x": 90, "y": 180 }, + { "model": "betterend:block/chorus_plant_stem_2", "x": 90, "y": 180 }, + { "model": "betterend:block/chorus_plant_stem_3", "x": 90, "y": 180 }, + { "model": "betterend:block/chorus_plant_stem_4", "x": 90, "y": 180 } + ] + }, + { + "when": { "east": "true" }, + "apply": [ + { "model": "betterend:block/chorus_plant_stem", "x": 90, "y": 270 }, + { "model": "betterend:block/chorus_plant_stem_2", "x": 90, "y": 270 }, + { "model": "betterend:block/chorus_plant_stem_3", "x": 90, "y": 270 }, + { "model": "betterend:block/chorus_plant_stem_4", "x": 90, "y": 270 } + ] + }, + { + "when": { "south": "true" }, + "apply": [ + { "model": "betterend:block/chorus_plant_stem", "x": 90 }, + { "model": "betterend:block/chorus_plant_stem_2", "x": 90 }, + { "model": "betterend:block/chorus_plant_stem_3", "x": 90 }, + { "model": "betterend:block/chorus_plant_stem_4", "x": 90 } + ] + }, + { + "when": { "west": "true" }, + "apply": [ + { "model": "betterend:block/chorus_plant_stem", "x": 90, "y": 90 }, + { "model": "betterend:block/chorus_plant_stem_2", "x": 90, "y": 90 }, + { "model": "betterend:block/chorus_plant_stem_3", "x": 90, "y": 90 }, + { "model": "betterend:block/chorus_plant_stem_4", "x": 90, "y": 90 } + ] + }, + { + "when": { "up": "true" }, + "apply": [ + { "model": "betterend:block/chorus_plant_stem", "x": 180 }, + { "model": "betterend:block/chorus_plant_stem_2", "x": 180 }, + { "model": "betterend:block/chorus_plant_stem_3", "x": 180 }, + { "model": "betterend:block/chorus_plant_stem_4", "x": 180 } + ] + }, + { + "when": { "down": "true" }, + "apply": [ + { "model": "betterend:block/chorus_plant_stem" }, + { "model": "betterend:block/chorus_plant_stem_2" }, + { "model": "betterend:block/chorus_plant_stem_3" }, + { "model": "betterend:block/chorus_plant_stem_4" } + ] + } + ] } \ No newline at end of file diff --git a/src/main/resources/data/fabric/tags/items/hammers.json b/src/main/resources/data/fabric/tags/items/hammers.json index db00d6af..847bbc95 100644 --- a/src/main/resources/data/fabric/tags/items/hammers.json +++ b/src/main/resources/data/fabric/tags/items/hammers.json @@ -1,11 +1,11 @@ -{ - "replace": false, - "values": [ - "betterend:iron_hammer", - "betterend:golden_hammer", - "betterend:diamond_hammer", - "betterend:netherite_hammer", - "betterend:terminite_hammer", - "betterend:aeternium_hammer" - ] +{ + "replace": false, + "values": [ + "betterend:iron_hammer", + "betterend:golden_hammer", + "betterend:diamond_hammer", + "betterend:netherite_hammer", + "betterend:terminite_hammer", + "betterend:aeternium_hammer" + ] } \ No newline at end of file

    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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/andesite_lantern_side.png b/src/main/resources/assets/betterend/textures/block/andesite_lantern_side.png new file mode 100644 index 0000000000000000000000000000000000000000..5eb9af0b9ac45e1985832604b3535387650f4a6d GIT binary patch literal 2208 zcmb_eeQXnD94-X+nduUc5J<-51_qJqeeAC7oh#dDH#SDcvej&&(Y<%~w!5tDoxR)I zPQE853nWelfiM&Xf+Eo{GK|6L7$5?Z%s-3+j0T+`0r^l2QIX(#ZC4Qn5@M6cr!`0vemQNgRtqj3y^uVg|(O zJ=K^?4MU8x+6ake8O+XGX&c2e>>P}tXgf*SNxFcbXo0c`1w5Ag;V4>I_6aravSciD z<-{8eLla0c5{XzN1y(ieCuyGNNs1vEhCm2HkA(~nB|>`sD1#g7QdrRpMGavlBM{YQ z!-*rMi4=lbiZ-Mt%Y+I>MuA4sR?18%4wR)7PHPSa;=yH!gaH_YAwx%4I)z15@_174 zF=>Or6k0b*Tacn;ZeyZ#Z%l(^4b;`H^v+9(PtVZ-F%|OXH&dePO!-wWGRj%Bpaj&&d#!g$kGmi1FXZxNwfqR+o+mFVFfKI5V)PyR3#%umSr7) zX6*z^vkrn1Sswv-RwgJYiatgX9W2M;*gtVyYCsKpR2kL0z%+E+SVFm?qwd9$OQaUQ zlpF;VEbb)%NT%JLxMcPj%6Rg&GDe*qOi_Y1(g+dheVU(u>8j6&fG{laqnbX5zsP&( z*Fnqu)k^?Cn_YwiZ3jHT(=6&YjhfEb?QDSvcv%+3(d_S5j~vShOv<_ssXkd;sS$+y z5bdBO{_y!cm}|%E#@(yyf6a$9_s)dX$U9vae|FnGi`p5#g*I<n)9<>2X4Cl|X`wsi$sB0m4Q8@~RT>uP=<%00&)?}D2K z-|zVZEGhnJr%Nk(vufqYM_2RO@vDW8Rb6GID)yR~>JwdSEaYoPCQr&%UQHV+9BLbJbPR6T+TpPdkNdUvQfBty zy5g*Dvkq#M%(yX)F* zMhJ)morIr?giI66LZVD%#+Z-@DiUS+!>R&oJ4&#REJ`}7pW=7cE}2U$M@{S3jahtdq|g>FiDpstm0>5P@g2iG+QCvXy{9GhU-5|&gc94^6! zq)jGEXxpi8CyENW4T-iR9cj$8VB5@C8m@0A5hoOdrQ@b!+Hvz1d6a%GWs_Ed7DkR~ zMNBhMY*cfRg$f4U#z@qp`9?}Nv-VSNpu!v+LJkhl9ONKiSpfYJj#Hqh2-0N8D-aGs z!^8?Ya?lN6DZ&bha1+?njcCUmp}M9-O)H5=p^PMoVJ4l5<)ekeN@L1)P)fs%p#V*! zdJRKY5G(tMH4xzaoCYLG(1Fa063}IphrG{hTBg*=Ab?SyCu*J*%rqCyYKxmIQ<#;8e&1O%*hN z{15{Hi;#=*EGDEhbuDhtOqf>K)Je^G*U))mDGi2Ay4O)yB6INzg;Bzw@?KJq=Gr|# zYi^&hP8VJqL)7W+6b;g5tyFDWIvR8R#aG6wC+8sFVJgol!{@pgEI8J=W}L%C|2t6)S;Ici&gB00tP;xDgwbTh(H!} z1VkNcK7?eyDylVk6$#@`TznK`K@}j-qP$Ml8ex@G83UEY64GTE`hEI!TzS?(iOlVD z$s?~jQHYTID{@S^!_xUk9!e)HP7zaBtF|1RIk&QV;>m3vF56$#y!V5Be{Vdoecbmif4u4P&;KmmG4Hsz z))+bClkH`v&mQ{i-@Zo|z0*7_fwoVX2@mhBUfojh$mZQ^#{9VWr`BcnO?j<$bH&>8 zM^9I5v*G^oFFrTys>AF5u=~s6>wUR#M?ULa*t1U+XYA>E^{bla-|t@j=Q{f0%IJ%} z--Gb!)!kAx>n#0f^h@t)!$1ADe(^7FYn4YBZN>gc^G0}k*X?>;IJI@piZfF9%ED(? z_jc{<>#rWk?5H_VSKePc=izmI`=%bcc=>VEzrb&2=AqpSCk(VZIJ&$kFkmfuu16bt zK7J{?wDzwD+A5A!c1D+P+SPIC%QItYm}eeizWF-Yv-6EP$0lcB48FB$%d97lo(-OB x@4ElMyTh&=FF!f`3>c1)$H zhqu_7-mo{lL^Irc44JNuW5v8j&=l3Ypy(l^ABVJ#v$m69emQiQp=~q4td!C)?Im%a z-M-GpJ?oZcjCK8nYBCGv)6GSV5ae-)=wd$S1X?k{lzBCB9X)0lx(o^X6HH4KknT-) z(Mi|Gv=ozp!HGN_S7V$ERbFhOdC0|C7-u;FKu&|QCa84v!;omcX=&Z5Mb%j3F2VGL zp{KEIp-_kwgqZ7RSx!||7V<351A+j-kQ1UJaDrJih7=AA-}XY=b?Ar@>F!{dV2IL6 z3VE+i>jc#@k%F;BvKal=yPwANB!q|HlCLBF$!Hjnqe1W!kSs_)pbS=+WRTj7>t@2yu@U8ZsigCm18@ zGd7v(V|$c3-J7BcZJ`en(mOQ20t;L#EFd4ZWJyi$#b500^ap6|oz*M6E(oF^0YT+e zpy(n3NKj0`#jz~Px&TeGa#gb*O+6=R9IUzVKGj$0jXvaLFUOL}uzMb5q(mtbKm>LLV&C6Jlb39F*380Z{Ukg2LLE}J)Tm02qi**oV_M&7ie z5FzD9WSfdE>-!_Qsqe7ZA*S%j{#m&A$uWu=LwBTFGRmoMdeWW87EWHjo!urU_I8gQ zY2C2thm#ww9p6%1K4C>}dDFm0N6b?GQfp_=5|&6FZa7r3E^c3a_8@rWt&K0rQ$JN3 zoPF-Imwtcm!$qsV-Jk#deKhsx!1TN<5`|95j5N1nXYeok7nXYOmWr|f;Mb==uWUx{1CtYNlxgrA3B&wKF7 zt0$7a_2{*$r77or{)tNE+b=gQeD|_-=DafvHeEG!bdD?K>{Po41 z4JUT((N`QiyzKmepBfBs#hKaT#WbhIr^?Q320(m(Fm0O9}u literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/blackstone_lantern_side.png b/src/main/resources/assets/betterend/textures/block/blackstone_lantern_side.png new file mode 100644 index 0000000000000000000000000000000000000000..ab4cd4d53cf27c56c61f29ec5efefe3b1099dd3b GIT binary patch literal 2192 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/diorite_lantern_bottom.png b/src/main/resources/assets/betterend/textures/block/diorite_lantern_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..829cd1291471b0d049fd4f027921605b56470c22 GIT binary patch literal 2430 zcmb_eYitx%6yAbqp@6ht1SyemY9b(a=gwny9pY`h?Z1;peY6;7(pQft*^vHqWnO_pb|h0-r4Rhhy@zrCiDL0 zJKs6yJ9Br#;-*CtDyLQYe7*^d4Uraltn#)o<#a#ex2uRA#@Y=_9iMO9WN$0;y|R6( z&sQ;M#@gJr=;Io;QhsDuI`QXHHbwhWLEs;kHvFKHZ zZFgN;(7dQE0f@ORaH4CaDo6R0yy1i7v(_OsVy=@h=Vhx?V47a@feYAb-E#z zDjiB8WtV8vPN7V+U|bH_9Pfu-N_n7xOE|kTlgtMT z3I=k~4PYh4OPVBWqWCYcWtj2q+d>Vj#jQ*V(L$Lilpvg)PUNFSqgrFyaZwtR#z=^z zQvIfBXc+4O0TTs4BqM+YDF{^6kU$WrLckCN5n)t(KVsoduZiCKLw+_aOgT!W(^Lto zilSnm$7KcJxTFGA5oN$*NMt#PB^)oYHD^pZQYd*ntEbAKj6p?JB!nOkbSMI>OBf&- z5+IQP6yhRJuq3g}wYXs`X=S38L2E90hRz#HYcL(!z3#$@EFr53XGxREdr3psvwMie zUZ07<7H*rv)M;djhG?_xgp%H(`9mX4xK`y%S4%HWmi`!8;LFgBhWA8klk-2u*Zv1z; z{?~js@7pb;%>ITb*c9`CD|!^G-`^ExjnM)+9|0mZ590 zs4qL=^OZ##BXu$5=oed>n-9UMhj)S+P*XE!M{o7Onu>vEru_ZGcOOh+cIB!TmTy2c zgw(jsTe{S@T)7;KUL9y&eg4}o-*~g~%+?L!xn$YdKUZomKiSK#Z}||8&+V%iT-A5{ z;wKkI&+Ow@?6X&AJN|l%d3Emr<6ZpJZrruI>EiT>z2dQt)Ski6yUXucH|bPm)wTt(QBO?T z)0b>Uzgt&ebn?fqof!A?rMt<}*$;K^?;otcR3BNtF4}*&wqh;wGCP*{=Y6e>yui-@MDA*o>&68M11Az`1_udrb&8sTN(Si6m*NCcvmTG31`AX4ne zN3x{=K#Y15CXh6RFcv*&A}kc0f=~p>-~@w{288pwZvCDG$5|4*nWur4X!<6xmYKF$qr+3$`-b2wPLUr{-~ z0PHp^3Z?2j9+4FdfTxW{3Zp4Xzz7#@#w?-}_vo_A3KZ-$alAp!0wetmq;O) z8y$H)NW@DlCunxJqJq|EAfnORp4-&v-W2uFhDrb=y-V|ZV2b2YLtFr4x?xT4#b5ZH z^ebH1-PH>m2TTkPFp}Xcn1!SP#*-qzD2Aa8JZBL_p6|{6R`t-aMwW_M_deA}iz}3H zem8(SD30ELKKJI@+jisD)%CyTgKK+dkJa#-T^MK=qNpwG32Gm-kbaRdc3YCLpg_~qcvGw zS>NoQJgIJR%bMwJ&($6_mDx8ecqd=@x&SRLTGO~Le$>oims^rvuWnt>NNLR*tFDbb z)UfjU{K1YxEnd@O!$+T4vWytqdOrB$#SWo)?((eKZOsik9{9AWP}hN_ zptxo2lJt}0XB|_@F8@Apc4pI&>KTpiPDHCycY^l|HfQu(J!CHZLfdily*?>5d)jC1 zV7HFnm$A8ckJt3zTjb~K7b>%p5>lJjckY@W-~MaxOvTGPKAb9h`?`)eyBaRI>(4zs z;;YB~{>ts@fdO&$U*_!^_`_BC&-SXt+^hWd`ic`?b_;XZCcZLkXY8=krk_!pW4)r^v3?$gSp>L8$_Aj&TH8{W=jYEb5;ACaQxB4kN*fR z>e;quOsf~{^3Ql^?Ww%FMss-HwyN2c7YD5E$au)5Cb&1nC18Qg$I{*Lx literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/diorite_lantern_top.png b/src/main/resources/assets/betterend/textures/block/diorite_lantern_top.png new file mode 100644 index 0000000000000000000000000000000000000000..60e620e322aa6c11a855875b869c8bc4c0b33ceb GIT binary patch literal 2354 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/end_stone_lantern_side.png b/src/main/resources/assets/betterend/textures/block/end_stone_lantern_side.png new file mode 100644 index 0000000000000000000000000000000000000000..eecf51f69bb51cd33abad66f01b6ec789099994a GIT binary patch literal 2012 zcmbVNeQeZZ81Et=12(>41Jv4u1c6>ZuG?K3j&0ll+v1IL955J&z4pCZv%B_eyWJg3 z5_RH4ab!Zq$Cyz;mjg+FKZb*W8wh>{LNEgAf&mF)*rr@?AR+knc6U((Bs6LJw(sxx zJs-cPPv3Ht&d(S&X&8ba8O248GI$?loI{7e>oc*tJiMg`i#j%g*8!mBug_hQJSPI1Zg2CGfq+*na7z~G;v_in<{#_GRM4xFZg7` zDs?@`5kx2yGKI`0MfDLB%d!MX6EuxO1g=G7oe$%(mXl;~08LP(pe`vgYB2I1rCPUP zFw%h(0>KomtR>0>3r2+bAVHZ(Bc(V{6jHcgwd#*M7X*0Q2C-BM3#;UGrr`Ib z4FpnXO`lr>BTD3UU$o|q1OZV7G^JVF((;Vuu{<#tx|bF9;xkAHbKs=0$x{C zx1#uyLb;MGsNHS|V@0Pekz`Q`Y0nvs5;nlW>%fN5Bu(NJg_9OHO>-p8G3*S|%#q{( z)CpTbiRe~Q8?|*!rlt`Ri@hhrR5n+|hMhnMVi7S#c zs8=NMQ7i;6Csuw5jdu^n3r2(6Fu_n3h*;vabf3yRT4n>Zp-KQrA0qbvOjEpih*v?O z4_5I}I*NEu{2E{L@aP{+*9S#^Pyan;^oimMmAvc&aAp#ikq==^mjP*rdsU0?{bLd( z;c&be%hX(j52?uvWJs;TxqEo;jdci;cBI%*=(c{dv(YAxD;)L4k>7f6o$mc%|GxEu z($dGgiRKgxDmpf$E>_T$R+~m=rlqGhf)O{B%iFiKT-}3Z@xrCLt?t{@vN`*1 ztn1^>rc-^Np0CPU`|7!Qr40)%pO3ZOz4q0LCs#JiE?;rBb^0QD*$a+3)qSY{7<&C? z=eFBV?Y=aBb@=!C_GodSVZysR`!|lM=Sp4chkV(A#7f$F4_MjbOU4JD-h8W(T7RZC z>+0@LB5Lf!os9Cjrt7gEiSM^xj5faB@kI2C=E#{*6`-1R?VC~2aNuCYLVV)2zC#nP zOo^V!SbN7lJXUb{>$X3;R}^$#bDhn_-rJyMj{ZQJv{jvVvI2>gEOmdk7{z{Rrp#p} z;q-B_>}Y%T&&@fl8;ztvMEkakxDelF+yH|E!I41kq{QMKXsch%esadU|@{;;auzYWA`?Fo&c5L`)f5_|2 sTHD{^+O(tQ^QOVV#L?+(TW?NYe(B@&7HJTk6;|=cU*F1_olmG5`Po literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/end_stone_lantern_top.png b/src/main/resources/assets/betterend/textures/block/end_stone_lantern_top.png new file mode 100644 index 0000000000000000000000000000000000000000..f134d8116624e144210ca20db29e4413e95d227a GIT binary patch literal 2223 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/granite_lantern_bottom.png b/src/main/resources/assets/betterend/textures/block/granite_lantern_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..48dda5a3f0d4eb9decf37a004dc4463102d0ca1c GIT binary patch literal 2339 zcmb_edu$X%9KIUf4^z-k&_tFcQJ~E2?CWlK?G?&hORFBm_Dm5Yadvn1y6N5SvAgB2 zr7=K!VB}#@!$TAk9}#H<<1=E!0Fn?w%O95bh!Dh>m?&s47zv@yUhfXX@(A&gy`A0r z=KFoW-|w55dv5Wfg%ii!H7*bcOl+u+HIaL{e~lSMzNeoXMC3L$Q~#(N2#mkOzsdsJ zwoeTNMn7*RmUv6z4=I|R4kF!FaWI$85Og3=H7}PzS{wE#6(>zALZ98ckETpLLbr%< z7|%p;t6AUa;O5Rn39YkDlXZGtHC2^U2tgWqh{~l?maF6lsWB)ZnQ+bHj7NKkW zfYg%sVk&Aom=c2_ps@l+h2Yza%M6pxqS z!_ubHCA90+t{{pExebeU6CD}MG-20ncQjnPf<&BI6qaeVJ=<-yuaQUT=TbHqCF)@0 z*-pZ?Q^iItF0xS3sNWcgn$==jx}9}r`+*8`a141kLUWLVfMo#;Cpb=lq9RC@kXIla zg2sszbmXC{z*2%06p>T-e}iq^G&*hw)iuSioirkaGSeuDnT(apM~lam2Fvx3rQwEH zgeFphrl~7Xf`)-O0f;Pyzz~EGK)k^LP786I8e%0w6pQm?w$|=9(Vsu$XWiBaN2zp* zAsCv*^9F#D%mE|_9FQO%0nJRdX1u&GN|{vNOA69_ zyGLlv?=#lv!fSJwI^CS2A=+#!CZyMC{t(Qy4KIrvT$3aiS>vVf?*w$ZE{hF1+m5qUUSKYVzA6eafu%UC)8KN9K02hWt>Hm58-@yVt9&Z^m&?8^SrkDchH8YZt9v$^FHy{~K9=fTL+ufFm3lna|D z^tf;Kb<5FZorfxSr5ShBptteNE^F29IbDx@RB`*p4Tm2*d4BX#ZQXAlztD2eq!~