From 07ca259c442c7284d7d653e3b38557ad06d52217 Mon Sep 17 00:00:00 2001 From: TheClashFruit Date: Tue, 27 Aug 2024 21:22:02 +0200 Subject: [PATCH] feat: implement the mechanical toilet mostly and it's other stuff --- .../blocks/toilet/MechanicalToiletBlock.java | 103 +++ .../toilet/MechanicalToiletBlockEntity.java | 96 +++ .../pissnshit/registry/Blocks.java | 43 ++ .../pissnshit/registry/ItemGroups.java | 7 +- .../pissnshit/registry/Items.java | 17 + .../blockstates/mechanical_toilet.json | 19 + .../assets/pissnshit/lang/en_us.json | 10 +- .../models/block/mechanical_toilet.json | 687 +++++++++--------- .../assets/pissnshit/models/item/flushed.json | 6 + .../models/item/mechanical_toilet.json | 3 + .../pissnshit/textures/item/flushed.png | Bin 0 -> 761 bytes .../advancements/pissnshit/flushed.json | 31 + .../pissnshit/mechanical_marvel.json | 31 + .../pissnshit/recipes/mechanical_toilet.json | 29 + 14 files changed, 752 insertions(+), 330 deletions(-) create mode 100644 src/main/java/me/theclashfruit/pissnshit/blocks/toilet/MechanicalToiletBlock.java create mode 100644 src/main/java/me/theclashfruit/pissnshit/blocks/toilet/MechanicalToiletBlockEntity.java create mode 100644 src/main/resources/assets/pissnshit/blockstates/mechanical_toilet.json create mode 100644 src/main/resources/assets/pissnshit/models/item/flushed.json create mode 100644 src/main/resources/assets/pissnshit/models/item/mechanical_toilet.json create mode 100644 src/main/resources/assets/pissnshit/textures/item/flushed.png create mode 100644 src/main/resources/data/minecraft/advancements/pissnshit/flushed.json create mode 100644 src/main/resources/data/minecraft/advancements/pissnshit/mechanical_marvel.json create mode 100644 src/main/resources/data/pissnshit/recipes/mechanical_toilet.json diff --git a/src/main/java/me/theclashfruit/pissnshit/blocks/toilet/MechanicalToiletBlock.java b/src/main/java/me/theclashfruit/pissnshit/blocks/toilet/MechanicalToiletBlock.java new file mode 100644 index 0000000..8cee95a --- /dev/null +++ b/src/main/java/me/theclashfruit/pissnshit/blocks/toilet/MechanicalToiletBlock.java @@ -0,0 +1,103 @@ +package me.theclashfruit.pissnshit.blocks.toilet; + +import com.simibubi.create.content.equipment.wrench.IWrenchable; +import com.simibubi.create.foundation.block.IBE; +import me.theclashfruit.pissnshit.registry.Blocks; +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.HorizontalFacingBlock; +import net.minecraft.block.ShapeContext; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.item.ItemUsageContext; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.Properties; +import net.minecraft.util.function.BooleanBiFunction; +import net.minecraft.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import net.minecraft.world.WorldView; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; + +import static net.minecraft.state.property.Properties.HORIZONTAL_FACING; + +public class MechanicalToiletBlock extends HorizontalFacingBlock implements IBE, IWrenchable { + public MechanicalToiletBlock(Settings properties) { + super(properties); + + setDefaultState(getDefaultState().with(HORIZONTAL_FACING, Direction.NORTH)); + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(HORIZONTAL_FACING); + } + + @Override + public BlockState getPlacementState(ItemPlacementContext ctx) { + return super.getPlacementState(ctx).with(Properties.HORIZONTAL_FACING, ctx.getHorizontalPlayerFacing().getOpposite()); + } + + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext ctx) { + Direction dir = state.get(FACING); + VoxelShape shape = VoxelShapes.empty(); + + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.1875, 0, 0.125, 0.8125, 0.125, 1), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.125, 0.125, 0.0625, 0.875, 0.25, 0.75), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.0625, 0.5, 0, 0.9375, 0.625, 0.125), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.0625, 0.5, 0.6875, 0.9375, 0.625, 0.8125), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.0625, 0.5, 0.125, 0.1875, 0.625, 0.6875), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.8125, 0.5, 0.125, 0.9375, 0.625, 0.6875), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.125, 0.125, 0.75, 0.875, 0.5, 0.984375), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.125, 0.5, 0.859375, 0.875, 1.1875, 0.984375), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.109375, 1.15625, 0.84375, 0.890625, 1.25, 1), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.15625, 0.625, 0.765625, 0.859375, 1.375, 0.828125), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.125, 0.25, 0.0625, 0.25, 0.5, 0.75), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.75, 0.25, 0.0625, 0.875, 0.5, 0.75), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.25, 0.25, 0.0625, 0.75, 0.5, 0.1875), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.25, 0.25, 0.625, 0.75, 0.5, 0.75), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.25, 0.25, 0.4375, 0.75, 0.3125, 0.625), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.25, 0.25, 0.1875, 0.375, 0.3125, 0.4375), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.625, 0.25, 0.1875, 0.75, 0.3125, 0.4375), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.375, 0.25, 0.1875, 0.4375, 0.328125, 0.4375), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.4375, 0.25, 0.375, 0.5625, 0.328125, 0.4375), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.5625, 0.25, 0.1875, 0.625, 0.328125, 0.4375), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.0625, 0.921875, 0.9375, 0.125, 1.046875, 0.96875), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.421875, 0.25, 0.171875, 0.578125, 0.296875, 0.375), BooleanBiFunction.OR); + shape = VoxelShapes.combine(shape, VoxelShapes.cuboid(0.1875, 0.1875, 0.875, 0.8125, 0.8125, 1), BooleanBiFunction.OR); + + return rotateShape(Direction.NORTH, dir, shape); + } + + @Override + public BlockState updateAfterWrenched(BlockState newState, ItemUsageContext context) { + return newState; + } + + @Override + public Class getBlockEntityClass() { + return MechanicalToiletBlockEntity.class; + } + + @Override + public BlockEntityType getBlockEntityType() { + return Blocks.MECHANICAL_TOILET_BLOCK_ENTITY; + } + + public static VoxelShape rotateShape(Direction from, Direction to, VoxelShape shape) { + VoxelShape[] buffer = new VoxelShape[]{ shape, VoxelShapes.empty() }; + + int times = (to.getHorizontal() - from.getHorizontal() + 4) % 4; + + for (int i = 0; i < times; i++) { + buffer[0].forEachBox((minX, minY, minZ, maxX, maxY, maxZ) -> buffer[1] = VoxelShapes.combine(buffer[1], VoxelShapes.cuboid(1-maxZ, minY, minX, 1-minZ, maxY, maxX), BooleanBiFunction.OR)); + + buffer[0] = buffer[1]; + buffer[1] = VoxelShapes.empty(); + } + + return buffer[0]; + } +} diff --git a/src/main/java/me/theclashfruit/pissnshit/blocks/toilet/MechanicalToiletBlockEntity.java b/src/main/java/me/theclashfruit/pissnshit/blocks/toilet/MechanicalToiletBlockEntity.java new file mode 100644 index 0000000..7463c66 --- /dev/null +++ b/src/main/java/me/theclashfruit/pissnshit/blocks/toilet/MechanicalToiletBlockEntity.java @@ -0,0 +1,96 @@ +package me.theclashfruit.pissnshit.blocks.toilet; + +import com.simibubi.create.content.equipment.goggles.IHaveGoggleInformation; +import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; +import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; +import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform; +import com.simibubi.create.foundation.blockEntity.behaviour.fluid.SmartFluidTankBehaviour; +import com.simibubi.create.foundation.fluid.CombinedTankWrapper; +import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.utility.LangBuilder; +import com.simibubi.create.foundation.utility.VecHelper; +import com.simibubi.create.infrastructure.config.AllConfigs; +import io.github.fabricators_of_create.porting_lib.fluids.FluidStack; +import io.github.fabricators_of_create.porting_lib.util.FluidTextUtil; +import io.github.fabricators_of_create.porting_lib.util.FluidUnit; +import me.theclashfruit.pissnshit.registry.Blocks; +import net.fabricmc.fabric.api.transfer.v1.fluid.FluidConstants; +import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; +import net.fabricmc.fabric.api.transfer.v1.storage.Storage; +import net.fabricmc.fabric.api.transfer.v1.storage.base.SidedStorageBlockEntity; +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.text.Text; +import net.minecraft.text.TextColor; +import net.minecraft.util.Formatting; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.Vec3d; + +import javax.annotation.Nullable; +import java.awt.*; +import java.util.List; + +public class MechanicalToiletBlockEntity extends SmartBlockEntity implements IHaveGoggleInformation, SidedStorageBlockEntity { + private SmartFluidTankBehaviour tank; + + public MechanicalToiletBlockEntity(BlockPos pos, BlockState state) { + super(Blocks.MECHANICAL_TOILET_BLOCK_ENTITY, pos, state); + } + + @Override + public void addBehaviours(List behaviours) { + tank = new SmartFluidTankBehaviour(SmartFluidTankBehaviour.OUTPUT, this, 2, FluidConstants.BUCKET, true) + .forbidInsertion(); + + behaviours.add(tank); + } + + @Nullable + @Override + public Storage getFluidStorage(@Nullable Direction face) { + return tank.getCapability(); + } + + @Override + public void tick() { + super.tick(); + + if (world.isClient) return; + } + + @Override + public boolean addToGoggleTooltip(List tooltip, boolean isPlayerSneaking) { + Lang.translate("gui.goggles.basin_contents") + .forGoggles(tooltip); + + boolean isEmpty = true; + + FluidUnit unit = AllConfigs.client().fluidUnitType.get(); + LangBuilder unitSuffix = Lang.translate(unit.getTranslationKey()); + boolean simplify = AllConfigs.client().simplifyFluidUnit.get(); + + for (SmartFluidTankBehaviour.TankSegment tank : tank.getTanks()) { + FluidStack fluidStack = tank.getTank().getFluid(); + + if (fluidStack.isEmpty()) + continue; + + Lang.text("") + .add(Lang.fluidName(fluidStack) + .add(Lang.text(" ")) + .style(Formatting.GRAY) + .add(Lang.text(FluidTextUtil.getUnicodeMillibuckets(fluidStack.getAmount(), unit, simplify)) + .add(unitSuffix) + .style(Formatting.BLUE))) + .forGoggles(tooltip, 1); + + isEmpty = false; + } + + if (isEmpty) + tooltip.remove(0); + + return true; + } +} diff --git a/src/main/java/me/theclashfruit/pissnshit/registry/Blocks.java b/src/main/java/me/theclashfruit/pissnshit/registry/Blocks.java index 584152f..01c1b66 100644 --- a/src/main/java/me/theclashfruit/pissnshit/registry/Blocks.java +++ b/src/main/java/me/theclashfruit/pissnshit/registry/Blocks.java @@ -1,14 +1,27 @@ package me.theclashfruit.pissnshit.registry; +import com.simibubi.create.content.kinetics.BlockStressDefaults; +import com.simibubi.create.foundation.data.AssetLookup; +import com.simibubi.create.foundation.data.BlockStateGen; +import com.simibubi.create.foundation.data.CreateRegistrate; +import com.simibubi.create.foundation.data.SharedProperties; +import com.tterrag.registrate.util.entry.BlockEntityEntry; +import com.tterrag.registrate.util.entry.BlockEntry; +import me.theclashfruit.pissnshit.blocks.toilet.MechanicalToiletBlock; +import me.theclashfruit.pissnshit.blocks.toilet.MechanicalToiletBlockEntity; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.*; +import net.minecraft.block.entity.BlockEntityType; import net.minecraft.block.piston.PistonBehavior; +import net.minecraft.client.render.RenderLayer; import net.minecraft.fluid.FlowableFluid; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.util.Identifier; +import static com.simibubi.create.foundation.data.ModelGen.customItemModel; +import static com.simibubi.create.foundation.data.TagGen.axeOrPickaxe; import static me.theclashfruit.pissnshit.PissAndShit.MOD_ID; import static me.theclashfruit.pissnshit.registry.Fluids.STILL_PISS; @@ -25,5 +38,35 @@ public class Blocks { .luminance(CandleBlock.STATE_TO_LUMINANCE) .pistonBehavior(PistonBehavior.DESTROY))); + public static final CreateRegistrate REGISTRATE = CreateRegistrate.create(MOD_ID); + + public static final MechanicalToiletBlock MECHANICAL_TOILET = Registry.register(Registries.BLOCK, new Identifier(MOD_ID, "mechanical_toilet"), new MechanicalToiletBlock(AbstractBlock.Settings.create() + .mapColor(MapColor.ORANGE) + )); + + public static final BlockEntityType MECHANICAL_TOILET_BLOCK_ENTITY = Registry.register(Registries.BLOCK_ENTITY_TYPE, new Identifier(MOD_ID, "mechanical_toilet_block_entity"), BlockEntityType.Builder.create(MechanicalToiletBlockEntity::new, MECHANICAL_TOILET).build(null)); + + /* + REGISTRATE + .block("encased_fan", MechanicalToiletBlock::new) + .initialProperties(SharedProperties::copperMetal) + .properties(p -> p.mapColor(MapColor.ORANGE)) + .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + .transform(BlockStressDefaults.setImpact(8.0)) + .item() + .transform(customItemModel()) + .addLayer(() -> RenderLayer::getCutout) + .register(); + */ + + /* + public static final BlockEntityEntry MECHANICAL_TOILET_ENTITY = REGISTRATE + .blockEntity("encased_fan", MechanicalToiletBlockEntity::new) + .instance(() -> MechanicalToiletCogInstance::new) + .validBlocks(MECHANICAL_TOILET) + .renderer(() -> MechanicalToiletRenderer::new) + .register(); + */ + public static void init() {} } diff --git a/src/main/java/me/theclashfruit/pissnshit/registry/ItemGroups.java b/src/main/java/me/theclashfruit/pissnshit/registry/ItemGroups.java index 468aa57..3f60459 100644 --- a/src/main/java/me/theclashfruit/pissnshit/registry/ItemGroups.java +++ b/src/main/java/me/theclashfruit/pissnshit/registry/ItemGroups.java @@ -23,8 +23,13 @@ public class ItemGroups { entries.add(Items.SHIT); entries.add(Items.HOLY_SHIT); + // 😳 + entries.add(Items.FLUSHED); + entries.add(Items.SHIT_CANDLE); - entries.add(Blocks.SHIT_BLOCK); + entries.add(Items.SHIT_BLOCK); + + entries.add(Items.MECHANICAL_TOILET); }) .build(); diff --git a/src/main/java/me/theclashfruit/pissnshit/registry/Items.java b/src/main/java/me/theclashfruit/pissnshit/registry/Items.java index d32dfe6..40aebf7 100644 --- a/src/main/java/me/theclashfruit/pissnshit/registry/Items.java +++ b/src/main/java/me/theclashfruit/pissnshit/registry/Items.java @@ -76,6 +76,15 @@ public class Items { ) ); + public static Item FLUSHED = register( + "flushed", + new Item( + new Item + .Settings() + .rarity(Rarity.EPIC) + ) + ); + public static Item SHIT_BLOCK = register( "shit_block", new BlockItem( @@ -91,6 +100,14 @@ public class Items { ) ); + public static Item MECHANICAL_TOILET = register( + "mechanical_toilet", + new BlockItem( + Blocks.MECHANICAL_TOILET, + new Item.Settings() + ) + ); + public static void init() {} private static Item register(String id, Item item) { diff --git a/src/main/resources/assets/pissnshit/blockstates/mechanical_toilet.json b/src/main/resources/assets/pissnshit/blockstates/mechanical_toilet.json new file mode 100644 index 0000000..1bb3a08 --- /dev/null +++ b/src/main/resources/assets/pissnshit/blockstates/mechanical_toilet.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "pissnshit:block/mechanical_toilet" + }, + "facing=west": { + "model": "pissnshit:block/mechanical_toilet", + "y": 270 + }, + "facing=east": { + "model": "pissnshit:block/mechanical_toilet", + "y": 90 + }, + "facing=south": { + "model": "pissnshit:block/mechanical_toilet", + "y": 180 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/pissnshit/lang/en_us.json b/src/main/resources/assets/pissnshit/lang/en_us.json index 6c828ee..6c9df84 100644 --- a/src/main/resources/assets/pissnshit/lang/en_us.json +++ b/src/main/resources/assets/pissnshit/lang/en_us.json @@ -5,13 +5,15 @@ "item.pissnshit.shit": "Shit", "item.pissnshit.holy_shit": "Holy Shit", + "item.pissnshit.flushed": "Flushed", + "block.pissnshit.piss": "Piss", "block.pissnshit.shit_block": "Shit Block", "block.pissnshit.shit_candle": "Shit Candle", "block.pissnshit.shit_candle.tooltip": "§8§oIt smells like shit...", - "block.pissnshit.mechanical_sanctifier": "Mechanical Sanctifier", + "block.pissnshit.mechanical_toilet": "Mechanical Toilet", "effect.pissnshit.diarrhea": "Diarrhea", @@ -38,6 +40,12 @@ "advancements.pissnshit.piss_cubed.title": "Piss³", "advancements.pissnshit.piss_cubed.description": "Obtain a bucket of piss.", + "advancements.pissnshit.mechanical_marvel.title": "Mechanical Marvel", + "advancements.pissnshit.mechanical_marvel.description": "Craft a mechanical toilet.", + + "advancements.pissnshit.flushed.title": "Flush(ed)", + "advancements.pissnshit.flushed.description": "Use your newly operational mechanical toilet.", + "death.attack.fullOfPiss": "%1$s got full of piss.", "death.attack.fullOfShit": "%1$s got full of shit.", diff --git a/src/main/resources/assets/pissnshit/models/block/mechanical_toilet.json b/src/main/resources/assets/pissnshit/models/block/mechanical_toilet.json index e332ef6..c63436a 100644 --- a/src/main/resources/assets/pissnshit/models/block/mechanical_toilet.json +++ b/src/main/resources/assets/pissnshit/models/block/mechanical_toilet.json @@ -1,330 +1,361 @@ { - "credit": "Made with Blockbench", - "textures": { - "0": "minecraft:block/water_still", - "1": "create:block/pipes", - "missing": "minecraft:block/copper_block", - "particle": "minecraft:block/copper_block" - }, - "elements": [ - { - "from": [3, 0, 2], - "to": [13, 2, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [3, 0, 0]}, - "color": 5, - "faces": { - "north": {"uv": [0, 0, 10, 2], "texture": "#missing"}, - "east": {"uv": [0, 0, 14, 2], "texture": "#missing"}, - "south": {"uv": [0, 0, 10, 2], "texture": "#missing"}, - "west": {"uv": [0, 0, 14, 2], "texture": "#missing"}, - "up": {"uv": [0, 0, 10, 14], "texture": "#missing"}, - "down": {"uv": [0, 0, 10, 14], "texture": "#missing"} - } - }, - { - "from": [2, 2, 1], - "to": [14, 4, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [2, 2, 1]}, - "color": 3, - "faces": { - "north": {"uv": [0, 0, 12, 2], "texture": "#missing"}, - "east": {"uv": [0, 0, 11, 2], "texture": "#missing"}, - "south": {"uv": [0, 0, 12, 2], "texture": "#missing"}, - "west": {"uv": [0, 0, 11, 2], "texture": "#missing"}, - "up": {"uv": [0, 0, 12, 11], "texture": "#missing"}, - "down": {"uv": [0, 0, 12, 11], "texture": "#missing"} - } - }, - { - "from": [1, 8, 0], - "to": [15, 10, 2], - "rotation": {"angle": 0, "axis": "y", "origin": [1, 8, 0]}, - "color": 4, - "faces": { - "north": {"uv": [0, 0, 14, 2], "texture": "#missing"}, - "east": {"uv": [0, 0, 2, 2], "texture": "#missing"}, - "south": {"uv": [0, 0, 14, 2], "texture": "#missing"}, - "west": {"uv": [0, 0, 2, 2], "texture": "#missing"}, - "up": {"uv": [0, 0, 14, 2], "texture": "#missing"}, - "down": {"uv": [0, 0, 14, 2], "texture": "#missing"} - } - }, - { - "from": [1, 8, 11], - "to": [15, 10, 13], - "rotation": {"angle": 0, "axis": "y", "origin": [1, 8, 11]}, - "color": 4, - "faces": { - "north": {"uv": [0, 0, 14, 2], "texture": "#missing"}, - "east": {"uv": [0, 0, 2, 2], "texture": "#missing"}, - "south": {"uv": [0, 0, 14, 2], "texture": "#missing"}, - "west": {"uv": [0, 0, 2, 2], "texture": "#missing"}, - "up": {"uv": [0, 0, 14, 2], "texture": "#missing"}, - "down": {"uv": [0, 0, 14, 2], "texture": "#missing"} - } - }, - { - "from": [1, 8, 2], - "to": [3, 10, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [3, 8, 0]}, - "color": 4, - "faces": { - "north": {"uv": [0, 0, 2, 2], "texture": "#missing"}, - "east": {"uv": [0, 0, 9, 2], "texture": "#missing"}, - "south": {"uv": [0, 0, 2, 2], "texture": "#missing"}, - "west": {"uv": [0, 0, 9, 2], "texture": "#missing"}, - "up": {"uv": [0, 0, 9, 2], "rotation": 90, "texture": "#missing"}, - "down": {"uv": [0, 0, 9, 2], "rotation": 270, "texture": "#missing"} - } - }, - { - "from": [13, 8, 2], - "to": [15, 10, 11], - "rotation": {"angle": 0, "axis": "y", "origin": [15, 8, 0]}, - "color": 4, - "faces": { - "north": {"uv": [0, 0, 2, 2], "texture": "#missing"}, - "east": {"uv": [0, 0, 9, 2], "texture": "#missing"}, - "south": {"uv": [0, 0, 2, 2], "texture": "#missing"}, - "west": {"uv": [0, 0, 9, 2], "texture": "#missing"}, - "up": {"uv": [0, 0, 9, 2], "rotation": 90, "texture": "#missing"}, - "down": {"uv": [0, 0, 9, 2], "rotation": 270, "texture": "#missing"} - } - }, - { - "from": [2, 2, 12], - "to": [14, 8, 15.75], - "rotation": {"angle": 0, "axis": "y", "origin": [12, 6, 13]}, - "color": 1, - "faces": { - "north": {"uv": [0, 0, 12, 6], "texture": "#missing"}, - "east": {"uv": [0, 0, 3.75, 6], "texture": "#missing"}, - "south": {"uv": [0, 0, 12, 6], "texture": "#missing"}, - "west": {"uv": [0, 0, 3.75, 6], "texture": "#missing"}, - "up": {"uv": [0, 0, 12, 3.75], "texture": "#missing"}, - "down": {"uv": [0, 0, 12, 3.75], "texture": "#missing"} - } - }, - { - "from": [2, 8, 13.75], - "to": [14, 19, 15.75], - "rotation": {"angle": 0, "axis": "y", "origin": [2, 8, 14]}, - "faces": { - "north": {"uv": [2, 2, 14, 13], "texture": "#missing"}, - "east": {"uv": [0, 2, 2, 13], "texture": "#missing"}, - "south": {"uv": [2, 2, 14, 13], "texture": "#missing"}, - "west": {"uv": [14, 2, 16, 13], "texture": "#missing"}, - "up": {"uv": [2, 0, 14, 2], "texture": "#missing"}, - "down": {"uv": [2, 13, 14, 15], "texture": "#missing"} - } - }, - { - "from": [1.75, 18.5, 13.5], - "to": [14.25, 20, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [2, 18, 14]}, - "faces": { - "north": {"uv": [0, 0, 12.5, 1.5], "texture": "#missing"}, - "east": {"uv": [0, 0, 2.5, 1.5], "texture": "#missing"}, - "south": {"uv": [1.75, 0.5, 14.25, 2], "texture": "#missing"}, - "west": {"uv": [0, 0, 2.5, 1.5], "texture": "#missing"}, - "up": {"uv": [1.75, 7, 14.25, 9.5], "texture": "#missing"}, - "down": {"uv": [0, 0, 12.5, 2.5], "texture": "#missing"} - } - }, - { - "from": [2.5, 10, 12.25], - "to": [13.75, 22, 13.25], - "rotation": {"angle": 0, "axis": "x", "origin": [3, 10, 12.25]}, - "color": 5, - "faces": { - "north": {"uv": [0, 0, 11.25, 12], "texture": "#missing"}, - "east": {"uv": [0, 0, 1, 12], "texture": "#missing"}, - "south": {"uv": [0, 0, 11.25, 12], "texture": "#missing"}, - "west": {"uv": [0, 0, 1, 12], "texture": "#missing"}, - "up": {"uv": [0, 0, 11.25, 1], "texture": "#missing"}, - "down": {"uv": [0, 0, 11.25, 1], "texture": "#missing"} - } - }, - { - "from": [2, 4, 1], - "to": [4, 8, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [2, 6, 1]}, - "color": 4, - "faces": { - "north": {"uv": [0, 0, 2, 4], "texture": "#missing"}, - "east": {"uv": [0, 0, 11, 4], "texture": "#missing"}, - "south": {"uv": [0, 0, 2, 4], "texture": "#missing"}, - "west": {"uv": [0, 0, 11, 4], "texture": "#missing"}, - "up": {"uv": [0, 0, 2, 11], "texture": "#missing"}, - "down": {"uv": [0, 0, 2, 11], "texture": "#missing"} - } - }, - { - "from": [12, 4, 1], - "to": [14, 8, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [12, 6, 1]}, - "color": 4, - "faces": { - "north": {"uv": [0, 0, 2, 4], "texture": "#missing"}, - "east": {"uv": [0, 0, 11, 4], "texture": "#missing"}, - "south": {"uv": [0, 0, 2, 4], "texture": "#missing"}, - "west": {"uv": [0, 0, 11, 4], "texture": "#missing"}, - "up": {"uv": [0, 0, 2, 11], "texture": "#missing"}, - "down": {"uv": [0, 0, 2, 11], "texture": "#missing"} - } - }, - { - "from": [4, 4, 1], - "to": [12, 8, 3], - "rotation": {"angle": 0, "axis": "y", "origin": [12, 6, 1]}, - "color": 4, - "faces": { - "north": {"uv": [0, 0, 8, 4], "texture": "#missing"}, - "east": {"uv": [0, 0, 2, 4], "texture": "#missing"}, - "south": {"uv": [0, 0, 8, 4], "texture": "#missing"}, - "west": {"uv": [0, 0, 2, 4], "texture": "#missing"}, - "up": {"uv": [0, 0, 2, 8], "rotation": 90, "texture": "#missing"}, - "down": {"uv": [0, 0, 2, 8], "rotation": 270, "texture": "#missing"} - } - }, - { - "from": [4, 4, 10], - "to": [12, 8, 12], - "rotation": {"angle": 0, "axis": "y", "origin": [12, 6, 10]}, - "color": 4, - "faces": { - "north": {"uv": [0, 0, 8, 4], "texture": "#missing"}, - "east": {"uv": [0, 0, 2, 4], "texture": "#missing"}, - "south": {"uv": [0, 0, 8, 4], "texture": "#missing"}, - "west": {"uv": [0, 0, 2, 4], "texture": "#missing"}, - "up": {"uv": [0, 0, 2, 8], "rotation": 90, "texture": "#missing"}, - "down": {"uv": [0, 0, 2, 8], "rotation": 270, "texture": "#missing"} - } - }, - { - "from": [4, 4, 7], - "to": [12, 5, 10], - "rotation": {"angle": 0, "axis": "y", "origin": [4, 4, 8]}, - "color": 7, - "faces": { - "north": {"uv": [0, 0, 8, 1], "texture": "#missing"}, - "east": {"uv": [0, 0, 3, 1], "texture": "#missing"}, - "south": {"uv": [0, 0, 8, 1], "texture": "#missing"}, - "west": {"uv": [0, 0, 3, 1], "texture": "#missing"}, - "up": {"uv": [0, 0, 8, 3], "texture": "#missing"}, - "down": {"uv": [0, 0, 8, 3], "texture": "#missing"} - } - }, - { - "from": [4, 4, 3], - "to": [6, 5, 7], - "rotation": {"angle": 0, "axis": "y", "origin": [4, 4, 5]}, - "color": 7, - "faces": { - "north": {"uv": [0, 0, 2, 1], "texture": "#missing"}, - "east": {"uv": [0, 0, 4, 1], "texture": "#missing"}, - "south": {"uv": [0, 0, 2, 1], "texture": "#missing"}, - "west": {"uv": [0, 0, 4, 1], "texture": "#missing"}, - "up": {"uv": [0, 0, 2, 4], "texture": "#missing"}, - "down": {"uv": [0, 0, 2, 4], "texture": "#missing"} - } - }, - { - "from": [10, 4, 3], - "to": [12, 5, 7], - "rotation": {"angle": 0, "axis": "y", "origin": [4, 4, 5]}, - "color": 7, - "faces": { - "north": {"uv": [0, 0, 2, 1], "texture": "#missing"}, - "east": {"uv": [0, 0, 4, 1], "texture": "#missing"}, - "south": {"uv": [0, 0, 2, 1], "texture": "#missing"}, - "west": {"uv": [0, 0, 4, 1], "texture": "#missing"}, - "up": {"uv": [0, 0, 2, 4], "texture": "#missing"}, - "down": {"uv": [0, 0, 2, 4], "texture": "#missing"} - } - }, - { - "from": [6, 4, 3], - "to": [7, 5.25, 7], - "rotation": {"angle": 0, "axis": "y", "origin": [6, 4, 5]}, - "color": 9, - "faces": { - "north": {"uv": [0, 0, 1, 1.25], "texture": "#missing"}, - "east": {"uv": [0, 0, 4, 1.25], "texture": "#missing"}, - "south": {"uv": [0, 0, 1, 1.25], "texture": "#missing"}, - "west": {"uv": [0, 0, 4, 1.25], "texture": "#missing"}, - "up": {"uv": [0, 0, 1, 4], "texture": "#missing"}, - "down": {"uv": [0, 0, 1, 4], "texture": "#missing"} - } - }, - { - "from": [7, 4, 6], - "to": [9, 5.25, 7], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 6]}, - "color": 9, - "faces": { - "north": {"uv": [0, 0, 2, 1.25], "texture": "#missing"}, - "east": {"uv": [0, 0, 1, 1.25], "texture": "#missing"}, - "south": {"uv": [0, 0, 2, 1.25], "texture": "#missing"}, - "west": {"uv": [0, 0, 1, 1.25], "texture": "#missing"}, - "up": {"uv": [0, 0, 1, 2], "rotation": 90, "texture": "#missing"}, - "down": {"uv": [0, 0, 1, 2], "rotation": 270, "texture": "#missing"} - } - }, - { - "from": [9, 4, 3], - "to": [10, 5.25, 7], - "rotation": {"angle": 0, "axis": "y", "origin": [6, 4, 5]}, - "color": 9, - "faces": { - "north": {"uv": [0, 0, 1, 1.25], "texture": "#missing"}, - "east": {"uv": [0, 0, 4, 1.25], "texture": "#missing"}, - "south": {"uv": [0, 0, 1, 1.25], "texture": "#missing"}, - "west": {"uv": [0, 0, 4, 1.25], "texture": "#missing"}, - "up": {"uv": [0, 0, 1, 4], "texture": "#missing"}, - "down": {"uv": [0, 0, 1, 4], "texture": "#missing"} - } - }, - { - "from": [1, 14.75, 15], - "to": [2, 16.75, 15.5], - "rotation": {"angle": -22.5, "axis": "x", "origin": [0, 14.75, 14.25]}, - "color": 6, - "faces": { - "north": {"uv": [0, 0, 1, 2], "texture": "#missing"}, - "east": {"uv": [0, 0, 0.5, 2], "texture": "#missing"}, - "south": {"uv": [0, 0, 1, 2], "texture": "#missing"}, - "west": {"uv": [0, 0, 0.5, 2], "texture": "#missing"}, - "up": {"uv": [0, 0, 1, 0.5], "texture": "#missing"}, - "down": {"uv": [0, 0, 1, 0.5], "texture": "#missing"} - } - }, - { - "name": "water", - "from": [6.75, 4, 2.75], - "to": [9.25, 4.75, 6], - "rotation": {"angle": 0, "axis": "y", "origin": [4, 5, 8]}, - "faces": { - "north": {"uv": [1, 4, 2.75, 13], "rotation": 90, "texture": "#0"}, - "east": {"uv": [3, 2, 11, 3.75], "texture": "#0"}, - "south": {"uv": [3, 12, 12, 13.75], "texture": "#0"}, - "west": {"uv": [12, 4, 13.75, 12], "rotation": 270, "texture": "#0"}, - "up": {"uv": [3, 4, 6, 8], "texture": "#0"}, - "down": {"uv": [3, 4, 6, 8], "texture": "#0"} - } - }, - { - "from": [3, 3, 14], - "to": [13, 13, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 28, 8]}, - "faces": { - "north": {"uv": [6, 11, 11, 16], "texture": "#1"}, - "east": {"uv": [11.5, 18.5, 10.5, 11], "texture": "#1"}, - "south": {"uv": [11, 11, 16, 16], "texture": "#1"}, - "west": {"uv": [11.5, 18.5, 10.5, 11], "texture": "#1"}, - "up": {"uv": [11.5, 18.5, 10.5, 11], "texture": "#1"}, - "down": {"uv": [11.5, 18.5, 10.5, 11], "texture": "#1"} - } - } - ] + "credit": "Made with Blockbench", + "textures": { + "0": "minecraft:block/water_still", + "1": "create:block/pipes", + "missing": "minecraft:block/copper_block", + "particle": "minecraft:block/copper_block" + }, + "elements": [ + { + "from": [3, 0, 2], + "to": [13, 2, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [3, 0, 0]}, + "color": 5, + "faces": { + "north": {"uv": [0, 0, 10, 2], "texture": "#missing"}, + "east": {"uv": [0, 0, 14, 2], "texture": "#missing"}, + "south": {"uv": [0, 0, 10, 2], "texture": "#missing"}, + "west": {"uv": [0, 0, 14, 2], "texture": "#missing"}, + "up": {"uv": [0, 0, 10, 14], "texture": "#missing"}, + "down": {"uv": [0, 0, 10, 14], "texture": "#missing"} + } + }, + { + "from": [2, 2, 1], + "to": [14, 4, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [2, 2, 1]}, + "color": 3, + "faces": { + "north": {"uv": [0, 0, 12, 2], "texture": "#missing"}, + "east": {"uv": [0, 0, 11, 2], "texture": "#missing"}, + "south": {"uv": [0, 0, 12, 2], "texture": "#missing"}, + "west": {"uv": [0, 0, 11, 2], "texture": "#missing"}, + "up": {"uv": [0, 0, 12, 11], "texture": "#missing"}, + "down": {"uv": [0, 0, 12, 11], "texture": "#missing"} + } + }, + { + "from": [1, 8, 0], + "to": [15, 10, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [1, 8, 0]}, + "color": 4, + "faces": { + "north": {"uv": [0, 0, 14, 2], "texture": "#missing"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#missing"}, + "south": {"uv": [0, 0, 14, 2], "texture": "#missing"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#missing"}, + "up": {"uv": [0, 0, 14, 2], "texture": "#missing"}, + "down": {"uv": [0, 0, 14, 2], "texture": "#missing"} + } + }, + { + "from": [1, 8, 11], + "to": [15, 10, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [1, 8, 11]}, + "color": 4, + "faces": { + "north": {"uv": [0, 0, 14, 2], "texture": "#missing"}, + "east": {"uv": [0, 0, 2, 2], "texture": "#missing"}, + "south": {"uv": [0, 0, 14, 2], "texture": "#missing"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#missing"}, + "up": {"uv": [0, 0, 14, 2], "texture": "#missing"}, + "down": {"uv": [0, 0, 14, 2], "texture": "#missing"} + } + }, + { + "from": [1, 8, 2], + "to": [3, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [3, 8, 0]}, + "color": 4, + "faces": { + "north": {"uv": [0, 0, 2, 2], "texture": "#missing"}, + "east": {"uv": [0, 0, 9, 2], "texture": "#missing"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#missing"}, + "west": {"uv": [0, 0, 9, 2], "texture": "#missing"}, + "up": {"uv": [0, 0, 9, 2], "rotation": 90, "texture": "#missing"}, + "down": {"uv": [0, 0, 9, 2], "rotation": 270, "texture": "#missing"} + } + }, + { + "from": [13, 8, 2], + "to": [15, 10, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 8, 0]}, + "color": 4, + "faces": { + "north": {"uv": [0, 0, 2, 2], "texture": "#missing"}, + "east": {"uv": [0, 0, 9, 2], "texture": "#missing"}, + "south": {"uv": [0, 0, 2, 2], "texture": "#missing"}, + "west": {"uv": [0, 0, 9, 2], "texture": "#missing"}, + "up": {"uv": [0, 0, 9, 2], "rotation": 90, "texture": "#missing"}, + "down": {"uv": [0, 0, 9, 2], "rotation": 270, "texture": "#missing"} + } + }, + { + "from": [2, 2, 12], + "to": [14, 8, 15.75], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 6, 13]}, + "color": 1, + "faces": { + "north": {"uv": [0, 0, 12, 6], "texture": "#missing"}, + "east": {"uv": [0, 0, 3.75, 6], "texture": "#missing"}, + "south": {"uv": [0, 0, 12, 6], "texture": "#missing"}, + "west": {"uv": [0, 0, 3.75, 6], "texture": "#missing"}, + "up": {"uv": [0, 0, 12, 3.75], "texture": "#missing"}, + "down": {"uv": [0, 0, 12, 3.75], "texture": "#missing"} + } + }, + { + "from": [2, 8, 13.75], + "to": [14, 19, 15.75], + "rotation": {"angle": 0, "axis": "y", "origin": [2, 8, 14]}, + "faces": { + "north": {"uv": [2, 2, 14, 13], "texture": "#missing"}, + "east": {"uv": [0, 2, 2, 13], "texture": "#missing"}, + "south": {"uv": [2, 2, 14, 13], "texture": "#missing"}, + "west": {"uv": [14, 2, 16, 13], "texture": "#missing"}, + "up": {"uv": [2, 0, 14, 2], "texture": "#missing"}, + "down": {"uv": [2, 13, 14, 15], "texture": "#missing"} + } + }, + { + "from": [1.75, 18.5, 13.5], + "to": [14.25, 20, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [2, 18, 14]}, + "faces": { + "north": {"uv": [0, 0, 12.5, 1.5], "texture": "#missing"}, + "east": {"uv": [0, 0, 2.5, 1.5], "texture": "#missing"}, + "south": {"uv": [1.75, 0.5, 14.25, 2], "texture": "#missing"}, + "west": {"uv": [0, 0, 2.5, 1.5], "texture": "#missing"}, + "up": {"uv": [1.75, 7, 14.25, 9.5], "texture": "#missing"}, + "down": {"uv": [0, 0, 12.5, 2.5], "texture": "#missing"} + } + }, + { + "from": [2.5, 10, 12.25], + "to": [13.75, 22, 13.25], + "rotation": {"angle": 0, "axis": "x", "origin": [3, 10, 12.25]}, + "color": 5, + "faces": { + "north": {"uv": [0, 0, 11.25, 12], "texture": "#missing"}, + "east": {"uv": [0, 0, 1, 12], "texture": "#missing"}, + "south": {"uv": [0, 0, 11.25, 12], "texture": "#missing"}, + "west": {"uv": [0, 0, 1, 12], "texture": "#missing"}, + "up": {"uv": [0, 0, 11.25, 1], "texture": "#missing"}, + "down": {"uv": [0, 0, 11.25, 1], "texture": "#missing"} + } + }, + { + "from": [2, 4, 1], + "to": [4, 8, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [2, 6, 1]}, + "color": 4, + "faces": { + "north": {"uv": [0, 0, 2, 4], "texture": "#missing"}, + "east": {"uv": [0, 0, 11, 4], "texture": "#missing"}, + "south": {"uv": [0, 0, 2, 4], "texture": "#missing"}, + "west": {"uv": [0, 0, 11, 4], "texture": "#missing"}, + "up": {"uv": [0, 0, 2, 11], "texture": "#missing"}, + "down": {"uv": [0, 0, 2, 11], "texture": "#missing"} + } + }, + { + "from": [12, 4, 1], + "to": [14, 8, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 6, 1]}, + "color": 4, + "faces": { + "north": {"uv": [0, 0, 2, 4], "texture": "#missing"}, + "east": {"uv": [0, 0, 11, 4], "texture": "#missing"}, + "south": {"uv": [0, 0, 2, 4], "texture": "#missing"}, + "west": {"uv": [0, 0, 11, 4], "texture": "#missing"}, + "up": {"uv": [0, 0, 2, 11], "texture": "#missing"}, + "down": {"uv": [0, 0, 2, 11], "texture": "#missing"} + } + }, + { + "from": [4, 4, 1], + "to": [12, 8, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 6, 1]}, + "color": 4, + "faces": { + "north": {"uv": [0, 0, 8, 4], "texture": "#missing"}, + "east": {"uv": [0, 0, 2, 4], "texture": "#missing"}, + "south": {"uv": [0, 0, 8, 4], "texture": "#missing"}, + "west": {"uv": [0, 0, 2, 4], "texture": "#missing"}, + "up": {"uv": [0, 0, 2, 8], "rotation": 90, "texture": "#missing"}, + "down": {"uv": [0, 0, 2, 8], "rotation": 270, "texture": "#missing"} + } + }, + { + "from": [4, 4, 10], + "to": [12, 8, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 6, 10]}, + "color": 4, + "faces": { + "north": {"uv": [0, 0, 8, 4], "texture": "#missing"}, + "east": {"uv": [0, 0, 2, 4], "texture": "#missing"}, + "south": {"uv": [0, 0, 8, 4], "texture": "#missing"}, + "west": {"uv": [0, 0, 2, 4], "texture": "#missing"}, + "up": {"uv": [0, 0, 2, 8], "rotation": 90, "texture": "#missing"}, + "down": {"uv": [0, 0, 2, 8], "rotation": 270, "texture": "#missing"} + } + }, + { + "from": [4, 4, 7], + "to": [12, 5, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 4, 8]}, + "color": 7, + "faces": { + "north": {"uv": [0, 0, 8, 1], "texture": "#missing"}, + "east": {"uv": [0, 0, 3, 1], "texture": "#missing"}, + "south": {"uv": [0, 0, 8, 1], "texture": "#missing"}, + "west": {"uv": [0, 0, 3, 1], "texture": "#missing"}, + "up": {"uv": [0, 0, 8, 3], "texture": "#missing"}, + "down": {"uv": [0, 0, 8, 3], "texture": "#missing"} + } + }, + { + "from": [4, 4, 3], + "to": [6, 5, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 4, 5]}, + "color": 7, + "faces": { + "north": {"uv": [0, 0, 2, 1], "texture": "#missing"}, + "east": {"uv": [0, 0, 4, 1], "texture": "#missing"}, + "south": {"uv": [0, 0, 2, 1], "texture": "#missing"}, + "west": {"uv": [0, 0, 4, 1], "texture": "#missing"}, + "up": {"uv": [0, 0, 2, 4], "texture": "#missing"}, + "down": {"uv": [0, 0, 2, 4], "texture": "#missing"} + } + }, + { + "from": [10, 4, 3], + "to": [12, 5, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 4, 5]}, + "color": 7, + "faces": { + "north": {"uv": [0, 0, 2, 1], "texture": "#missing"}, + "east": {"uv": [0, 0, 4, 1], "texture": "#missing"}, + "south": {"uv": [0, 0, 2, 1], "texture": "#missing"}, + "west": {"uv": [0, 0, 4, 1], "texture": "#missing"}, + "up": {"uv": [0, 0, 2, 4], "texture": "#missing"}, + "down": {"uv": [0, 0, 2, 4], "texture": "#missing"} + } + }, + { + "from": [6, 4, 3], + "to": [7, 5.25, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 4, 5]}, + "color": 9, + "faces": { + "north": {"uv": [0, 0, 1, 1.25], "texture": "#missing"}, + "east": {"uv": [0, 0, 4, 1.25], "texture": "#missing"}, + "south": {"uv": [0, 0, 1, 1.25], "texture": "#missing"}, + "west": {"uv": [0, 0, 4, 1.25], "texture": "#missing"}, + "up": {"uv": [0, 0, 1, 4], "texture": "#missing"}, + "down": {"uv": [0, 0, 1, 4], "texture": "#missing"} + } + }, + { + "from": [7, 4, 6], + "to": [9, 5.25, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 6]}, + "color": 9, + "faces": { + "north": {"uv": [0, 0, 2, 1.25], "texture": "#missing"}, + "east": {"uv": [0, 0, 1, 1.25], "texture": "#missing"}, + "south": {"uv": [0, 0, 2, 1.25], "texture": "#missing"}, + "west": {"uv": [0, 0, 1, 1.25], "texture": "#missing"}, + "up": {"uv": [0, 0, 1, 2], "rotation": 90, "texture": "#missing"}, + "down": {"uv": [0, 0, 1, 2], "rotation": 270, "texture": "#missing"} + } + }, + { + "from": [9, 4, 3], + "to": [10, 5.25, 7], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 4, 5]}, + "color": 9, + "faces": { + "north": {"uv": [0, 0, 1, 1.25], "texture": "#missing"}, + "east": {"uv": [0, 0, 4, 1.25], "texture": "#missing"}, + "south": {"uv": [0, 0, 1, 1.25], "texture": "#missing"}, + "west": {"uv": [0, 0, 4, 1.25], "texture": "#missing"}, + "up": {"uv": [0, 0, 1, 4], "texture": "#missing"}, + "down": {"uv": [0, 0, 1, 4], "texture": "#missing"} + } + }, + { + "from": [1, 14.75, 15], + "to": [2, 16.75, 15.5], + "rotation": {"angle": -22.5, "axis": "x", "origin": [0, 14.75, 14.25]}, + "color": 6, + "faces": { + "north": {"uv": [0, 0, 1, 2], "texture": "#missing"}, + "east": {"uv": [0, 0, 0.5, 2], "texture": "#missing"}, + "south": {"uv": [0, 0, 1, 2], "texture": "#missing"}, + "west": {"uv": [0, 0, 0.5, 2], "texture": "#missing"}, + "up": {"uv": [0, 0, 1, 0.5], "texture": "#missing"}, + "down": {"uv": [0, 0, 1, 0.5], "texture": "#missing"} + } + }, + { + "name": "water", + "from": [6.75, 4, 2.75], + "to": [9.25, 4.75, 6], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 5, 8]}, + "faces": { + "north": {"uv": [1, 4, 2.75, 13], "rotation": 90, "texture": "#0"}, + "east": {"uv": [3, 2, 11, 3.75], "texture": "#0"}, + "south": {"uv": [3, 12, 12, 13.75], "texture": "#0"}, + "west": {"uv": [12, 4, 13.75, 12], "rotation": 270, "texture": "#0"}, + "up": {"uv": [3, 4, 6, 8], "texture": "#0"}, + "down": {"uv": [3, 4, 6, 8], "texture": "#0"} + } + }, + { + "from": [3, 3, 14], + "to": [13, 13, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 28, 8]}, + "faces": { + "north": {"uv": [6, 11, 11, 16], "texture": "#1"}, + "east": {"uv": [11.5, 18.5, 10.5, 11], "texture": "#1"}, + "south": {"uv": [11, 11, 16, 16], "texture": "#1"}, + "west": {"uv": [11.5, 18.5, 10.5, 11], "texture": "#1"}, + "up": {"uv": [11.5, 18.5, 10.5, 11], "texture": "#1"}, + "down": {"uv": [11.5, 18.5, 10.5, 11], "texture": "#1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "translation": [0, 4, 0], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "translation": [0, 4, 0], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [28, 130, -1], + "translation": [0, -1.25, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "translation": [0, 14, 0] + }, + "fixed": { + "translation": [0, 0, -3], + "scale": [0.5, 0.5, 0.5] + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/pissnshit/models/item/flushed.json b/src/main/resources/assets/pissnshit/models/item/flushed.json new file mode 100644 index 0000000..c169f48 --- /dev/null +++ b/src/main/resources/assets/pissnshit/models/item/flushed.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "pissnshit:item/flushed" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/pissnshit/models/item/mechanical_toilet.json b/src/main/resources/assets/pissnshit/models/item/mechanical_toilet.json new file mode 100644 index 0000000..db408d1 --- /dev/null +++ b/src/main/resources/assets/pissnshit/models/item/mechanical_toilet.json @@ -0,0 +1,3 @@ +{ + "parent": "pissnshit:block/mechanical_toilet" +} \ No newline at end of file diff --git a/src/main/resources/assets/pissnshit/textures/item/flushed.png b/src/main/resources/assets/pissnshit/textures/item/flushed.png new file mode 100644 index 0000000000000000000000000000000000000000..635e51234c6bad92fceefbc0494806b9b9446a50 GIT binary patch literal 761 zcmVWRc5R|4GD2+8{JOVM+{0piUWFzlW*L-1zDDHo#M9jFJPHDlh#c&FcecvcQkU*p~p`!HvSILnHg@| zuvKxvz~o0R&T}c2hezVePdCJg60pl#cr^F`OR*SQnwuege*v9D8X9`hf9E#bZW(NC z1H!~XqLPSv1!fIqF@D;ER0(uv1=NmKz?p=&H4bSb#PzezHfZJNfMq*ufv*sj6M!uX zbbN|P`0ex)*=r^Wq`q%t0%-k4>T#PK;`Ni(~1R0x`=F{ z>JMFr^v?H@Ux2vj%iYAOuKQT5_F|h?-B046v55 zzFZLn(MK-Y{&l3Z#D+R~KT;XB*o7lQ&l31>2}xh>D&)cELD%}Jw_fap-G-?UM!3U6 rjV2+}4O8-@IePnP^|R)&$-?}