From 44371da2079a463562d0f3f52e9528370fcfd533 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sun, 29 Nov 2020 23:35:59 +0300 Subject: [PATCH] Sulphur, brimstone --- .../ru/betterend/blocks/BlockBrimstone.java | 70 ++++++++++++++ .../betterend/blocks/BlockSulphurCrystal.java | 86 ++++++++++++++++++ .../betterend/blocks/basis/BlockAttached.java | 75 +++++++++++++++ .../ru/betterend/blocks/basis/BlockFur.java | 64 +------------ .../java/ru/betterend/registry/EndBlocks.java | 7 ++ .../java/ru/betterend/registry/EndItems.java | 1 + .../java/ru/betterend/util/BlocksHelper.java | 4 + .../betterend/blockstates/brimstone.json | 6 ++ .../blockstates/sulphur_crystal.json | 22 +++++ .../models/block/brimstone_active.json | 6 ++ .../models/block/brimstone_normal.json | 6 ++ .../models/block/sulphur_crystal_0.json | 6 ++ .../models/block/sulphur_crystal_1.json | 6 ++ .../models/block/sulphur_crystal_2.json | 6 ++ .../betterend/models/item/brimstone.json | 3 + .../models/item/crystalline_sulfur.json | 6 ++ .../models/item/sulphur_crystal.json | 6 ++ .../betterend/textures/block/brimstone.png | Bin 0 -> 262 bytes .../textures/block/inactive_brimstone.png | Bin 0 -> 262 bytes .../textures/block/sulfuric_rock.png | Bin 0 -> 278 bytes .../textures/block/sulphur_crystal_0.png | Bin 0 -> 247 bytes .../textures/block/sulphur_crystal_1.png | Bin 0 -> 278 bytes .../textures/block/sulphur_crystal_2.png | Bin 0 -> 312 bytes .../textures/block/thermal fungus.png | Bin 0 -> 442 bytes .../textures/item/crystalline_sulfur.png | Bin 0 -> 419 bytes 25 files changed, 317 insertions(+), 63 deletions(-) create mode 100644 src/main/java/ru/betterend/blocks/BlockBrimstone.java create mode 100644 src/main/java/ru/betterend/blocks/BlockSulphurCrystal.java create mode 100644 src/main/java/ru/betterend/blocks/basis/BlockAttached.java create mode 100644 src/main/resources/assets/betterend/blockstates/brimstone.json create mode 100644 src/main/resources/assets/betterend/blockstates/sulphur_crystal.json create mode 100644 src/main/resources/assets/betterend/models/block/brimstone_active.json create mode 100644 src/main/resources/assets/betterend/models/block/brimstone_normal.json create mode 100644 src/main/resources/assets/betterend/models/block/sulphur_crystal_0.json create mode 100644 src/main/resources/assets/betterend/models/block/sulphur_crystal_1.json create mode 100644 src/main/resources/assets/betterend/models/block/sulphur_crystal_2.json create mode 100644 src/main/resources/assets/betterend/models/item/brimstone.json create mode 100644 src/main/resources/assets/betterend/models/item/crystalline_sulfur.json create mode 100644 src/main/resources/assets/betterend/models/item/sulphur_crystal.json create mode 100644 src/main/resources/assets/betterend/textures/block/brimstone.png create mode 100644 src/main/resources/assets/betterend/textures/block/inactive_brimstone.png create mode 100644 src/main/resources/assets/betterend/textures/block/sulfuric_rock.png create mode 100644 src/main/resources/assets/betterend/textures/block/sulphur_crystal_0.png create mode 100644 src/main/resources/assets/betterend/textures/block/sulphur_crystal_1.png create mode 100644 src/main/resources/assets/betterend/textures/block/sulphur_crystal_2.png create mode 100644 src/main/resources/assets/betterend/textures/block/thermal fungus.png create mode 100644 src/main/resources/assets/betterend/textures/item/crystalline_sulfur.png diff --git a/src/main/java/ru/betterend/blocks/BlockBrimstone.java b/src/main/java/ru/betterend/blocks/BlockBrimstone.java new file mode 100644 index 00000000..65d7c8b3 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockBrimstone.java @@ -0,0 +1,70 @@ +package ru.betterend.blocks; + +import java.util.Random; + +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.MaterialColor; +import net.minecraft.fluid.Fluids; +import net.minecraft.server.world.ServerWorld; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import ru.betterend.blocks.basis.BlockBase; +import ru.betterend.registry.EndBlocks; +import ru.betterend.util.BlocksHelper; + +public class BlockBrimstone extends BlockBase { + public static final BooleanProperty ACTIVATED = BlockProperties.ACTIVATED; + + public BlockBrimstone() { + super(FabricBlockSettings.copyOf(Blocks.END_STONE).materialColor(MaterialColor.BROWN).ticksRandomly()); + setDefaultState(stateManager.getDefaultState().with(ACTIVATED, false)); + } + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + stateManager.add(ACTIVATED); + } + + @Override + public void scheduledTick(BlockState state, ServerWorld world, BlockPos pos, Random random) { + boolean deactivate = true; + for (Direction dir: BlocksHelper.DIRECTIONS) { + if (world.getFluidState(pos.offset(dir)).getFluid().equals(Fluids.WATER)) { + deactivate = false; + break; + } + } + if (state.get(ACTIVATED)) { + if (deactivate) { + world.setBlockState(pos, getDefaultState().with(ACTIVATED, false)); + } + else if (state.get(ACTIVATED)) { + Direction dir = BlocksHelper.randomDirection(random); + BlockPos side = pos.offset(dir); + BlockState sideState = world.getBlockState(side); + if (sideState.getBlock() instanceof BlockSulphurCrystal) { + if (sideState.get(BlockSulphurCrystal.AGE) < 2) { + int age = sideState.get(BlockSulphurCrystal.AGE) + 1; + world.setBlockState(side, sideState.with(BlockSulphurCrystal.AGE, age)); + } + } + else if (sideState.isAir() || !sideState.getFluidState().isEmpty()) { + boolean water = sideState.getFluidState().getFluid().equals(Fluids.WATER); + BlockState crystal = EndBlocks.SULPHUR_CRYSTAL.getDefaultState() + .with(BlockSulphurCrystal.FACING, dir) + .with(BlockSulphurCrystal.WATERLOGGED, water) + .with(BlockSulphurCrystal.AGE, 0); + world.setBlockState(side, crystal); + } + } + } + else if (!deactivate && !state.get(ACTIVATED)) { + world.setBlockState(pos, getDefaultState().with(ACTIVATED, true)); + } + } +} diff --git a/src/main/java/ru/betterend/blocks/BlockSulphurCrystal.java b/src/main/java/ru/betterend/blocks/BlockSulphurCrystal.java new file mode 100644 index 00000000..b9a0d271 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/BlockSulphurCrystal.java @@ -0,0 +1,86 @@ +package ru.betterend.blocks; + +import java.util.Collections; +import java.util.List; + +import com.google.common.collect.Lists; + +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.FluidFillable; +import net.minecraft.block.Material; +import net.minecraft.block.MaterialColor; +import net.minecraft.block.Waterloggable; +import net.minecraft.fluid.Fluid; +import net.minecraft.fluid.FluidState; +import net.minecraft.fluid.Fluids; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.context.LootContext; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.state.property.IntProperty; +import net.minecraft.state.property.Properties; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.BlockView; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.WorldView; +import ru.betterend.blocks.basis.BlockAttached; +import ru.betterend.client.render.ERenderLayer; +import ru.betterend.interfaces.IRenderTypeable; + +public class BlockSulphurCrystal extends BlockAttached implements IRenderTypeable, Waterloggable, FluidFillable { + public static final IntProperty AGE = IntProperty.of("age", 0, 2); + public static final BooleanProperty WATERLOGGED = Properties.WATERLOGGED; + + public BlockSulphurCrystal() { + super(FabricBlockSettings.of(Material.STONE) + .materialColor(MaterialColor.YELLOW) + .breakByTool(FabricToolTags.PICKAXES) + .sounds(BlockSoundGroup.GLASS) + .requiresTool() + .noCollision()); + } + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + super.appendProperties(stateManager); + stateManager.add(AGE, WATERLOGGED); + } + + @Override + public ERenderLayer getRenderLayer() { + return ERenderLayer.CUTOUT; + } + + @Override + public List getDroppedStacks(BlockState state, LootContext.Builder builder) { + return state.get(AGE) < 2 ? Collections.emptyList() : Lists.newArrayList(new ItemStack(this)); + } + + @Override + public boolean canFillWithFluid(BlockView world, BlockPos pos, BlockState state, Fluid fluid) { + return !state.get(WATERLOGGED); + } + + @Override + public boolean tryFillWithFluid(WorldAccess world, BlockPos pos, BlockState state, FluidState fluidState) { + return !state.get(WATERLOGGED); + } + + @Override + public BlockState getPlacementState(ItemPlacementContext ctx) { + WorldView worldView = ctx.getWorld(); + BlockPos blockPos = ctx.getBlockPos(); + boolean water = worldView.getFluidState(blockPos).getFluid() == Fluids.WATER; + return super.getPlacementState(ctx).with(WATERLOGGED, water); + } + + @Override + public FluidState getFluidState(BlockState state) { + return state.get(WATERLOGGED) ? Fluids.WATER.getStill(false) : Fluids.EMPTY.getDefaultState(); + } +} diff --git a/src/main/java/ru/betterend/blocks/basis/BlockAttached.java b/src/main/java/ru/betterend/blocks/basis/BlockAttached.java new file mode 100644 index 00000000..84710157 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/basis/BlockAttached.java @@ -0,0 +1,75 @@ +package ru.betterend.blocks.basis; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.Properties; +import net.minecraft.tag.BlockTags; +import net.minecraft.util.BlockMirror; +import net.minecraft.util.BlockRotation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.WorldAccess; +import net.minecraft.world.WorldView; +import ru.betterend.util.BlocksHelper; + +public abstract class BlockAttached extends BlockBaseNotFull { + public BlockAttached(Settings settings) { + super(settings); + } + + public static final DirectionProperty FACING = Properties.FACING; + + @Override + protected void appendProperties(StateManager.Builder stateManager) { + stateManager.add(FACING); + } + + @Override + public BlockState getPlacementState(ItemPlacementContext ctx) { + BlockState blockState = this.getDefaultState(); + WorldView worldView = ctx.getWorld(); + BlockPos blockPos = ctx.getBlockPos(); + Direction[] directions = ctx.getPlacementDirections(); + for (int i = 0; i < directions.length; ++i) { + Direction direction = directions[i]; + Direction direction2 = direction.getOpposite(); + blockState = (BlockState) blockState.with(FACING, direction2); + if (blockState.canPlaceAt(worldView, blockPos)) { + return blockState; + } + } + return null; + } + + @Override + public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { + Direction direction = (Direction) state.get(FACING); + BlockPos blockPos = pos.offset(direction.getOpposite()); + return sideCoversSmallSquare(world, blockPos, direction) || world.getBlockState(blockPos).isIn(BlockTags.LEAVES); + } + + @Override + public BlockState getStateForNeighborUpdate(BlockState state, Direction facing, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) { + if (!canPlaceAt(state, world, pos)) { + return Blocks.AIR.getDefaultState(); + } + else { + return state; + } + } + + + @Override + public BlockState rotate(BlockState state, BlockRotation rotation) { + return BlocksHelper.rotateHorizontal(state, rotation, FACING); + } + + @Override + public BlockState mirror(BlockState state, BlockMirror mirror) { + return BlocksHelper.mirrorHorizontal(state, mirror, FACING); + } +} diff --git a/src/main/java/ru/betterend/blocks/basis/BlockFur.java b/src/main/java/ru/betterend/blocks/basis/BlockFur.java index 9793cc8b..232b749f 100644 --- a/src/main/java/ru/betterend/blocks/basis/BlockFur.java +++ b/src/main/java/ru/betterend/blocks/basis/BlockFur.java @@ -8,40 +8,27 @@ import com.google.common.collect.Maps; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.tool.attribute.v1.FabricToolTags; -import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; import net.minecraft.block.Material; import net.minecraft.block.ShapeContext; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.enchantment.Enchantments; import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemPlacementContext; import net.minecraft.item.ItemStack; import net.minecraft.loot.context.LootContext; import net.minecraft.loot.context.LootContextParameters; import net.minecraft.sound.BlockSoundGroup; -import net.minecraft.state.StateManager; -import net.minecraft.state.property.DirectionProperty; -import net.minecraft.state.property.Properties; -import net.minecraft.tag.BlockTags; -import net.minecraft.util.BlockMirror; -import net.minecraft.util.BlockRotation; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; -import net.minecraft.world.WorldAccess; -import net.minecraft.world.WorldView; import ru.betterend.client.render.ERenderLayer; import ru.betterend.interfaces.IRenderTypeable; -import ru.betterend.util.BlocksHelper; import ru.betterend.util.MHelper; -public class BlockFur extends BlockBaseNotFull implements IRenderTypeable { +public class BlockFur extends BlockAttached implements IRenderTypeable { private static final EnumMap BOUNDING_SHAPES = Maps.newEnumMap(Direction.class); - public static final DirectionProperty FACING = Properties.FACING; private final ItemConvertible drop; private final int dropChance; @@ -65,51 +52,12 @@ public class BlockFur extends BlockBaseNotFull implements IRenderTypeable { this.drop = drop; this.dropChance = dropChance; } - - @Override - protected void appendProperties(StateManager.Builder stateManager) { - stateManager.add(FACING); - } @Override public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext ePos) { return BOUNDING_SHAPES.get(state.get(FACING)); } - @Override - public BlockState getPlacementState(ItemPlacementContext ctx) { - BlockState blockState = this.getDefaultState(); - WorldView worldView = ctx.getWorld(); - BlockPos blockPos = ctx.getBlockPos(); - Direction[] directions = ctx.getPlacementDirections(); - for (int i = 0; i < directions.length; ++i) { - Direction direction = directions[i]; - Direction direction2 = direction.getOpposite(); - blockState = (BlockState) blockState.with(FACING, direction2); - if (blockState.canPlaceAt(worldView, blockPos)) { - return blockState; - } - } - return null; - } - - @Override - public boolean canPlaceAt(BlockState state, WorldView world, BlockPos pos) { - Direction direction = (Direction) state.get(FACING); - BlockPos blockPos = pos.offset(direction.getOpposite()); - return sideCoversSmallSquare(world, blockPos, direction) || world.getBlockState(blockPos).isIn(BlockTags.LEAVES); - } - - @Override - public BlockState getStateForNeighborUpdate(BlockState state, Direction facing, BlockState neighborState, WorldAccess world, BlockPos pos, BlockPos neighborPos) { - if (!canPlaceAt(state, world, pos)) { - return Blocks.AIR.getDefaultState(); - } - else { - return state; - } - } - @Override public List getDroppedStacks(BlockState state, LootContext.Builder builder) { ItemStack tool = builder.get(LootContextParameters.TOOL); @@ -129,16 +77,6 @@ public class BlockFur extends BlockBaseNotFull implements IRenderTypeable { return ERenderLayer.CUTOUT; } - @Override - public BlockState rotate(BlockState state, BlockRotation rotation) { - return BlocksHelper.rotateHorizontal(state, rotation, FACING); - } - - @Override - public BlockState mirror(BlockState state, BlockMirror mirror) { - return BlocksHelper.mirrorHorizontal(state, mirror, FACING); - } - static { BOUNDING_SHAPES.put(Direction.UP, VoxelShapes.cuboid(0.0, 0.0, 0.0, 1.0, 0.5, 1.0)); BOUNDING_SHAPES.put(Direction.DOWN, VoxelShapes.cuboid(0.0, 0.5, 0.0, 1.0, 1.0, 1.0)); diff --git a/src/main/java/ru/betterend/registry/EndBlocks.java b/src/main/java/ru/betterend/registry/EndBlocks.java index 1ad43e76..6f4fed77 100644 --- a/src/main/java/ru/betterend/registry/EndBlocks.java +++ b/src/main/java/ru/betterend/registry/EndBlocks.java @@ -14,6 +14,7 @@ import ru.betterend.blocks.BlockAmber; import ru.betterend.blocks.BlockBlueVine; import ru.betterend.blocks.BlockBlueVineLantern; import ru.betterend.blocks.BlockBlueVineSeed; +import ru.betterend.blocks.BlockBrimstone; import ru.betterend.blocks.BlockBubbleCoral; import ru.betterend.blocks.BlockBulbVine; import ru.betterend.blocks.BlockBulbVineSeed; @@ -37,6 +38,7 @@ import ru.betterend.blocks.BlockPath; import ru.betterend.blocks.BlockPythadendronSapling; import ru.betterend.blocks.BlockShadowBerry; import ru.betterend.blocks.BlockShadowGrass; +import ru.betterend.blocks.BlockSulphurCrystal; import ru.betterend.blocks.BlockTenaneaFlowers; import ru.betterend.blocks.BlockTenaneaSapling; import ru.betterend.blocks.BlockTerrain; @@ -96,8 +98,13 @@ public class EndBlocks { // Rocks // public static final StoneMaterial FLAVOLITE = new StoneMaterial("flavolite", MaterialColor.SAND); public static final StoneMaterial VIOLECITE = new StoneMaterial("violecite", MaterialColor.PURPLE); + public static final StoneMaterial SULFURIC_ROCK = new StoneMaterial("sulfuric_rock", MaterialColor.BROWN); + public static final Block BRIMSTONE = registerBlock("brimstone", new BlockBrimstone()); + public static final Block SULPHUR_CRYSTAL = registerBlock("sulphur_crystal", new BlockSulphurCrystal()); + public static final Block FLAVOLITE_RUNED = registerBlock("flavolite_runed", new RunedFlavolite()); public static final Block FLAVOLITE_RUNED_ETERNAL = registerBlock("flavolite_runed_eternal", new EternalRunedFlavolite()); + public static final Block ANDESITE_PEDESTAL = registerBlock("andesite_pedestal", new PedestalVanilla(Blocks.ANDESITE)); public static final Block DIORITE_PEDESTAL = registerBlock("diorite_pedestal", new PedestalVanilla(Blocks.DIORITE)); public static final Block GRANITE_PEDESTAL = registerBlock("granite_pedestal", new PedestalVanilla(Blocks.GRANITE)); diff --git a/src/main/java/ru/betterend/registry/EndItems.java b/src/main/java/ru/betterend/registry/EndItems.java index bc247e3e..014fc63d 100644 --- a/src/main/java/ru/betterend/registry/EndItems.java +++ b/src/main/java/ru/betterend/registry/EndItems.java @@ -59,6 +59,7 @@ public class EndItems { public final static Item RAW_AMBER = registerItem("raw_amber"); public final static Item AMBER_GEM = registerItem("amber_gem"); public final static Item GLOWING_BULB = registerItem("glowing_bulb"); + public final static Item CRYSTALLINE_SULFUR = registerItem("crystalline_sulfur"); // Armor // public static final Item TERMINITE_HELMET = registerItem("terminite_helmet", new ArmorItem(EndArmorMaterial.TERMINITE, EquipmentSlot.HEAD, makeSettings())); diff --git a/src/main/java/ru/betterend/util/BlocksHelper.java b/src/main/java/ru/betterend/util/BlocksHelper.java index b972a09a..d12d4896 100644 --- a/src/main/java/ru/betterend/util/BlocksHelper.java +++ b/src/main/java/ru/betterend/util/BlocksHelper.java @@ -293,4 +293,8 @@ public class BlocksHelper { public static Direction randomHorizontal(Random random) { return HORIZONTAL[random.nextInt(4)]; } + + public static Direction randomDirection(Random random) { + return DIRECTIONS[random.nextInt(6)]; + } } diff --git a/src/main/resources/assets/betterend/blockstates/brimstone.json b/src/main/resources/assets/betterend/blockstates/brimstone.json new file mode 100644 index 00000000..5bedb4cb --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/brimstone.json @@ -0,0 +1,6 @@ +{ + "variants": { + "active=true": { "model": "betterend:block/brimstone_active" }, + "active=false": { "model": "betterend:block/brimstone_normal" } + } +} diff --git a/src/main/resources/assets/betterend/blockstates/sulphur_crystal.json b/src/main/resources/assets/betterend/blockstates/sulphur_crystal.json new file mode 100644 index 00000000..7aa32efb --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/sulphur_crystal.json @@ -0,0 +1,22 @@ +{ + "variants": { + "age=0,facing=up": { "model": "betterend:block/sulphur_crystal_0" }, + "age=0,facing=down": { "model": "betterend:block/sulphur_crystal_0", "x": 180 }, + "age=0,facing=north": { "model": "betterend:block/sulphur_crystal_0", "x": 90 }, + "age=0,facing=south": { "model": "betterend:block/sulphur_crystal_0", "x": 90, "y": 180 }, + "age=0,facing=east": { "model": "betterend:block/sulphur_crystal_0", "x": 90, "y": 90 }, + "age=0,facing=west": { "model": "betterend:block/sulphur_crystal_0", "x": 90, "y": 270 }, + "age=1,facing=up": { "model": "betterend:block/sulphur_crystal_1" }, + "age=1,facing=down": { "model": "betterend:block/sulphur_crystal_1", "x": 180 }, + "age=1,facing=north": { "model": "betterend:block/sulphur_crystal_1", "x": 90 }, + "age=1,facing=south": { "model": "betterend:block/sulphur_crystal_1", "x": 90, "y": 180 }, + "age=1,facing=east": { "model": "betterend:block/sulphur_crystal_1", "x": 90, "y": 90 }, + "age=1,facing=west": { "model": "betterend:block/sulphur_crystal_1", "x": 90, "y": 270 }, + "age=2,facing=up": { "model": "betterend:block/sulphur_crystal_2" }, + "age=2,facing=down": { "model": "betterend:block/sulphur_crystal_2", "x": 180 }, + "age=2,facing=north": { "model": "betterend:block/sulphur_crystal_2", "x": 90 }, + "age=2,facing=south": { "model": "betterend:block/sulphur_crystal_2", "x": 90, "y": 180 }, + "age=2,facing=east": { "model": "betterend:block/sulphur_crystal_2", "x": 90, "y": 90 }, + "age=2,facing=west": { "model": "betterend:block/sulphur_crystal_2", "x": 90, "y": 270 } + } +} diff --git a/src/main/resources/assets/betterend/models/block/brimstone_active.json b/src/main/resources/assets/betterend/models/block/brimstone_active.json new file mode 100644 index 00000000..a1a6e3ac --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/brimstone_active.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/brimstone" + } +} diff --git a/src/main/resources/assets/betterend/models/block/brimstone_normal.json b/src/main/resources/assets/betterend/models/block/brimstone_normal.json new file mode 100644 index 00000000..c74a9fad --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/brimstone_normal.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/inactive_brimstone" + } +} diff --git a/src/main/resources/assets/betterend/models/block/sulphur_crystal_0.json b/src/main/resources/assets/betterend/models/block/sulphur_crystal_0.json new file mode 100644 index 00000000..b9f975ee --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/sulphur_crystal_0.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "betterend:block/sulphur_crystal_0" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/sulphur_crystal_1.json b/src/main/resources/assets/betterend/models/block/sulphur_crystal_1.json new file mode 100644 index 00000000..52b14e7b --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/sulphur_crystal_1.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "betterend:block/sulphur_crystal_1" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/block/sulphur_crystal_2.json b/src/main/resources/assets/betterend/models/block/sulphur_crystal_2.json new file mode 100644 index 00000000..387cf1f2 --- /dev/null +++ b/src/main/resources/assets/betterend/models/block/sulphur_crystal_2.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cross", + "textures": { + "cross": "betterend:block/sulphur_crystal_2" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/betterend/models/item/brimstone.json b/src/main/resources/assets/betterend/models/item/brimstone.json new file mode 100644 index 00000000..ec0643c1 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/brimstone.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/brimstone_normal" +} diff --git a/src/main/resources/assets/betterend/models/item/crystalline_sulfur.json b/src/main/resources/assets/betterend/models/item/crystalline_sulfur.json new file mode 100644 index 00000000..ca64b674 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/crystalline_sulfur.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "betterend:block/crystalline_sulfur" + } +} diff --git a/src/main/resources/assets/betterend/models/item/sulphur_crystal.json b/src/main/resources/assets/betterend/models/item/sulphur_crystal.json new file mode 100644 index 00000000..2021ae91 --- /dev/null +++ b/src/main/resources/assets/betterend/models/item/sulphur_crystal.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "betterend:block/crystalline_sulfur_3" + } +} diff --git a/src/main/resources/assets/betterend/textures/block/brimstone.png b/src/main/resources/assets/betterend/textures/block/brimstone.png new file mode 100644 index 0000000000000000000000000000000000000000..64efb400edff5dc0bad73c702c8b282d317b8295 GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFlBSEK+1 z<2_v*LnJPX_8eq9V!(0OXE#FuH;b|3$A7zJf1aAQz|O;KhLQVEZkFmp3^zW_bJAIL zZ9)2Vg$s}J54B!+^H}tV#I9WRgo$;s^D^en{wbH$ozr|*M(66(2O(Xa0oT3%GM+Hu U^$*LOrw?+Zr>mdKI;Vst0CXu(MgRZ+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/inactive_brimstone.png b/src/main/resources/assets/betterend/textures/block/inactive_brimstone.png new file mode 100644 index 0000000000000000000000000000000000000000..1ef1e7d40098fa84033c5f72f4e3b8ce7dfd837d GIT binary patch literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF4O~U>FVdQ&MBb@08zkDSpWb4 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/sulfuric_rock.png b/src/main/resources/assets/betterend/textures/block/sulfuric_rock.png new file mode 100644 index 0000000000000000000000000000000000000000..699c3e75a37a6151ee08d907f833ed50aab975c9 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFr);V3zWnKZtVGR7%0bC;1OBOz`zG& z^Brb9p1&dmD46f*;us=vS@g_C-opkwE*F_o(&s5Gs$#cU<)@g%7`^>J$Hv#~{~yZ# z4y$tY?moj9^SQ^BElz9Bsn*+fcJXaFXyNG~X?4b0rMK(vxf9d)MT>iPYAMynhM$a1 udsywgWL@uWwkI7A6*s6qFJ9t#y0<>bL-G9aESF@ETRmO+aC%MVWxLl9XrRNO zJmnY{pUxy#&*%R0YSTMbRx~eSU(M)k<#IsE^~X(#A1bW}k`z9?zUc zsU|8C4l|l(OX?icY%ySwT_C}5iD#4G62@hmDX*_4Uzd1yw}SE6V&*lK4}b42=h0t( nFY(96ulhGm8ZbOs%*4jVaM{)%weWr#$ngxGu6{1-oD!M<`-WFs literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/sulphur_crystal_1.png b/src/main/resources/assets/betterend/textures/block/sulphur_crystal_1.png new file mode 100644 index 0000000000000000000000000000000000000000..993c6f3e9b87e1c32a5816d8d64c8fb3fc36b9b0 GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!PTBFjv*HQ$$$R;w`W#u;Pjfzt6`QP62NHS zlqph>Fj2?r(T|T`^_$(F8L!DIbW@g=w`bnpq%`B%gS508hOu1PU597$?b}~{{KLzi z)*AfQ4uxW8#3uBfV0gkR;qaYn4)Z0ROB_W;JO^@~PZnXitiT}TY{s%$+@e)LDq+^d zqZ1h07{BN3N!U^KM(T!I%K8I`9-loPA0Wu#V90QDy+P}KyIPj)mP&R}0|N$zNl{L> U_S{*n1avlor>mdKI;Vst0GAVB5dZ)H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/sulphur_crystal_2.png b/src/main/resources/assets/betterend/textures/block/sulphur_crystal_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cfb7d5bb064ec74ba8c074320303496d8a51ee53 GIT binary patch literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!Lyz&jv*HQ$$$R;w`W#u;PmQmYGmmNkYau_ zL+|VS=Gl^`k`sP>{HovV{>+%?Ys6x~WixyG=QqYX3i>=|sgTe~DWM4f DOBHWi literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/betterend/textures/block/thermal fungus.png b/src/main/resources/assets/betterend/textures/block/thermal fungus.png new file mode 100644 index 0000000000000000000000000000000000000000..62ed78631ad15ffbffc6e423aaaa56cb4a26ba19 GIT binary patch literal 442 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc4gQ`kjv*HQ$$$R;w`W#mSk1^L6jN}JTYsOS z)659Q2%(z-6VlY(r8W8+6EAk%<;nl||F}WRL_wt^ENTlGmfbvbrNhxHMyBVnQjDaF zgk<3_;iC)^6<=Ox&ZztLN%e++e0cB%#Tz__vKTlTOq83u{zz=do^Y6*rJ#+`oSl8f z{~s^8*<^J~*(@zHH=K50dw;vW<>8~#?-TY)ur)B8SgDYHxM9Kuh8qrbb#;$;H2gUK zy-&zKqoAsF=);?@(rsJ4%^P?b87HI#TuJI>O<}mSCO3g2E!xuB(4gqE(VD2u(#o+3 z5)7MVmsEa#cbDgUd`;4h%HL*(Pn*A&ocHIL4}U}~!=}HlT0d*dnx1o`eUapoTmd&j zhBWIF_Z4`UZkQ-D?_e}!^!tA`H1y!MCWa2Xl0PDGXB8SAF-<6ToDp$Wfgy~c+iimO h0UiYfH)CcXU~sQrw^zltLPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0XRuSK~y+TrIJlb z13?glt3wndWMZ-so#?`a;6icl3G@J7K|v3Y6LYqX%U%f?r#h>-BV9i05T_eMJM}%af%*(L1;}j{FabUeZt9 zw>k}(jXFyBIvQziJRHkL^T~M!*hXP(drOrblV_PsGCd65veXw>5wwur-Y9$7GU~V? z4-ru&R{|0oK-pk3pa5`&|HR%P(?QaH;D9Luig3dXP{16R3sHp