diff --git a/gradle.properties b/gradle.properties index 1af88fc..bcefbf5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G loader_version=0.8.8+build.202 # Mod Properties - mod_version = 1.0.0 + mod_version = 2.0.0 maven_group = eu.midnightdust.motschen archives_base_name = decorative diff --git a/src/main/java/eu/midnightdust/motschen/decorative/DecorativeClient.java b/src/main/java/eu/midnightdust/motschen/decorative/DecorativeClient.java index 748f3f7..659c7af 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/DecorativeClient.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/DecorativeClient.java @@ -1,19 +1,44 @@ package eu.midnightdust.motschen.decorative; +import eu.midnightdust.motschen.decorative.entity.client.renderer.*; +import eu.midnightdust.motschen.decorative.init.BathTires; +import eu.midnightdust.motschen.decorative.init.Pool; import eu.midnightdust.motschen.decorative.init.Signs; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; +import net.fabricmc.fabric.api.client.rendereregistry.v1.EntityRendererRegistry; import net.fabricmc.fabric.api.client.rendering.v1.ColorProviderRegistry; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.client.color.block.BlockColorProvider; -import net.minecraft.client.color.item.ItemColorProvider; import net.minecraft.client.render.RenderLayer; public class DecorativeClient implements ClientModInitializer { @Override public void onInitializeClient() { + EntityRendererRegistry.INSTANCE.register(Pool.BEACH_BALL, (dispatcher, context) -> new BeachBallRenderer(dispatcher)); + + EntityRendererRegistry.INSTANCE.register(BathTires.WHITE_BATH_TIRE, (dispatcher, context) -> new WhiteBathTireRenderer(dispatcher)); + EntityRendererRegistry.INSTANCE.register(BathTires.ORANGE_BATH_TIRE, (dispatcher, context) -> new OrangeBathTireRenderer(dispatcher)); + EntityRendererRegistry.INSTANCE.register(BathTires.MAGENTA_BATH_TIRE, (dispatcher, context) -> new MagentaBathTireRenderer(dispatcher)); + EntityRendererRegistry.INSTANCE.register(BathTires.LIGHT_BLUE_BATH_TIRE, (dispatcher, context) -> new LightBlueBathTireRenderer(dispatcher)); + EntityRendererRegistry.INSTANCE.register(BathTires.YELLOW_BATH_TIRE, (dispatcher, context) -> new YellowBathTireRenderer(dispatcher)); + EntityRendererRegistry.INSTANCE.register(BathTires.LIME_BATH_TIRE, (dispatcher, context) -> new LimeBathTireRenderer(dispatcher)); + EntityRendererRegistry.INSTANCE.register(BathTires.PINK_BATH_TIRE, (dispatcher, context) -> new PinkBathTireRenderer(dispatcher)); + EntityRendererRegistry.INSTANCE.register(BathTires.GRAY_BATH_TIRE, (dispatcher, context) -> new GrayBathTireRenderer(dispatcher)); + EntityRendererRegistry.INSTANCE.register(BathTires.LIGHT_GRAY_BATH_TIRE, (dispatcher, context) -> new LightGrayBathTireRenderer(dispatcher)); + EntityRendererRegistry.INSTANCE.register(BathTires.CYAN_BATH_TIRE, (dispatcher, context) -> new CyanBathTireRenderer(dispatcher)); + EntityRendererRegistry.INSTANCE.register(BathTires.PURPLE_BATH_TIRE, (dispatcher, context) -> new PurpleBathTireRenderer(dispatcher)); + EntityRendererRegistry.INSTANCE.register(BathTires.BLUE_BATH_TIRE, (dispatcher, context) -> new BlueBathTireRenderer(dispatcher)); + EntityRendererRegistry.INSTANCE.register(BathTires.BROWN_BATH_TIRE, (dispatcher, context) -> new BrownBathTireRenderer(dispatcher)); + EntityRendererRegistry.INSTANCE.register(BathTires.GREEN_BATH_TIRE, (dispatcher, context) -> new GreenBathTireRenderer(dispatcher)); + EntityRendererRegistry.INSTANCE.register(BathTires.RED_BATH_TIRE, (dispatcher, context) -> new RedBathTireRenderer(dispatcher)); + EntityRendererRegistry.INSTANCE.register(BathTires.BLACK_BATH_TIRE, (dispatcher, context) -> new BlackBathTireRenderer(dispatcher)); + + EntityRendererRegistry.INSTANCE.register(BathTires.DUCK_BATH_TIRE, (dispatcher, context) -> new DuckBathTireRenderer(dispatcher)); + + registerBlockColor(DecorativeMain.BirdBath, Blocks.WATER); BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(),DecorativeMain.RoadWhiteShort); BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(),DecorativeMain.RoadWhiteLong); diff --git a/src/main/java/eu/midnightdust/motschen/decorative/DecorativeMain.java b/src/main/java/eu/midnightdust/motschen/decorative/DecorativeMain.java index 56d45b6..2ceaa6f 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/DecorativeMain.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/DecorativeMain.java @@ -20,7 +20,10 @@ public class DecorativeMain implements ModInitializer { public static final ItemGroup IndoorGroup = FabricItemGroupBuilder.build(new Identifier(MOD_ID, "indoor"), () -> new ItemStack(DecorativeMain.Television)); public static final ItemGroup TrafficGroup = FabricItemGroupBuilder.build(new Identifier(MOD_ID, "traffic"), () -> new ItemStack(DecorativeMain.TrafficCone)); public static final ItemGroup GardenGroup = FabricItemGroupBuilder.build(new Identifier(MOD_ID, "garden"), () -> new ItemStack(LogsWithAxes.OakLogWithAxe)); + public static final ItemGroup PoolGroup = FabricItemGroupBuilder.build(new Identifier(MOD_ID, "pool"), () -> new ItemStack(Pool.BEACH_BALL_ITEM)); public static final EnumProperty PROGRAM = EnumProperty.of("program", Program.class); + public static final EnumProperty POOL_SHAPE = EnumProperty.of("shape", PoolShape.class); + public static final EnumProperty PART = EnumProperty.of("part", Part.class); public static Block RockyAsphalt = new Block(FabricBlockSettings.copyOf(Blocks.COAL_ORE)); public static Block Road = new Block(FabricBlockSettings.copyOf(Blocks.STONE)); public static Block RoadWhiteShort = new RotatableBlock(); @@ -38,9 +41,11 @@ public class DecorativeMain implements ModInitializer { public static Block BirdBath = new BirdBath(); public static Block ChristmasTree = new ChristmasTree(); public static Block ChristmasLights = new ChristmasLights(); + public static Block ShowerHead = new ShowerHead(); @Override public void onInitialize() { + BlockEntities.init(); // Traffic // Registry.register(Registry.BLOCK, new Identifier("decorative","rocky_asphalt"), RockyAsphalt); Registry.register(Registry.ITEM, new Identifier("decorative","rocky_asphalt"), new BlockItem(RockyAsphalt, new Item.Settings().group(DecorativeMain.TrafficGroup))); @@ -66,6 +71,7 @@ public class DecorativeMain implements ModInitializer { Registry.register(Registry.BLOCK, new Identifier("decorative","water_pump"), WaterPump); Registry.register(Registry.ITEM, new Identifier("decorative","water_pump"), new BlockItem(WaterPump, new Item.Settings().group(DecorativeMain.GardenGroup))); LogsWithAxes.init(); + Pool.init(); //Furniture// Registry.register(Registry.BLOCK, new Identifier("decorative","kitchen_tiles"), KitchenTiles); @@ -76,6 +82,8 @@ public class DecorativeMain implements ModInitializer { Registry.register(Registry.ITEM, new Identifier("decorative","old_television"), new BlockItem(OldTelevision, new Item.Settings().group(DecorativeMain.IndoorGroup))); Registry.register(Registry.BLOCK, new Identifier("decorative","ceilingfan"), CeilingFan); Registry.register(Registry.ITEM, new Identifier("decorative","ceilingfan"), new BlockItem(CeilingFan, new Item.Settings().group(DecorativeMain.IndoorGroup))); + Registry.register(Registry.BLOCK, new Identifier("decorative","shower_head"), ShowerHead); + Registry.register(Registry.ITEM, new Identifier("decorative","shower_head"), new BlockItem(ShowerHead, new Item.Settings().group(DecorativeMain.IndoorGroup))); Registry.register(Registry.BLOCK, new Identifier("decorative","sliding_door"), SlidingDoor); Registry.register(Registry.ITEM, new Identifier("decorative","sliding_door"), new BlockItem(SlidingDoor, new Item.Settings().group(DecorativeMain.IndoorGroup))); Registry.register(Registry.BLOCK, new Identifier("decorative","christmas_tree"), ChristmasTree); diff --git a/src/main/java/eu/midnightdust/motschen/decorative/Part.java b/src/main/java/eu/midnightdust/motschen/decorative/Part.java new file mode 100644 index 0000000..bbb73ca --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/Part.java @@ -0,0 +1,22 @@ +package eu.midnightdust.motschen.decorative; + +import net.minecraft.util.StringIdentifiable; + +public enum Part implements StringIdentifiable { + FRONT("front"), + BACK("back"); + + private final String name; + + Part(String name) { + this.name = name; + } + + public String toString() { + return this.name; + } + + public String asString() { + return this.name; + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/PoolShape.java b/src/main/java/eu/midnightdust/motschen/decorative/PoolShape.java new file mode 100644 index 0000000..ff0be62 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/PoolShape.java @@ -0,0 +1,23 @@ +package eu.midnightdust.motschen.decorative; + +import net.minecraft.util.StringIdentifiable; + +public enum PoolShape implements StringIdentifiable { + STRAIGHT("straight"), + INNER_LEFT("inner_left"), + INNER_RIGHT("inner_right"); + + private final String name; + + PoolShape(String name) { + this.name = name; + } + + public String toString() { + return this.name; + } + + public String asString() { + return this.name; + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/FireHydrant.java b/src/main/java/eu/midnightdust/motschen/decorative/block/FireHydrant.java index 0410bca..c4df968 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/FireHydrant.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/FireHydrant.java @@ -33,7 +33,7 @@ public class FireHydrant extends HorizontalFacingBlock { } public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { ItemStack itemStack = player.getStackInHand(hand); - if (!itemStack.isEmpty()) { + if (!itemStack.isEmpty() && hand==Hand.MAIN_HAND) { if (itemStack.getItem() == Items.BUCKET) { if (!world.isClient) { if (!player.abilities.creativeMode) { diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/Guardrail.java b/src/main/java/eu/midnightdust/motschen/decorative/block/Guardrail.java index 8801167..f51aec8 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/Guardrail.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/Guardrail.java @@ -2,23 +2,14 @@ package eu.midnightdust.motschen.decorative.block; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.*; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemPlacementContext; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.sound.BlockSoundGroup; -import net.minecraft.sound.SoundCategory; -import net.minecraft.sound.SoundEvents; import net.minecraft.state.StateManager; -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.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; -import net.minecraft.world.World; import net.minecraft.world.WorldView; public class Guardrail extends HorizontalFacingBlock { @@ -31,31 +22,6 @@ public class Guardrail extends HorizontalFacingBlock { super(FabricBlockSettings.copy(Blocks.STONE).nonOpaque().sounds(BlockSoundGroup.STONE)); this.setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH)); } - public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { - ItemStack itemStack = player.getStackInHand(hand); - if (!itemStack.isEmpty()) { - if (itemStack.getItem() == Items.BUCKET) { - if (!world.isClient) { - if (!player.abilities.creativeMode) { - itemStack.decrement(1); - if (itemStack.isEmpty()) { - player.setStackInHand(hand, new ItemStack(Items.WATER_BUCKET)); - } else if (!player.inventory.insertStack(new ItemStack(Items.WATER_BUCKET))) { - player.dropItem(new ItemStack(Items.WATER_BUCKET), false); - } - } - world.playSound(null, pos, SoundEvents.ITEM_BUCKET_FILL, SoundCategory.BLOCKS, 1.0F, 1.0F); - } - return ActionResult.SUCCESS; - } - else { - return ActionResult.PASS; - } - } - if (itemStack.isEmpty()) { - return ActionResult.PASS; - } return ActionResult.PASS; - } @Override public BlockState getPlacementState(ItemPlacementContext itemPlacementContext) { diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/Lamp.java b/src/main/java/eu/midnightdust/motschen/decorative/block/Lamp.java index 99ca6d8..6770590 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/Lamp.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/Lamp.java @@ -20,6 +20,7 @@ public class Lamp extends RedstoneLampBlock { public Lamp() { super(FabricBlockSettings.copy(Blocks.REDSTONE_LAMP).nonOpaque().sounds(BlockSoundGroup.STONE)); } + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { world.setBlockState(pos, state.with(LIT, Boolean.valueOf(!state.get(LIT)))); world.playSound(player, pos, SoundEvents.BLOCK_STONE_BUTTON_CLICK_ON, SoundCategory.BLOCKS, 0.2f, 0.5f); diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/PoolSprinkler.java b/src/main/java/eu/midnightdust/motschen/decorative/block/PoolSprinkler.java new file mode 100644 index 0000000..60d7748 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/PoolSprinkler.java @@ -0,0 +1,96 @@ +package eu.midnightdust.motschen.decorative.block; + +import eu.midnightdust.motschen.decorative.block.blockentity.PoolSprinklerBlockEntity; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.*; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemPlacementContext; +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.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.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import net.minecraft.world.WorldView; + +public class PoolSprinkler extends HorizontalFacingBlock implements BlockEntityProvider { + + private static final VoxelShape NORTH_SHAPE; + private static final VoxelShape EAST_SHAPE; + private static final VoxelShape SOUTH_SHAPE; + private static final VoxelShape WEST_SHAPE; + public static final BooleanProperty POWERED = DoorBlock.POWERED; + + public PoolSprinkler() { + super(FabricBlockSettings.copy(Blocks.STONE).nonOpaque().sounds(BlockSoundGroup.STONE)); + this.setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH).with(POWERED, Boolean.FALSE)); + } + + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + world.setBlockState(pos, state.with(POWERED, Boolean.valueOf(!state.get(POWERED)))); + world.playSound(player, pos, SoundEvents.BLOCK_STONE_BUTTON_CLICK_ON, SoundCategory.BLOCKS, 0.2f, 0.5f); + return ActionResult.SUCCESS; + } + + @Override + public BlockState getPlacementState(ItemPlacementContext itemPlacementContext) { + return super.getPlacementState(itemPlacementContext) + .with(FACING, itemPlacementContext.getPlayerFacing().getOpposite()) + .with(POWERED, Boolean.FALSE); + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(FACING); + builder.add(POWERED); + } + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext context) { + switch (state.get(FACING)) { + case NORTH: return NORTH_SHAPE; + case EAST: return EAST_SHAPE; + case SOUTH: return SOUTH_SHAPE; + case WEST: return WEST_SHAPE; + default: return super.getOutlineShape(state, view, pos, context); + } + } + static { + VoxelShape post = createCuboidShape(7, 0, 0, 9, 13, 2); + VoxelShape upper = createCuboidShape(7, 9.65, -6.2, 9, 13, 1); + VoxelShape shape = VoxelShapes.union(post, upper); + + NORTH_SHAPE = shape; + WEST_SHAPE = rotate(Direction.EAST, Direction.NORTH, shape); + EAST_SHAPE = rotate(Direction.EAST, Direction.SOUTH, shape); + SOUTH_SHAPE = rotate(Direction.EAST, Direction.WEST, shape); + } + private static VoxelShape rotate(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.union(buffer[1], VoxelShapes.cuboid(1-maxZ, minY, minX, 1-minZ, maxY, maxX))); + buffer[0] = buffer[1]; + buffer[1] = VoxelShapes.empty(); + } + + return buffer[0]; + } + public boolean canPlaceAt(BlockState state, WorldView worldView, BlockPos pos) { + return !worldView.isAir(pos.down()); + } + @Override + public BlockEntity createBlockEntity(BlockView world) { + return new PoolSprinklerBlockEntity(); + } + +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/PoolWall.java b/src/main/java/eu/midnightdust/motschen/decorative/block/PoolWall.java new file mode 100644 index 0000000..f6d1f2e --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/PoolWall.java @@ -0,0 +1,120 @@ +package eu.midnightdust.motschen.decorative.block; + +import eu.midnightdust.motschen.decorative.DecorativeMain; +import eu.midnightdust.motschen.decorative.PoolShape; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.*; +import net.minecraft.fluid.FluidState; +import net.minecraft.fluid.Fluids; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.BooleanProperty; +import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; +import net.minecraft.state.property.Properties; +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; + +public class PoolWall extends HorizontalFacingBlock implements Waterloggable { + public static final DirectionProperty FACING = DoorBlock.FACING; + public static final BooleanProperty WATERLOGGED = Properties.WATERLOGGED; + public static final EnumProperty SHAPE = DecorativeMain.POOL_SHAPE; + private static final VoxelShape NORTH_SHAPE; + private static final VoxelShape EAST_SHAPE; + private static final VoxelShape SOUTH_SHAPE; + private static final VoxelShape WEST_SHAPE; + private static final VoxelShape NORTH_WEST_CORNER_SHAPE; + private static final VoxelShape SOUTH_WEST_CORNER_SHAPE; + private static final VoxelShape NORTH_EAST_CORNER_SHAPE; + private static final VoxelShape SOUTH_EAST_CORNER_SHAPE; + + + public PoolWall() { + super(FabricBlockSettings.copy(Blocks.STONE_STAIRS).nonOpaque().sounds(BlockSoundGroup.STONE)); + this.setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH).with(SHAPE, PoolShape.STRAIGHT).with(WATERLOGGED, false)); + } + + @Override + public FluidState getFluidState(BlockState blockState_1) { + return blockState_1.get(WATERLOGGED) ? Fluids.WATER.getStill(true) : super.getFluidState(blockState_1); + } + + public BlockState getPlacementState(ItemPlacementContext ctx) { + BlockPos blockPos = ctx.getBlockPos(); + FluidState fluidState = ctx.getWorld().getFluidState(blockPos); + BlockState blockState = this.getDefaultState().with(FACING, ctx.getPlayerFacing().getOpposite()).with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + return blockState.with(SHAPE, getPoolShape(blockState, ctx.getWorld(), blockPos)); + } + + private static PoolShape getPoolShape(BlockState state, BlockView view, BlockPos pos) { + Direction direction = state.get(FACING).getOpposite(); + BlockState blockState2 = view.getBlockState(pos.offset(direction.getOpposite())); + if (isPoolWall(blockState2)) { + Direction direction3 = blockState2.get(FACING).getOpposite(); + if (direction3.getAxis() != (state.get(FACING).getOpposite()).getAxis() && getSide(state, view, pos, direction3)) { + if (direction3 == direction.rotateYCounterclockwise()) { + return PoolShape.INNER_LEFT; + } + + return PoolShape.INNER_RIGHT; + } + } + + return PoolShape.STRAIGHT; + } + + private static boolean getSide(BlockState state, BlockView view, BlockPos pos, Direction dir) { + BlockState blockState = view.getBlockState(pos.offset(dir)); + return !isPoolWall(blockState) || blockState.get(FACING) != state.get(FACING); + } + + public static boolean isPoolWall(BlockState state) { + return state.getBlock() instanceof PoolWall; + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(FACING,SHAPE,WATERLOGGED); + } + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext context) { + switch (state.get(FACING)) { + case NORTH: switch (state.get(SHAPE)) { case STRAIGHT: return NORTH_SHAPE; case INNER_LEFT: return NORTH_WEST_CORNER_SHAPE; case INNER_RIGHT: return NORTH_EAST_CORNER_SHAPE;} + case EAST: switch (state.get(SHAPE)) { case STRAIGHT: return EAST_SHAPE; case INNER_LEFT: return NORTH_EAST_CORNER_SHAPE; case INNER_RIGHT: return SOUTH_EAST_CORNER_SHAPE;} + case SOUTH: switch (state.get(SHAPE)) { case STRAIGHT: return SOUTH_SHAPE; case INNER_LEFT: return SOUTH_EAST_CORNER_SHAPE; case INNER_RIGHT: return SOUTH_WEST_CORNER_SHAPE;} + case WEST: switch (state.get(SHAPE)) { case STRAIGHT: return WEST_SHAPE; case INNER_LEFT: return SOUTH_WEST_CORNER_SHAPE; case INNER_RIGHT: return NORTH_WEST_CORNER_SHAPE;} + default: return super.getOutlineShape(state, view, pos, context); + } + } + static { + VoxelShape base = createCuboidShape(0, 0, 15, 16, 16, 16); + VoxelShape corner = createCuboidShape(15, 0, 0, 16, 16, 16); + VoxelShape corner_shapes = VoxelShapes.union(base, corner); + + NORTH_SHAPE = base; + WEST_SHAPE = rotate(Direction.EAST, Direction.NORTH, base); + EAST_SHAPE = rotate(Direction.EAST, Direction.SOUTH, base); + SOUTH_SHAPE = rotate(Direction.EAST, Direction.WEST, base); + NORTH_WEST_CORNER_SHAPE = corner_shapes; + SOUTH_WEST_CORNER_SHAPE = rotate(Direction.EAST, Direction.NORTH, corner_shapes); + NORTH_EAST_CORNER_SHAPE = rotate(Direction.EAST, Direction.SOUTH, corner_shapes); + SOUTH_EAST_CORNER_SHAPE = rotate(Direction.EAST, Direction.WEST, corner_shapes); + } + private static VoxelShape rotate(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.union(buffer[1], VoxelShapes.cuboid(1-maxZ, minY, minX, 1-minZ, maxY, maxX))); + buffer[0] = buffer[1]; + buffer[1] = VoxelShapes.empty(); + } + + return buffer[0]; + } + +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/RotatableBlock.java b/src/main/java/eu/midnightdust/motschen/decorative/block/RotatableBlock.java index e50b516..987129b 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/RotatableBlock.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/RotatableBlock.java @@ -8,9 +8,7 @@ import net.minecraft.block.HorizontalFacingBlock; import net.minecraft.item.ItemPlacementContext; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.state.StateManager; -import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; -import net.minecraft.world.WorldView; public class RotatableBlock extends HorizontalFacingBlock { diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/ShowerHead.java b/src/main/java/eu/midnightdust/motschen/decorative/block/ShowerHead.java new file mode 100644 index 0000000..a41bcdb --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/ShowerHead.java @@ -0,0 +1,98 @@ +package eu.midnightdust.motschen.decorative.block; + +import eu.midnightdust.motschen.decorative.block.blockentity.ShowerHeadBlockEntity; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.*; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemPlacementContext; +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.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.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import net.minecraft.world.WorldView; + +public class ShowerHead extends HorizontalFacingBlock implements BlockEntityProvider { + + private static final VoxelShape NORTH_SHAPE; + private static final VoxelShape EAST_SHAPE; + private static final VoxelShape SOUTH_SHAPE; + private static final VoxelShape WEST_SHAPE; + public static final BooleanProperty POWERED = DoorBlock.POWERED; + + public ShowerHead() { + super(FabricBlockSettings.copy(Blocks.STONE).nonOpaque().sounds(BlockSoundGroup.STONE)); + this.setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH).with(POWERED, Boolean.FALSE)); + } + + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + world.setBlockState(pos, state.with(POWERED, Boolean.valueOf(!state.get(POWERED)))); + world.playSound(player, pos, SoundEvents.BLOCK_STONE_BUTTON_CLICK_ON, SoundCategory.BLOCKS, 0.2f, 0.5f); + return ActionResult.SUCCESS; + } + + @Override + public BlockState getPlacementState(ItemPlacementContext itemPlacementContext) { + return super.getPlacementState(itemPlacementContext) + .with(FACING, itemPlacementContext.getPlayerFacing().getOpposite()) + .with(POWERED, Boolean.FALSE); + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(FACING); + builder.add(POWERED); + } + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext context) { + switch (state.get(FACING)) { + case NORTH: return NORTH_SHAPE; + case EAST: return EAST_SHAPE; + case SOUTH: return SOUTH_SHAPE; + case WEST: return WEST_SHAPE; + default: return super.getOutlineShape(state, view, pos, context); + } + } + static { + VoxelShape pipe = createCuboidShape(7, 12, 8.75, 9, 14, 16); + VoxelShape pivot_pipe = createCuboidShape(7, 12, 8.25, 9, 13, 11); + VoxelShape pivot_pipe2 = createCuboidShape(7, 10.5, 7.25, 9, 12, 11); + VoxelShape head = createCuboidShape(4, 9.75, 5, 12, 11.25, 13); + VoxelShape shape = VoxelShapes.union(pipe, head, pivot_pipe, pivot_pipe2); + + NORTH_SHAPE = shape; + WEST_SHAPE = rotate(Direction.EAST, Direction.NORTH, shape); + EAST_SHAPE = rotate(Direction.EAST, Direction.SOUTH, shape); + SOUTH_SHAPE = rotate(Direction.EAST, Direction.WEST, shape); + } + private static VoxelShape rotate(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.union(buffer[1], VoxelShapes.cuboid(1-maxZ, minY, minX, 1-minZ, maxY, maxX))); + buffer[0] = buffer[1]; + buffer[1] = VoxelShapes.empty(); + } + + return buffer[0]; + } + public boolean canPlaceAt(BlockState state, WorldView worldView, BlockPos pos) { + return !worldView.isAir(pos.north()) | !worldView.isAir(pos.east()) | !worldView.isAir(pos.south()) | !worldView.isAir(pos.west()); + } + @Override + public BlockEntity createBlockEntity(BlockView world) { + return new ShowerHeadBlockEntity(); + } + +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/Sign.java b/src/main/java/eu/midnightdust/motschen/decorative/block/Sign.java index 0e033e8..7835372 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/Sign.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/Sign.java @@ -2,23 +2,14 @@ package eu.midnightdust.motschen.decorative.block; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.*; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemPlacementContext; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.sound.BlockSoundGroup; -import net.minecraft.sound.SoundCategory; -import net.minecraft.sound.SoundEvents; import net.minecraft.state.StateManager; -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.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; -import net.minecraft.world.World; import net.minecraft.world.WorldView; public class Sign extends HorizontalFacingBlock { diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/SlidingDoor.java b/src/main/java/eu/midnightdust/motschen/decorative/block/SlidingDoor.java index 34946c2..4a9b705 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/SlidingDoor.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/SlidingDoor.java @@ -4,7 +4,6 @@ import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.*; import net.minecraft.block.enums.DoorHinge; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemPlacementContext; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; @@ -17,7 +16,6 @@ import net.minecraft.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; import net.minecraft.world.World; -import net.minecraft.world.WorldView; public class SlidingDoor extends DoorBlock { diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/Springboard.java b/src/main/java/eu/midnightdust/motschen/decorative/block/Springboard.java new file mode 100644 index 0000000..da1b425 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/Springboard.java @@ -0,0 +1,235 @@ +package eu.midnightdust.motschen.decorative.block; + +import eu.midnightdust.motschen.decorative.DecorativeMain; +import eu.midnightdust.motschen.decorative.Part; +import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; +import net.minecraft.block.*; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.entity.effect.StatusEffects; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemPlacementContext; +import net.minecraft.item.ItemStack; +import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.state.StateManager; +import net.minecraft.state.property.EnumProperty; +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.util.shape.VoxelShape; +import net.minecraft.util.shape.VoxelShapes; +import net.minecraft.world.BlockView; +import net.minecraft.world.World; +import net.minecraft.world.WorldView; + +public class Springboard extends HorizontalFacingBlock { + private static final VoxelShape NORTH_SHAPE_FRONT; + private static final VoxelShape EAST_SHAPE_FRONT; + private static final VoxelShape SOUTH_SHAPE_FRONT; + private static final VoxelShape WEST_SHAPE_FRONT; + private static final VoxelShape NORTH_SHAPE_BACK; + private static final VoxelShape EAST_SHAPE_BACK; + private static final VoxelShape SOUTH_SHAPE_BACK; + private static final VoxelShape WEST_SHAPE_BACK; + private static final EnumProperty PART = DecorativeMain.PART; + + public Springboard() { + super(FabricBlockSettings.copy(Blocks.STONE).nonOpaque().sounds(BlockSoundGroup.STONE)); + this.setDefaultState(this.stateManager.getDefaultState().with(FACING, Direction.NORTH).with(PART, Part.BACK)); + } + public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { + ItemStack itemStack = player.getStackInHand(hand); + if (!world.isClient) { + if (itemStack.isEmpty() && hand==Hand.MAIN_HAND) { + switch (state.get(PART)) { + case FRONT: + if (player.getY() >= pos.getY()+0.1 && player.squaredDistanceTo(pos.getX(), pos.getY(), pos.getZ()) <= 1.0) { + player.addStatusEffect(new StatusEffectInstance(StatusEffects.LEVITATION, 10, 10)); + return ActionResult.SUCCESS; + } + else return ActionResult.FAIL; + default: + return ActionResult.FAIL; + } + } + else return ActionResult.FAIL; + } + else return ActionResult.FAIL; + } + @Override + public BlockState getPlacementState(ItemPlacementContext itemPlacementContext) { + return super.getPlacementState(itemPlacementContext) + .with(FACING, itemPlacementContext.getPlayerFacing()) + .with(PART, Part.BACK); + } + + @Override + public void onPlaced(World arg, BlockPos pos, BlockState state, LivingEntity arg4, ItemStack arg5) { + switch (state.get(PART)) { + case BACK: switch (state.get(FACING)) { + case NORTH: + if (!arg.getBlockState(pos.north()).isAir()) { + arg.breakBlock(pos, true); + } + else { + arg.setBlockState(pos.north(), state.with(PART, Part.FRONT).with(FACING, Direction.NORTH)); + } + return; + case EAST: + if (!arg.getBlockState(pos.east()).isAir()) { + arg.breakBlock(pos, true); + } + else { + arg.setBlockState(pos.east(), state.with(PART, Part.FRONT).with(FACING, Direction.EAST)); + } + return; + case SOUTH: + if (!arg.getBlockState(pos.south()).isAir()) { + arg.breakBlock(pos, true); + } + else { + arg.setBlockState(pos.south(), state.with(PART, Part.FRONT).with(FACING, Direction.SOUTH)); + } + return; + case WEST: + if (!arg.getBlockState(pos.west()).isAir()) { + arg.breakBlock(pos, true); + } + else { + arg.setBlockState(pos.west(), state.with(PART, Part.FRONT).with(FACING, Direction.WEST)); + } + return; + default: + return; + } + default: return; + } + } + @Override + public void onBreak(World world, BlockPos pos, BlockState state, PlayerEntity player) { + switch (state.get(PART)) { + case BACK: switch (state.get(FACING)) { + case NORTH: + if (world.getBlockState(pos.north()).contains(PART)) { world.breakBlock(pos.north(), true);} + return; + case EAST: + if (world.getBlockState(pos.east()).contains(PART)) { world.breakBlock(pos.east(), true);} + return; + case SOUTH: + if (world.getBlockState(pos.south()).contains(PART)) { world.breakBlock(pos.south(), true);} + + return; + case WEST: + if (world.getBlockState(pos.west()).contains(PART)) { world.breakBlock(pos.west(), true);} + return; + default: + return; + } + case FRONT: switch (state.get(FACING)) { + case NORTH: + if (world.getBlockState(pos.south()).contains(PART)) { world.breakBlock(pos.south(), true); } + return; + case EAST: + if (world.getBlockState(pos.west()).contains(PART)) { world.breakBlock(pos.south(), true); } + return; + case SOUTH: + if (world.getBlockState(pos.north()).contains(PART)) { world.breakBlock(pos.south(), true); } + return; + case WEST: + if (world.getBlockState(pos.east()).contains(PART)) { world.breakBlock(pos.south(), true); } + return; + default: + return; + } + default: return; + } + } + + @Override + protected void appendProperties(StateManager.Builder builder) { + builder.add(FACING); + builder.add(PART); + } + @Override + public VoxelShape getOutlineShape(BlockState state, BlockView view, BlockPos pos, ShapeContext context) { + switch (state.get(FACING)) { + case NORTH: switch (state.get(PART)) { case FRONT: return NORTH_SHAPE_FRONT; case BACK: return NORTH_SHAPE_BACK;} + case EAST: switch (state.get(PART)) { case FRONT: return EAST_SHAPE_FRONT; case BACK: return EAST_SHAPE_BACK;} + case SOUTH: switch (state.get(PART)) { case FRONT: return SOUTH_SHAPE_FRONT; case BACK: return SOUTH_SHAPE_BACK;} + case WEST: switch (state.get(PART)) { case FRONT: return WEST_SHAPE_FRONT; case BACK: return WEST_SHAPE_BACK;} + default: return super.getOutlineShape(state, view, pos, context); + } + } + static { + //long_plank + VoxelShape front1 = createCuboidShape(1, 2, 0, 15, 3, 28); + VoxelShape back1 = createCuboidShape(1, 2, -16, 15, 3, 12); + //plank-y + VoxelShape front2 = createCuboidShape(1, 1, 21, 15, 2, 30); + VoxelShape back2 = createCuboidShape(1, 1, 5, 15, 2, 14); + //plank--y + VoxelShape front3 = createCuboidShape(1, 0, 23, 15, 1, 32); + VoxelShape back3 = createCuboidShape(1, 0, 7, 15, 1, 16); + //lower_siding + VoxelShape front4left = createCuboidShape(0, 0, 8, 1, 1, 32); + VoxelShape back4left = createCuboidShape(0, 0, -8, 1, 1, 16); + VoxelShape front4right = createCuboidShape(15, 0, 8, 16, 1, 32); + VoxelShape back4right = createCuboidShape(15, 0, -8, 16, 1, 16); + //upper_siding + VoxelShape front5left = createCuboidShape(0, 6, 9, 1, 7, 31); + VoxelShape back5left = createCuboidShape(0, 6, -7, 1, 7, 15); + VoxelShape front5right = createCuboidShape(15, 6, 9, 16, 7, 31); + VoxelShape back5right = createCuboidShape(15, 6, -7, 16, 7, 15); + //siding_front + VoxelShape front6left = createCuboidShape(0, 1, 31, 1, 6, 32); + VoxelShape back6left = createCuboidShape(0, 1, 15, 1, 6, 16); + VoxelShape front6right = createCuboidShape(15, 1, 31, 16, 6, 32); + VoxelShape back6right = createCuboidShape(15, 1, 15, 16, 6, 16); + //siding_back + VoxelShape front7left = createCuboidShape(0, 1, 8, 1, 6, 9); + VoxelShape back7left = createCuboidShape(0, 1, -8, 1, 6, -7); + VoxelShape front7right = createCuboidShape(15, 1, 8, 16, 6, 9); + VoxelShape back7right = createCuboidShape(15, 1, -8, 16, 6, -7); + //dot_front + VoxelShape front8left = createCuboidShape(0, 5, 30, 1, 6, 31); + VoxelShape back8left = createCuboidShape(0, 5, 14, 1, 6, 15); + VoxelShape front8right = createCuboidShape(15, 5, 30, 16, 6, 31); + VoxelShape back8right = createCuboidShape(15, 5, 14, 16, 6, 15); + //dot_back + VoxelShape front9left = createCuboidShape(0, 5, 9, 1, 6, 10); + VoxelShape back9left = createCuboidShape(0, 5, -7, 1, 6, -6); + VoxelShape front9right = createCuboidShape(15, 5, 9, 16, 6, 10); + VoxelShape back9right = createCuboidShape(15, 5, -7, 16, 6, -6); + //union + VoxelShape front = VoxelShapes.union(front1, front2, front3, front4left, front4right, front5left, front5right, front6left, front6right, front7left, front7right, front8left, front8right, front9left, front9right); + VoxelShape back = VoxelShapes.union(back1, back2, back3, back4left, back4right, back5left, back5right, back6left, back6right, back7left, back7right, back8left, back8right, back9left, back9right); + + NORTH_SHAPE_FRONT = front; + WEST_SHAPE_FRONT = rotate(Direction.EAST, Direction.NORTH, front); + EAST_SHAPE_FRONT = rotate(Direction.EAST, Direction.SOUTH, front); + SOUTH_SHAPE_FRONT = rotate(Direction.EAST, Direction.WEST, front); + NORTH_SHAPE_BACK = back; + WEST_SHAPE_BACK = rotate(Direction.EAST, Direction.NORTH, back); + EAST_SHAPE_BACK = rotate(Direction.EAST, Direction.SOUTH, back); + SOUTH_SHAPE_BACK = rotate(Direction.EAST, Direction.WEST, back); + } + private static VoxelShape rotate(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.union(buffer[1], VoxelShapes.cuboid(1-maxZ, minY, minX, 1-minZ, maxY, maxX))); + buffer[0] = buffer[1]; + buffer[1] = VoxelShapes.empty(); + } + + return buffer[0]; + } + + public boolean canPlaceAt(BlockState state, WorldView worldView, BlockPos pos) { + return !worldView.isAir(pos.down()); + } + +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/TrafficCone.java b/src/main/java/eu/midnightdust/motschen/decorative/block/TrafficCone.java index 1ada744..b0f7ec2 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/TrafficCone.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/TrafficCone.java @@ -2,23 +2,10 @@ package eu.midnightdust.motschen.decorative.block; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.*; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemPlacementContext; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.sound.BlockSoundGroup; -import net.minecraft.sound.SoundCategory; -import net.minecraft.sound.SoundEvents; -import net.minecraft.state.StateManager; -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.util.shape.VoxelShape; -import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; -import net.minecraft.world.World; import net.minecraft.world.WorldView; public class TrafficCone extends Block { diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/WaterPump.java b/src/main/java/eu/midnightdust/motschen/decorative/block/WaterPump.java index 0ff890c..e105103 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/block/WaterPump.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/WaterPump.java @@ -2,18 +2,11 @@ package eu.midnightdust.motschen.decorative.block; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.minecraft.block.*; -import net.minecraft.block.entity.BannerBlockEntity; import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.fluid.WaterFluid; import net.minecraft.item.*; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.potion.PotionUtil; -import net.minecraft.potion.Potions; -import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.sound.SoundCategory; import net.minecraft.sound.SoundEvents; -import net.minecraft.stat.Stats; import net.minecraft.state.StateManager; import net.minecraft.util.ActionResult; import net.minecraft.util.Hand; @@ -38,7 +31,7 @@ public class WaterPump extends HorizontalFacingBlock { } public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) { ItemStack itemStack = player.getStackInHand(hand); - if (!itemStack.isEmpty()) { + if (!itemStack.isEmpty() && hand==Hand.MAIN_HAND) { if (itemStack.getItem() == Items.BUCKET) { if (!world.isClient) { if (!player.abilities.creativeMode) { diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/blockentity/PoolSprinklerBlockEntity.java b/src/main/java/eu/midnightdust/motschen/decorative/block/blockentity/PoolSprinklerBlockEntity.java new file mode 100644 index 0000000..bc7022c --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/blockentity/PoolSprinklerBlockEntity.java @@ -0,0 +1,32 @@ +package eu.midnightdust.motschen.decorative.block.blockentity; + +import eu.midnightdust.motschen.decorative.block.PoolSprinkler; +import eu.midnightdust.motschen.decorative.init.BlockEntities; +import eu.midnightdust.motschen.decorative.init.Pool; +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.util.Tickable; +import net.minecraft.util.math.BlockPos; + +public class PoolSprinklerBlockEntity extends BlockEntity implements Tickable { + + public PoolSprinklerBlockEntity() { + super(BlockEntities.PoolSprinklerBlockEntity); + } + + @Override + public void tick() { + BlockPos pos = this.pos; + BlockState state = this.world.getBlockState(pos); + if (world != null && state.get(PoolSprinkler.POWERED) == true) { + switch (state.get(PoolSprinkler.FACING)) { + case NORTH: world.addParticle(ParticleTypes.DRIPPING_WATER,pos.getX()+0.5,pos.getY()+0.5,pos.getZ()-0.34,1,1,1); return; + case EAST: world.addParticle(ParticleTypes.DRIPPING_WATER,pos.getX()+1.34,pos.getY()+0.5,pos.getZ()+0.5,1,1,1); return; + case SOUTH: world.addParticle(ParticleTypes.DRIPPING_WATER,pos.getX()+0.5,pos.getY()+0.5,pos.getZ()+1.34,1,1,1); return; + case WEST: world.addParticle(ParticleTypes.DRIPPING_WATER,pos.getX()-0.34,pos.getY()+0.5,pos.getZ()+0.5,1,1,1); return; + default: return; + } + } + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/block/blockentity/ShowerHeadBlockEntity.java b/src/main/java/eu/midnightdust/motschen/decorative/block/blockentity/ShowerHeadBlockEntity.java new file mode 100644 index 0000000..5a06de4 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/block/blockentity/ShowerHeadBlockEntity.java @@ -0,0 +1,32 @@ +package eu.midnightdust.motschen.decorative.block.blockentity; + +import eu.midnightdust.motschen.decorative.block.PoolSprinkler; +import eu.midnightdust.motschen.decorative.init.BlockEntities; +import eu.midnightdust.motschen.decorative.init.Pool; +import net.minecraft.block.BlockState; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.particle.ParticleTypes; +import net.minecraft.util.Tickable; +import net.minecraft.util.math.BlockPos; + +public class ShowerHeadBlockEntity extends BlockEntity implements Tickable { + + public ShowerHeadBlockEntity() { + super(BlockEntities.ShowerHeadBlockEntity); + } + + @Override + public void tick() { + BlockPos pos = this.pos; + BlockState state = this.world.getBlockState(pos); + if (world != null && state.get(PoolSprinkler.POWERED) == true) { + switch (state.get(PoolSprinkler.FACING)) { + case NORTH: world.addParticle(ParticleTypes.DRIPPING_WATER,pos.getX()+0.5,pos.getY()+0.5,pos.getZ()+0.625,1,1,1); return; + case EAST: world.addParticle(ParticleTypes.DRIPPING_WATER,pos.getX()+0.375,pos.getY()+0.5,pos.getZ()+0.5,1,1,1); return; + case SOUTH: world.addParticle(ParticleTypes.DRIPPING_WATER,pos.getX()+0.5,pos.getY()+0.5,pos.getZ()+0.375,1,1,1); return; + case WEST: world.addParticle(ParticleTypes.DRIPPING_WATER,pos.getX()+0.625,pos.getY()+0.5,pos.getZ()+0.5,1,1,1); return; + default: return; + } + } + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/BathTireEntity.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/BathTireEntity.java new file mode 100644 index 0000000..f02a6ed --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/BathTireEntity.java @@ -0,0 +1,129 @@ +package eu.midnightdust.motschen.decorative.entity; + +import net.minecraft.block.BlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.damage.DamageSource; +import net.minecraft.entity.passive.PigEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.fluid.Fluid; +import net.minecraft.item.ItemStack; +import net.minecraft.sound.SoundEvent; +import net.minecraft.tag.Tag; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +public class BathTireEntity extends PigEntity { + public BathTireEntity(EntityType entityType, World world) { + super(entityType, world); + } + + @Override + protected int getCurrentExperience(PlayerEntity player) { + return 0; + } + + @Override + protected SoundEvent getAmbientSound() { + return null; + } + + @Override + protected SoundEvent getHurtSound(DamageSource source) { + return null; + } + + @Override + protected SoundEvent getDeathSound() { + return null; + } + + protected void playStepSound(BlockPos pos, BlockState state) { + } + + @Override + public boolean canEat() { + return false; + } + + @Override + protected void swimUpward(Tag fluid) { + if (this.getNavigation().canSwim()) { + super.swimUpward(fluid); + } else { + this.setVelocity(this.getVelocity().add(0.0D, 0.7D, 0.0D)); + } + + } + + @Override + public double getHeightOffset() { + return 0.0D; + } + + @Override + public boolean canWalkOnFluid(Fluid fluid) { + return true; + } + + @Override + public float getSaddledSpeed() { + return 0; + } + + @Override + protected void initGoals() { } + + @Override + public boolean canBeRiddenInWater() { + return true; + } + + @Override + protected int computeFallDamage(float fallDistance, float damageMultiplier) { + return 0; + } + + @Override + public boolean cannotDespawn() { + return true; + } + + @Override + protected boolean movesIndependently() { + return false; + } + + @Override + public boolean canMoveVoluntarily() { + return false; + } + + @Override + public boolean canBeControlledByRider() { + return true; + } + + @Override + public ActionResult interactAt(PlayerEntity player, Vec3d hitPos, Hand hand) { + if(!player.getEntityWorld().isClient && player.getStackInHand(hand)== ItemStack.EMPTY && hand==Hand.MAIN_HAND) + { + player.startRiding(this,true); + return ActionResult.SUCCESS; + } + return ActionResult.FAIL; + } + + @Override + public void updatePassengerPosition(Entity passenger) { + if(this.getPrimaryPassenger() instanceof PlayerEntity) + { + passenger.updatePosition(this.getX(),this.getY(),this.getZ()); + } + } + + +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/BeachBallEntity.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/BeachBallEntity.java new file mode 100644 index 0000000..0daf59b --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/BeachBallEntity.java @@ -0,0 +1,126 @@ +package eu.midnightdust.motschen.decorative.entity; + +import eu.midnightdust.motschen.decorative.init.Pool; +import net.minecraft.block.BlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.damage.DamageSource; +import net.minecraft.entity.passive.PigEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.fluid.Fluid; +import net.minecraft.item.ItemStack; +import net.minecraft.sound.SoundEvent; +import net.minecraft.tag.Tag; +import net.minecraft.util.ActionResult; +import net.minecraft.util.Hand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +public class BeachBallEntity extends PigEntity { + public BeachBallEntity(EntityType entityType, World world) { + super(entityType, world); + } + + @Override + protected int getCurrentExperience(PlayerEntity player) { + return 0; + } + + @Override + protected SoundEvent getAmbientSound() { + return null; + } + + @Override + protected SoundEvent getHurtSound(DamageSource source) { + return null; + } + + @Override + protected SoundEvent getDeathSound() { + return null; + } + + protected void playStepSound(BlockPos pos, BlockState state) { + } + + @Override + public boolean canEat() { + return false; + } + + @Override + protected void swimUpward(Tag fluid) { + this.setVelocity(this.getVelocity().add(0.0D, 1.0D, 0.0D)); + } + + @Override + public double getHeightOffset() { + return 0.0D; + } + + @Override + public boolean canWalkOnFluid(Fluid fluid) { + return true; + } + + @Override + public float getSaddledSpeed() { + return 0; + } + + @Override + protected void initGoals() { } + + @Override + public boolean canBeRiddenInWater() { + return true; + } + + @Override + protected int computeFallDamage(float fallDistance, float damageMultiplier) { + return 0; + } + + @Override + public boolean cannotDespawn() { + return true; + } + + @Override + protected boolean movesIndependently() { + return false; + } + + @Override + public boolean canMoveVoluntarily() { + return false; + } + + @Override + public boolean canBeControlledByRider() { + return true; + } + + @Override + public ActionResult interactAt(PlayerEntity player, Vec3d hitPos, Hand hand) { + if(!player.getEntityWorld().isClient && player.getStackInHand(hand)== ItemStack.EMPTY && hand==Hand.MAIN_HAND && player.isSneaking()) + { + remove(); + player.setStackInHand(hand, new ItemStack(Pool.BEACH_BALL_ITEM)); + return ActionResult.SUCCESS; + } + return ActionResult.FAIL; + } + + @Override + public void updatePassengerPosition(Entity passenger) { + if(this.getPrimaryPassenger() instanceof PlayerEntity) + { + passenger.updatePosition(this.getX(),this.getY(),this.getZ()); + } + } + + +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/model/BathTireModel.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/model/BathTireModel.java new file mode 100644 index 0000000..7041214 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/model/BathTireModel.java @@ -0,0 +1,39 @@ +package eu.midnightdust.motschen.decorative.entity.client.model; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import net.minecraft.client.model.ModelPart; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.entity.model.EntityModel; +import net.minecraft.client.util.math.MatrixStack; + +public class BathTireModel extends EntityModel { + private final ModelPart body; + + public BathTireModel() { + textureWidth = 16; + textureHeight = 16; + + body = new ModelPart(this); + body.setPivot(0.0F, 24.0F, 0.0F); + body.setTextureOffset(0, 0).addCuboid(6.0F, -9.0F, -11.0F, 4.0F, 4.0F, 16.0F, 0.0F, false); + body.setTextureOffset(0, 0).addCuboid(-10.0F, -9.0F, -11.0F, 4.0F, 4.0F, 16.0F, 0.0F, false); + body.setTextureOffset(0, 0).addCuboid(-8.0F, -8.99F, -13.0F, 16.0F, 4.0F, 4.0F, 0.0F, false); + body.setTextureOffset(0, 0).addCuboid(-8.0F, -8.99F, 3.0F, 16.0F, 4.0F, 4.0F, 0.0F, false); + } + + @Override + public void setAngles(BathTireEntity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch){ + //previously the render function, render code was moved to a method below + } + + @Override + public void render(MatrixStack matrixStack, VertexConsumer buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha){ + body.render(matrixStack, buffer, packedLight, packedOverlay); + } + + public void setRotationAngle(ModelPart modelRenderer, float x, float y, float z) { + modelRenderer.pivotX = x; + modelRenderer.pivotY = y; + modelRenderer.pivotZ = z; + } +} \ No newline at end of file diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/model/BeachBallModel.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/model/BeachBallModel.java new file mode 100644 index 0000000..32a683c --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/model/BeachBallModel.java @@ -0,0 +1,42 @@ +package eu.midnightdust.motschen.decorative.entity.client.model; + +import eu.midnightdust.motschen.decorative.entity.BeachBallEntity; +import net.minecraft.client.model.ModelPart; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.entity.model.EntityModel; +import net.minecraft.client.util.math.MatrixStack; + +public class BeachBallModel extends EntityModel { + private final ModelPart body; + + public BeachBallModel() { + textureWidth = 64; + textureHeight = 64; + + body = new ModelPart(this); + body.setPivot(0.0F, 24.0F, 0.0F); + body.setTextureOffset(0, 22).addCuboid(-4.0F, -1.0F, -4.0F, 8.0F, 1.0F, 8.0F, 0.0F, false); + body.setTextureOffset(0, 22).addCuboid(-4.0F, -12.0F, -4.0F, 8.0F, 1.0F, 8.0F, 0.0F, false); + body.setTextureOffset(0, 48).addCuboid(-6.0F, -10.0F, -4.0F, 1.0F, 8.0F, 8.0F, 0.0F, false); + body.setTextureOffset(20, 48).addCuboid(5.0F, -10.0F, -4.0F, 1.0F, 8.0F, 8.0F, 0.0F, false); + body.setTextureOffset(0, 33).addCuboid(-4.0F, -10.0F, -6.0F, 8.0F, 8.0F, 1.0F, 0.0F, false); + body.setTextureOffset(20, 33).addCuboid(-4.0F, -10.0F, 5.0F, 8.0F, 8.0F, 1.0F, 0.0F, false); + body.setTextureOffset(0, 0).addCuboid(-5.0F, -11.0F, -5.0F, 10.0F, 10.0F, 10.0F, 0.0F, false); + } + + @Override + public void setAngles(BeachBallEntity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch){ + //previously the render function, render code was moved to a method below + } + + @Override + public void render(MatrixStack matrixStack, VertexConsumer buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha){ + body.render(matrixStack, buffer, packedLight, packedOverlay); + } + + public void setRotationAngle(ModelPart modelRenderer, float x, float y, float z) { + modelRenderer.pivotX = x; + modelRenderer.pivotY = y; + modelRenderer.pivotZ = z; + } +} \ No newline at end of file diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/model/DuckBathTireModel.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/model/DuckBathTireModel.java new file mode 100644 index 0000000..1252300 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/model/DuckBathTireModel.java @@ -0,0 +1,47 @@ +package eu.midnightdust.motschen.decorative.entity.client.model; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import net.minecraft.client.model.ModelPart; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.render.entity.model.EntityModel; +import net.minecraft.client.util.math.MatrixStack; + +public class DuckBathTireModel extends EntityModel { + private final ModelPart body; + + public DuckBathTireModel() { + textureWidth = 64; + textureHeight = 64; + + body = new ModelPart(this); + body.setPivot(0.0F, 19.0F, 0.0F); + body.setTextureOffset(0, 9).addCuboid(6.0F, -3.0F, -8.0F, 4.0F, 3.0F, 16.0F, 0.0F, false); + body.setTextureOffset(0, 37).addCuboid(-10.0F, -3.0F, -8.0F, 4.0F, 3.0F, 16.0F, 0.0F, false); + body.setTextureOffset(0, 57).addCuboid(-8.0F, -2.99F, -10.0F, 16.0F, 3.0F, 4.0F, 0.0F, false); + body.setTextureOffset(0, 29).addCuboid(-8.0F, -2.99F, 6.0F, 16.0F, 3.0F, 4.0F, 0.0F, false); + body.setTextureOffset(50, 0).addCuboid(-2.0F, -8.0F, -10.0F, 4.0F, 5.0F, 3.0F, 0.0F, false); + body.setTextureOffset(46, 11).addCuboid(-2.999F, -10.0F, -12.0F, 6.0F, 5.0F, 3.0F, 0.0F, false); + body.setTextureOffset(15, 31).addCuboid(-2.499F, -10.5F, -12.001F, 5.0F, 1.0F, 3.0F, 0.0F, false); + body.setTextureOffset(58, 20).addCuboid(-0.999F, -8.0F, -13.0F, 2.0F, 2.0F, 1.0F, 0.0F, false); + body.setTextureOffset(58, 20).addCuboid(-1.999F, -7.0F, -13.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); + body.setTextureOffset(53, 21).addCuboid(-1.999F, -10.0F, -12.5F, 1.0F, 1.0F, 1.0F, 0.0F, false); + body.setTextureOffset(53, 21).addCuboid(1.001F, -10.0F, -12.5F, 1.0F, 1.0F, 1.0F, 0.0F, false); + body.setTextureOffset(58, 20).addCuboid(1.001F, -7.0F, -13.0F, 1.0F, 1.0F, 1.0F, 0.0F, false); + } + + @Override + public void setAngles(BathTireEntity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch){ + //previously the render function, render code was moved to a method below + } + + @Override + public void render(MatrixStack matrixStack, VertexConsumer buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha){ + body.render(matrixStack, buffer, packedLight, packedOverlay); + } + + public void setRotationAngle(ModelPart modelRenderer, float x, float y, float z) { + modelRenderer.pivotX = x; + modelRenderer.pivotY = y; + modelRenderer.pivotZ = z; + } +} \ No newline at end of file diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/BeachBallRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/BeachBallRenderer.java new file mode 100644 index 0000000..9fe3bac --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/BeachBallRenderer.java @@ -0,0 +1,23 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.DecorativeMain; +import eu.midnightdust.motschen.decorative.entity.BeachBallEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BeachBallModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class BeachBallRenderer extends MobEntityRenderer { + + public BeachBallRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BeachBallModel(), 0.5F); + } + + @Override + public Identifier getTexture(BeachBallEntity entity) { + return new Identifier(DecorativeMain.MOD_ID, "textures/entity/beach_ball.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/BlackBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/BlackBathTireRenderer.java new file mode 100644 index 0000000..1b8ceab --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/BlackBathTireRenderer.java @@ -0,0 +1,22 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class BlackBathTireRenderer extends MobEntityRenderer { + + public BlackBathTireRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BathTireModel(), 0.5F); + } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier("minecraft", "textures/block/black_concrete.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/BlueBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/BlueBathTireRenderer.java new file mode 100644 index 0000000..d19a4ab --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/BlueBathTireRenderer.java @@ -0,0 +1,22 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class BlueBathTireRenderer extends MobEntityRenderer { + + public BlueBathTireRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BathTireModel(), 0.5F); + } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier("minecraft", "textures/block/blue_concrete.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/BrownBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/BrownBathTireRenderer.java new file mode 100644 index 0000000..f688226 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/BrownBathTireRenderer.java @@ -0,0 +1,22 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class BrownBathTireRenderer extends MobEntityRenderer { + + public BrownBathTireRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BathTireModel(), 0.5F); + } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier("minecraft", "textures/block/brown_concrete.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/CyanBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/CyanBathTireRenderer.java new file mode 100644 index 0000000..d231fd7 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/CyanBathTireRenderer.java @@ -0,0 +1,22 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class CyanBathTireRenderer extends MobEntityRenderer { + + public CyanBathTireRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BathTireModel(), 0.5F); + } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier("minecraft", "textures/block/cyan_concrete.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/DuckBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/DuckBathTireRenderer.java new file mode 100644 index 0000000..1075baf --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/DuckBathTireRenderer.java @@ -0,0 +1,23 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.DecorativeMain; +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.BeachBallEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BeachBallModel; +import eu.midnightdust.motschen.decorative.entity.client.model.DuckBathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class DuckBathTireRenderer extends MobEntityRenderer { + + public DuckBathTireRenderer(EntityRenderDispatcher dispatcher) { super(dispatcher, new DuckBathTireModel(), 0.5F); } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier(DecorativeMain.MOD_ID, "textures/entity/duck_bath_tire.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/GrayBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/GrayBathTireRenderer.java new file mode 100644 index 0000000..9008586 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/GrayBathTireRenderer.java @@ -0,0 +1,22 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class GrayBathTireRenderer extends MobEntityRenderer { + + public GrayBathTireRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BathTireModel(), 0.5F); + } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier("minecraft", "textures/block/gray_concrete.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/GreenBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/GreenBathTireRenderer.java new file mode 100644 index 0000000..1385fc8 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/GreenBathTireRenderer.java @@ -0,0 +1,22 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class GreenBathTireRenderer extends MobEntityRenderer { + + public GreenBathTireRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BathTireModel(), 0.5F); + } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier("minecraft", "textures/block/green_concrete.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/LightBlueBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/LightBlueBathTireRenderer.java new file mode 100644 index 0000000..5fb3024 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/LightBlueBathTireRenderer.java @@ -0,0 +1,22 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class LightBlueBathTireRenderer extends MobEntityRenderer { + + public LightBlueBathTireRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BathTireModel(), 0.5F); + } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier("minecraft", "textures/block/light_blue_concrete.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/LightGrayBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/LightGrayBathTireRenderer.java new file mode 100644 index 0000000..576f221 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/LightGrayBathTireRenderer.java @@ -0,0 +1,22 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class LightGrayBathTireRenderer extends MobEntityRenderer { + + public LightGrayBathTireRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BathTireModel(), 0.5F); + } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier("minecraft", "textures/block/light_gray_concrete.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/LimeBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/LimeBathTireRenderer.java new file mode 100644 index 0000000..6fbe6c2 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/LimeBathTireRenderer.java @@ -0,0 +1,22 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class LimeBathTireRenderer extends MobEntityRenderer { + + public LimeBathTireRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BathTireModel(), 0.5F); + } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier("minecraft", "textures/block/lime_concrete.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/MagentaBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/MagentaBathTireRenderer.java new file mode 100644 index 0000000..b42548c --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/MagentaBathTireRenderer.java @@ -0,0 +1,22 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class MagentaBathTireRenderer extends MobEntityRenderer { + + public MagentaBathTireRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BathTireModel(), 0.5F); + } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier("minecraft", "textures/block/magenta_concrete.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/OrangeBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/OrangeBathTireRenderer.java new file mode 100644 index 0000000..1a5be8e --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/OrangeBathTireRenderer.java @@ -0,0 +1,22 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class OrangeBathTireRenderer extends MobEntityRenderer { + + public OrangeBathTireRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BathTireModel(), 0.5F); + } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier("minecraft", "textures/block/orange_concrete.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/PinkBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/PinkBathTireRenderer.java new file mode 100644 index 0000000..d296d82 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/PinkBathTireRenderer.java @@ -0,0 +1,22 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class PinkBathTireRenderer extends MobEntityRenderer { + + public PinkBathTireRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BathTireModel(), 0.5F); + } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier("minecraft", "textures/block/pink_concrete.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/PurpleBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/PurpleBathTireRenderer.java new file mode 100644 index 0000000..271d0e3 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/PurpleBathTireRenderer.java @@ -0,0 +1,22 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class PurpleBathTireRenderer extends MobEntityRenderer { + + public PurpleBathTireRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BathTireModel(), 0.5F); + } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier("minecraft", "textures/block/purple_concrete.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/RedBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/RedBathTireRenderer.java new file mode 100644 index 0000000..f68bd04 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/RedBathTireRenderer.java @@ -0,0 +1,22 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class RedBathTireRenderer extends MobEntityRenderer { + + public RedBathTireRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BathTireModel(), 0.5F); + } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier("minecraft", "textures/block/red_concrete.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/WhiteBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/WhiteBathTireRenderer.java new file mode 100644 index 0000000..6b6ca38 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/WhiteBathTireRenderer.java @@ -0,0 +1,23 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.DecorativeMain; +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class WhiteBathTireRenderer extends MobEntityRenderer { + + public WhiteBathTireRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BathTireModel(), 0.5F); + } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier("minecraft", "textures/block/white_concrete.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/YellowBathTireRenderer.java b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/YellowBathTireRenderer.java new file mode 100644 index 0000000..af5770c --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/entity/client/renderer/YellowBathTireRenderer.java @@ -0,0 +1,22 @@ +package eu.midnightdust.motschen.decorative.entity.client.renderer; + +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.entity.client.model.BathTireModel; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.client.render.entity.MobEntityRenderer; +import net.minecraft.util.Identifier; + +@Environment(EnvType.CLIENT) +public class YellowBathTireRenderer extends MobEntityRenderer { + + public YellowBathTireRenderer(EntityRenderDispatcher dispatcher) { + super(dispatcher, new BathTireModel(), 0.5F); + } + + @Override + public Identifier getTexture(BathTireEntity entity) { + return new Identifier("minecraft", "textures/block/yellow_concrete.png"); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/init/BathTires.java b/src/main/java/eu/midnightdust/motschen/decorative/init/BathTires.java new file mode 100644 index 0000000..24cbb6f --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/init/BathTires.java @@ -0,0 +1,91 @@ +package eu.midnightdust.motschen.decorative.init; + +import eu.midnightdust.motschen.decorative.DecorativeMain; +import eu.midnightdust.motschen.decorative.entity.BathTireEntity; +import eu.midnightdust.motschen.decorative.item.BathTireItem; +import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; +import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder; +import net.minecraft.entity.EntityDimensions; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnGroup; +import net.minecraft.entity.attribute.EntityAttributes; +import net.minecraft.entity.mob.MobEntity; +import net.minecraft.item.Item; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; + +public class BathTires { + public static final EntityType WHITE_BATH_TIRE = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","white_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + public static final EntityType ORANGE_BATH_TIRE = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","orange_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + public static final EntityType MAGENTA_BATH_TIRE= + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","magenta_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + public static final EntityType LIGHT_BLUE_BATH_TIRE = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","light_blue_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + public static final EntityType YELLOW_BATH_TIRE = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","yellow_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + public static final EntityType LIME_BATH_TIRE = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","lime_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + public static final EntityType PINK_BATH_TIRE = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","pink_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + public static final EntityType GRAY_BATH_TIRE = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","gray_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + public static final EntityType LIGHT_GRAY_BATH_TIRE = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","light_gray_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + public static final EntityType CYAN_BATH_TIRE = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","cyan_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + public static final EntityType PURPLE_BATH_TIRE = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","purple_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + public static final EntityType BLUE_BATH_TIRE = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","blue_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + public static final EntityType BROWN_BATH_TIRE = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","brown_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + public static final EntityType GREEN_BATH_TIRE = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","green_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + public static final EntityType RED_BATH_TIRE = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","red_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + public static final EntityType BLACK_BATH_TIRE = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","black_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + + public static final EntityType DUCK_BATH_TIRE = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","duck_bath_tire"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT,BathTireEntity::new).dimensions(EntityDimensions.fixed(1.5f,1)).trackable(100,4).build()); + + public static void init() { + Registry.register(Registry.ITEM, new Identifier("decorative","white_bath_tire"), new BathTireItem(WHITE_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(WHITE_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + Registry.register(Registry.ITEM, new Identifier("decorative","orange_bath_tire"), new BathTireItem(ORANGE_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(ORANGE_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + Registry.register(Registry.ITEM, new Identifier("decorative","magenta_bath_tire"), new BathTireItem(MAGENTA_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(MAGENTA_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + Registry.register(Registry.ITEM, new Identifier("decorative","light_blue_bath_tire"), new BathTireItem(LIGHT_BLUE_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(LIGHT_BLUE_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + Registry.register(Registry.ITEM, new Identifier("decorative","yellow_bath_tire"), new BathTireItem(YELLOW_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(YELLOW_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + Registry.register(Registry.ITEM, new Identifier("decorative","lime_bath_tire"), new BathTireItem(LIME_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(LIME_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + Registry.register(Registry.ITEM, new Identifier("decorative","pink_bath_tire"), new BathTireItem(PINK_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(PINK_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + Registry.register(Registry.ITEM, new Identifier("decorative","gray_bath_tire"), new BathTireItem(GRAY_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(GRAY_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + Registry.register(Registry.ITEM, new Identifier("decorative","light_gray_bath_tire"), new BathTireItem(LIGHT_GRAY_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(LIGHT_GRAY_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + Registry.register(Registry.ITEM, new Identifier("decorative","cyan_bath_tire"), new BathTireItem(CYAN_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(CYAN_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + Registry.register(Registry.ITEM, new Identifier("decorative","purple_bath_tire"), new BathTireItem(PURPLE_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(PURPLE_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + Registry.register(Registry.ITEM, new Identifier("decorative","blue_bath_tire"), new BathTireItem(BLUE_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(BLUE_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + Registry.register(Registry.ITEM, new Identifier("decorative","brown_bath_tire"), new BathTireItem(BROWN_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(BROWN_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + Registry.register(Registry.ITEM, new Identifier("decorative","green_bath_tire"), new BathTireItem(GREEN_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(GREEN_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + Registry.register(Registry.ITEM, new Identifier("decorative","red_bath_tire"), new BathTireItem(RED_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(RED_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + Registry.register(Registry.ITEM, new Identifier("decorative","black_bath_tire"), new BathTireItem(BLACK_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(BLACK_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + + Registry.register(Registry.ITEM, new Identifier("decorative","duck_bath_tire"), new BathTireItem(DUCK_BATH_TIRE, new Item.Settings().group(DecorativeMain.PoolGroup))); + FabricDefaultAttributeRegistry.register(DUCK_BATH_TIRE, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 2.0D)); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/init/BlockEntities.java b/src/main/java/eu/midnightdust/motschen/decorative/init/BlockEntities.java new file mode 100644 index 0000000..ac59c19 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/init/BlockEntities.java @@ -0,0 +1,20 @@ +package eu.midnightdust.motschen.decorative.init; + +import eu.midnightdust.motschen.decorative.DecorativeMain; +import eu.midnightdust.motschen.decorative.block.blockentity.PoolSprinklerBlockEntity; +import eu.midnightdust.motschen.decorative.block.blockentity.ShowerHeadBlockEntity; +import net.minecraft.block.entity.BlockEntityType; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; + +public class BlockEntities { + + public static BlockEntityType PoolSprinklerBlockEntity; + public static BlockEntityType ShowerHeadBlockEntity; + + public static void init() { + PoolSprinklerBlockEntity = Registry.register(Registry.BLOCK_ENTITY_TYPE, new Identifier("decorative","pool_sprinkler_blockentity"), BlockEntityType.Builder.create(PoolSprinklerBlockEntity::new, Pool.PoolSprinkler).build(null)); + ShowerHeadBlockEntity = Registry.register(Registry.BLOCK_ENTITY_TYPE, new Identifier("decorative","shower_head_blockentity"), BlockEntityType.Builder.create(ShowerHeadBlockEntity::new, DecorativeMain.ShowerHead).build(null)); + + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/init/LogsWithAxes.java b/src/main/java/eu/midnightdust/motschen/decorative/init/LogsWithAxes.java index 1e6c2b6..6a16248 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/init/LogsWithAxes.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/init/LogsWithAxes.java @@ -1,7 +1,6 @@ package eu.midnightdust.motschen.decorative.init; import eu.midnightdust.motschen.decorative.DecorativeMain; -import eu.midnightdust.motschen.decorative.block.Lamp; import eu.midnightdust.motschen.decorative.block.LogWithAxe; import net.minecraft.block.Block; import net.minecraft.item.BlockItem; diff --git a/src/main/java/eu/midnightdust/motschen/decorative/init/Pool.java b/src/main/java/eu/midnightdust/motschen/decorative/init/Pool.java new file mode 100644 index 0000000..bf8eb28 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/init/Pool.java @@ -0,0 +1,42 @@ +package eu.midnightdust.motschen.decorative.init; + +import eu.midnightdust.motschen.decorative.DecorativeMain; +import eu.midnightdust.motschen.decorative.block.PoolSprinkler; +import eu.midnightdust.motschen.decorative.block.PoolWall; +import eu.midnightdust.motschen.decorative.block.Springboard; +import eu.midnightdust.motschen.decorative.entity.BeachBallEntity; +import eu.midnightdust.motschen.decorative.item.BathTireItem; +import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry; +import net.fabricmc.fabric.api.object.builder.v1.entity.FabricEntityTypeBuilder; +import net.minecraft.block.Block; +import net.minecraft.entity.EntityDimensions; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnGroup; +import net.minecraft.entity.attribute.EntityAttributes; +import net.minecraft.entity.mob.MobEntity; +import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; +import net.minecraft.util.Identifier; +import net.minecraft.util.registry.Registry; + +public class Pool { + + public static final EntityType BEACH_BALL = + Registry.register(Registry.ENTITY_TYPE,new Identifier("decorative","beach_ball"), FabricEntityTypeBuilder.create(SpawnGroup.AMBIENT, BeachBallEntity::new).dimensions(EntityDimensions.fixed(0.9f,0.9f)).trackable(100,4).build()); + public static Item BEACH_BALL_ITEM = new BathTireItem(BEACH_BALL, new Item.Settings().group(DecorativeMain.PoolGroup)); + public static Block PoolWall = new PoolWall(); + public static Block Springboard = new Springboard(); + public static Block PoolSprinkler = new PoolSprinkler(); + + public static void init() { + Registry.register(Registry.BLOCK, new Identifier("decorative","pool_wall"), PoolWall); + Registry.register(Registry.ITEM, new Identifier("decorative","pool_wall"), new BlockItem(PoolWall, new Item.Settings().group(DecorativeMain.PoolGroup))); + Registry.register(Registry.BLOCK, new Identifier("decorative","springboard"), Springboard); + Registry.register(Registry.ITEM, new Identifier("decorative","springboard"), new BlockItem(Springboard, new Item.Settings().group(DecorativeMain.PoolGroup))); + Registry.register(Registry.BLOCK, new Identifier("decorative","pool_sprinkler"), PoolSprinkler); + Registry.register(Registry.ITEM, new Identifier("decorative","pool_sprinkler"), new BlockItem(PoolSprinkler, new Item.Settings().group(DecorativeMain.PoolGroup))); + Registry.register(Registry.ITEM, new Identifier("decorative","beach_ball"), BEACH_BALL_ITEM); + FabricDefaultAttributeRegistry.register(BEACH_BALL, MobEntity.createMobAttributes().add(EntityAttributes.GENERIC_MAX_HEALTH, 100000.0D).add(EntityAttributes.GENERIC_KNOCKBACK_RESISTANCE, -10D)); + BathTires.init(); + } +} diff --git a/src/main/java/eu/midnightdust/motschen/decorative/init/Signs.java b/src/main/java/eu/midnightdust/motschen/decorative/init/Signs.java index 1cf75b9..b194018 100644 --- a/src/main/java/eu/midnightdust/motschen/decorative/init/Signs.java +++ b/src/main/java/eu/midnightdust/motschen/decorative/init/Signs.java @@ -1,7 +1,6 @@ package eu.midnightdust.motschen.decorative.init; import eu.midnightdust.motschen.decorative.DecorativeMain; -import eu.midnightdust.motschen.decorative.block.LogWithAxe; import eu.midnightdust.motschen.decorative.block.Sign; import net.minecraft.block.Block; import net.minecraft.item.BlockItem; diff --git a/src/main/java/eu/midnightdust/motschen/decorative/item/BathTireItem.java b/src/main/java/eu/midnightdust/motschen/decorative/item/BathTireItem.java new file mode 100644 index 0000000..4d24291 --- /dev/null +++ b/src/main/java/eu/midnightdust/motschen/decorative/item/BathTireItem.java @@ -0,0 +1,71 @@ +package eu.midnightdust.motschen.decorative.item; + +import com.google.common.collect.Maps; +import java.util.Map; +import net.minecraft.block.FluidBlock; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.SpawnReason; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.stat.Stats; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.util.hit.BlockHitResult; +import net.minecraft.util.hit.HitResult; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.RayTraceContext; +import net.minecraft.world.World; + +public class BathTireItem extends Item { + private static final Map, BathTireItem> SPAWN_EGGS = Maps.newIdentityHashMap(); + private final EntityType type; + + public BathTireItem(EntityType type, Item.Settings settings) { + super(settings); + this.type = type; + SPAWN_EGGS.put(type, this); + } + + public TypedActionResult use(World world, PlayerEntity user, Hand hand) { + ItemStack itemStack = user.getStackInHand(hand); + HitResult hitResult = rayTrace(world, user, RayTraceContext.FluidHandling.SOURCE_ONLY); + if (hitResult.getType() != HitResult.Type.BLOCK) { + return TypedActionResult.pass(itemStack); + } else if (world.isClient) { + return TypedActionResult.success(itemStack); + } else { + BlockHitResult blockHitResult = (BlockHitResult)hitResult; + BlockPos blockPos = blockHitResult.getBlockPos(); + if (!(world.getBlockState(blockPos).getBlock() instanceof FluidBlock)) { + return TypedActionResult.pass(itemStack); + } else if (world.canPlayerModifyAt(user, blockPos) && user.canPlaceOn(blockPos, blockHitResult.getSide(), itemStack)) { + EntityType entityType = this.getEntityType(itemStack.getTag()); + if (entityType.spawnFromItemStack(world, itemStack, user, blockPos.up(1), SpawnReason.SPAWN_EGG, false, false) == null) { + return TypedActionResult.pass(itemStack); + } else { + if (!user.abilities.creativeMode) { + itemStack.decrement(1); + } + + user.incrementStat(Stats.USED.getOrCreateStat(this)); + return TypedActionResult.success(itemStack); + } + } else { + return TypedActionResult.fail(itemStack); + } + } + } + + public EntityType getEntityType(CompoundTag tag) { + if (tag != null && tag.contains("EntityTag", 10)) { + CompoundTag compoundTag = tag.getCompound("EntityTag"); + if (compoundTag.contains("id", 8)) { + return EntityType.get(compoundTag.getString("id")).orElse(this.type); + } + } + + return this.type; + } +} diff --git a/src/main/resources/assets/decorative/blockstates/pool_sprinkler.json b/src/main/resources/assets/decorative/blockstates/pool_sprinkler.json new file mode 100644 index 0000000..0e1dd28 --- /dev/null +++ b/src/main/resources/assets/decorative/blockstates/pool_sprinkler.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=south": { "model": "decorative:block/pool_sprinkler", "y": 270 }, + "facing=west": { "model": "decorative:block/pool_sprinkler", "y": 0 }, + "facing=north": { "model": "decorative:block/pool_sprinkler", "y": 90 }, + "facing=east": { "model": "decorative:block/pool_sprinkler", "y": 180 } + } +} diff --git a/src/main/resources/assets/decorative/blockstates/pool_wall.json b/src/main/resources/assets/decorative/blockstates/pool_wall.json new file mode 100644 index 0000000..887f3b1 --- /dev/null +++ b/src/main/resources/assets/decorative/blockstates/pool_wall.json @@ -0,0 +1,16 @@ +{ + "variants": { + "facing=east,shape=straight": { "model": "decorative:block/pool_wall" }, + "facing=west,shape=straight": { "model": "decorative:block/pool_wall", "y": 180, "uvlock": true }, + "facing=south,shape=straight": { "model": "decorative:block/pool_wall", "y": 90, "uvlock": true }, + "facing=north,shape=straight": { "model": "decorative:block/pool_wall", "y": 270, "uvlock": true }, + "facing=east,shape=inner_left": { "model": "decorative:block/pool_wall_corner" }, + "facing=west,shape=inner_left": { "model": "decorative:block/pool_wall_corner", "y": 180, "uvlock": true }, + "facing=south,shape=inner_left": { "model": "decorative:block/pool_wall_corner", "y": 90, "uvlock": true }, + "facing=north,shape=inner_left": { "model": "decorative:block/pool_wall_corner", "y": 270, "uvlock": true }, + "facing=east,shape=inner_right": { "model": "decorative:block/pool_wall_corner", "y": 90, "uvlock": true }, + "facing=west,shape=inner_right": { "model": "decorative:block/pool_wall_corner", "y": 270, "uvlock": true }, + "facing=south,shape=inner_right": { "model": "decorative:block/pool_wall_corner", "y": 180, "uvlock": true }, + "facing=north,shape=inner_right": { "model": "decorative:block/pool_wall_corner" } + } +} diff --git a/src/main/resources/assets/decorative/blockstates/shower_head.json b/src/main/resources/assets/decorative/blockstates/shower_head.json new file mode 100644 index 0000000..f3a817c --- /dev/null +++ b/src/main/resources/assets/decorative/blockstates/shower_head.json @@ -0,0 +1,8 @@ +{ + "variants": { + "facing=south": { "model": "decorative:block/shower_head", "y": 90 }, + "facing=west": { "model": "decorative:block/shower_head", "y": 180 }, + "facing=north": { "model": "decorative:block/shower_head", "y": 270 }, + "facing=east": { "model": "decorative:block/shower_head" } + } +} diff --git a/src/main/resources/assets/decorative/blockstates/springboard.json b/src/main/resources/assets/decorative/blockstates/springboard.json new file mode 100644 index 0000000..4f2b18d --- /dev/null +++ b/src/main/resources/assets/decorative/blockstates/springboard.json @@ -0,0 +1,12 @@ +{ + "variants": { + "facing=north,part=back": { "model": "decorative:block/springboard_back", "y": 90 }, + "facing=north,part=front": { "model": "decorative:block/springboard_front", "y": 90 }, + "facing=east,part=back": { "model": "decorative:block/springboard_back", "y": 180 }, + "facing=east,part=front": { "model": "decorative:block/springboard_front", "y": 180 }, + "facing=south,part=back": { "model": "decorative:block/springboard_back", "y": 270 }, + "facing=south,part=front": { "model": "decorative:block/springboard_front", "y": 270 }, + "facing=west,part=back": { "model": "decorative:block/springboard_back" }, + "facing=west,part=front": { "model": "decorative:block/springboard_front" } + } +} diff --git a/src/main/resources/assets/decorative/icon.png b/src/main/resources/assets/decorative/icon.png index 218d6c2..fdc792b 100644 Binary files a/src/main/resources/assets/decorative/icon.png and b/src/main/resources/assets/decorative/icon.png differ diff --git a/src/main/resources/assets/decorative/lang/de_de.json b/src/main/resources/assets/decorative/lang/de_de.json index 938611c..1a39920 100644 --- a/src/main/resources/assets/decorative/lang/de_de.json +++ b/src/main/resources/assets/decorative/lang/de_de.json @@ -2,7 +2,7 @@ // ItemGroups // "itemGroup.decorative.indoor":"Decorative - Innen", "itemGroup.decorative.traffic":"Decorative - Verkehr", - "itemGroup.decorative.garden":"Decorative - Garden", + "itemGroup.decorative.garden":"Decorative - Garten", "text.decorative.landing_text":"Das ist eine Anleitung, wie du die verschiedenen Dekorationen der Mod Decorative herstellst. Es gibt Lampen, Fernseher, Deckenventillatoren und vieles mehr.", "book.decorative.decoration_guide":"Dekorationshandbuch", @@ -81,5 +81,31 @@ "block.decorative.eighty_sign":"Tempo Limit: 80 km/h", "block.decorative.ninety_sign":"Tempo Limit: 90 km/h", "block.decorative.onehundred_sign":"Tempo Limit: 100 km/h", - "block.decorative.onehundredten_sign":"Tempo Limit: 110 km/h" + "block.decorative.onehundredten_sign":"Tempo Limit: 110 km/h", + + //* 2.0 - Summer 2020 Update *// + "itemGroup.decorative.pool":"Decorative - Pool", + "item.decorative.white_bath_tire":"Weißer Schwimmreifen", + "item.decorative.orange_bath_tire":"Orangener Schwimmreifen", + "item.decorative.magenta_bath_tire":"Magenta Schwimmreifen", + "item.decorative.light_blue_bath_tire":"Hellblauer Schwimmreifen", + "item.decorative.yellow_bath_tire":"Gelber Schwimmreifen", + "item.decorative.lime_bath_tire":"Hellgrüner Schwimmreifen", + "item.decorative.pink_bath_tire":"Pinker Schwimmreifen", + "item.decorative.gray_bath_tire":"Grauer Schwimmreifen", + "item.decorative.light_gray_bath_tire":"Hellgrauer Schwimmreifen", + "item.decorative.cyan_bath_tire":"Cyanener Schwimmreifen", + "item.decorative.purple_bath_tire":"Lila Schwimmreifen", + "item.decorative.blue_bath_tire":"Blauer Schwimmreifen", + "item.decorative.brown_bath_tire":"Brauner Schwimmreifen", + "item.decorative.green_bath_tire":"Grüner Schwimmreifen", + "item.decorative.red_bath_tire":"Roter Schwimmreifen", + "item.decorative.black_bath_tire":"Schwarzer Schwimmreifen", + "item.decorative.duck_bath_tire":"Enten-Schwimmreifen", + + "item.decorative.beach_ball":"Beach Ball", + "block.decorative.pool_wall":"Poolwand", + "block.decorative.springboard":"Sprungbrett", + "block.decorative.pool_sprinkler":"Wasserspeier", + "block.decorative.shower_head":"Duschkopf" } \ No newline at end of file diff --git a/src/main/resources/assets/decorative/lang/en_us.json b/src/main/resources/assets/decorative/lang/en_us.json index c18cdf2..ded8ec0 100644 --- a/src/main/resources/assets/decorative/lang/en_us.json +++ b/src/main/resources/assets/decorative/lang/en_us.json @@ -81,5 +81,31 @@ "block.decorative.eighty_sign":"Tempo Limit: 80 km/h", "block.decorative.ninety_sign":"Tempo Limit: 90 km/h", "block.decorative.onehundred_sign":"Tempo Limit: 100 km/h", - "block.decorative.onehundredten_sign":"Tempo Limit: 110 km/h" + "block.decorative.onehundredten_sign":"Tempo Limit: 110 km/h", + + //* 2.0 - Summer 2020 Update *// + "itemGroup.decorative.pool":"Decorative - Pool", + "item.decorative.white_bath_tire":"White Bath Tire", + "item.decorative.orange_bath_tire":"Orange Bath Tire", + "item.decorative.magenta_bath_tire":"Magenta Bath Tire", + "item.decorative.light_blue_bath_tire":"Light Blue Bath Tire", + "item.decorative.yellow_bath_tire":"Yellow Bath Tire", + "item.decorative.lime_bath_tire":"Lime Bath Tire", + "item.decorative.pink_bath_tire":"Pink Bath Tire", + "item.decorative.gray_bath_tire":"Gray Bath Tire", + "item.decorative.light_gray_bath_tire":"Light Gray Bath Tire", + "item.decorative.cyan_bath_tire":"Cyan Bath Tire", + "item.decorative.purple_bath_tire":"Purple Bath Tire", + "item.decorative.blue_bath_tire":"Blue Bath Tire", + "item.decorative.brown_bath_tire":"Brown Bath Tire", + "item.decorative.green_bath_tire":"Green Bath Tire", + "item.decorative.red_bath_tire":"Red Bath Tire", + "item.decorative.black_bath_tire":"Black Bath Tire", + "item.decorative.duck_bath_tire":"Duck Bath Tire", + + "item.decorative.beach_ball":"Beach Ball", + "block.decorative.pool_wall":"Pool Wall", + "block.decorative.springboard":"Springboard", + "block.decorative.pool_sprinkler":"Pool Sprinkler", + "block.decorative.shower_head":"Shower Head" } \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/block/pool_sprinkler.json b/src/main/resources/assets/decorative/models/block/pool_sprinkler.json new file mode 100644 index 0000000..4dbe63b --- /dev/null +++ b/src/main/resources/assets/decorative/models/block/pool_sprinkler.json @@ -0,0 +1,69 @@ +{ + "credit": "made by Motschen", + "parent": "block/block", + "textures": { + "0": "block/iron_block", + "1": "block/gray_concrete", + "particle": "block/iron_block" + }, + "elements": [ + { + "from": [0, 0, 7], + "to": [2, 11, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 15]}, + "faces": { + "north": {"uv": [1, 1, 3, 12], "texture": "#0"}, + "east": {"uv": [1, 1, 3, 12], "texture": "#0"}, + "south": {"uv": [1, 1, 3, 12], "texture": "#0"}, + "west": {"uv": [1, 1, 3, 12], "texture": "#0"}, + "down": {"uv": [1, 1, 3, 3], "texture": "#0"} + } + }, + { + "from": [-4, 11, 7], + "to": [0, 13, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [7, 6, 15]}, + "faces": { + "north": {"uv": [1, 1, 5, 3], "texture": "#0"}, + "south": {"uv": [1, 1, 5, 3], "texture": "#0"}, + "up": {"uv": [1, 1, 5, 3], "texture": "#0"}, + "down": {"uv": [1, 1, 5, 3], "texture": "#0"} + } + }, + { + "from": [-7.9, 6.075, 7.001], + "to": [-5.07, 8.075, 8.999], + "rotation": {"angle": -45, "axis": "z", "origin": [2, 1, 15]}, + "faces": { + "north": {"uv": [1, 1, 3.83, 3], "texture": "#0"}, + "south": {"uv": [1, 1, 3.83, 3], "texture": "#0"}, + "up": {"uv": [1, 1, 3.83, 2.998], "texture": "#0"}, + "down": {"uv": [1, 1, 3.83, 2.998], "texture": "#0"} + } + }, + { + "from": [-3.9, 18.075, 7.001], + "to": [-1.07, 20.075, 8.999], + "rotation": {"angle": 45, "axis": "z", "origin": [6, 13, 15]}, + "faces": { + "north": {"uv": [1, 1, 3.83, 3], "texture": "#0"}, + "south": {"uv": [1, 1, 3.83, 3], "texture": "#0"}, + "west": {"uv": [1, 1, 2.998, 3], "texture": "#0"}, + "up": {"uv": [1, 1, 3.83, 2.998], "texture": "#0"}, + "down": {"uv": [1, 1, 3.83, 2.998], "texture": "#0"} + } + }, + { + "from": [-4.9, 18.6, 7.25], + "to": [-4.6, 20.1, 8.75], + "rotation": {"angle": 45, "axis": "z", "origin": [6, 14, 15]}, + "faces": { + "north": {"uv": [1, 1, 3.83, 3], "texture": "#1"}, + "south": {"uv": [1, 1, 3.83, 3], "texture": "#1"}, + "west": {"uv": [1, 1, 2.998, 3], "texture": "#1"}, + "up": {"uv": [1, 1, 3.83, 2.998], "texture": "#1"}, + "down": {"uv": [1, 1, 3.83, 2.998], "texture": "#1"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/block/pool_wall.json b/src/main/resources/assets/decorative/models/block/pool_wall.json new file mode 100644 index 0000000..dbc25c5 --- /dev/null +++ b/src/main/resources/assets/decorative/models/block/pool_wall.json @@ -0,0 +1,22 @@ +{ + "credit": "made by Motschen", + "parent": "block/block", + "textures": { + "0": "block/white_concrete", + "particle": "block/white_concrete" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [1, 16, 16], + "faces": { + "north": {"uv": [0, 0, 1, 16], "texture": "#0"}, + "east": {"uv": [0, 0, 16, 16], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 16], "texture": "#0"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#0"}, + "up": {"uv": [0, 0, 1, 16], "texture": "#0"}, + "down": {"uv": [0, 0, 1, 16], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/block/pool_wall_corner.json b/src/main/resources/assets/decorative/models/block/pool_wall_corner.json new file mode 100644 index 0000000..e733cdb --- /dev/null +++ b/src/main/resources/assets/decorative/models/block/pool_wall_corner.json @@ -0,0 +1,34 @@ +{ + "credit": "made by Motschen", + "parent": "block/block", + "textures": { + "0": "block/white_concrete", + "particle": "block/white_concrete" + }, + "elements": [ + { + "from": [0, 0, 0], + "to": [1, 16, 16], + "faces": { + "north": {"uv": [0, 0, 1, 16], "texture": "#0"}, + "east": {"uv": [0, 0, 16, 16], "texture": "#0"}, + "south": {"uv": [0, 0, 1, 16], "texture": "#0"}, + "west": {"uv": [0, 0, 16, 16], "texture": "#0"}, + "up": {"uv": [0, 0, 1, 16], "texture": "#0"}, + "down": {"uv": [0, 0, 1, 16], "texture": "#0"} + } + }, + { + "from": [1, 0, 15], + "to": [16, 16, 16], + "faces": { + "north": {"uv": [0, 0, 15, 16], "texture": "#0"}, + "east": {"uv": [0, 0, 1, 16], "texture": "#0"}, + "south": {"uv": [0, 0, 15, 16], "texture": "#0"}, + "west": {"uv": [0, 0, 1, 16], "texture": "#0"}, + "up": {"uv": [0, 0, 1, 15], "rotation": 270, "texture": "#0"}, + "down": {"uv": [0, 0, 1, 15], "rotation": 90, "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/block/road_white_long.json b/src/main/resources/assets/decorative/models/block/road_white_long.json index fb3b405..a3be8cd 100644 --- a/src/main/resources/assets/decorative/models/block/road_white_long.json +++ b/src/main/resources/assets/decorative/models/block/road_white_long.json @@ -15,17 +15,9 @@ "east": {"uv": [0, 0, 16, 16], "texture": "#0"}, "south": {"uv": [0, 0, 16, 16], "texture": "#0"}, "west": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, "down": {"uv": [0, 0, 16, 16], "texture": "#0"} } - }, - { - "from": [0, 16.01, 0], - "to": [16, 16.01, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 24, 8]}, - "faces": { - "up": {"uv": [0, 0, 16, 16], "texture": "#1"} - } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/block/road_white_short.json b/src/main/resources/assets/decorative/models/block/road_white_short.json index 5c6bcd2..0753bca 100644 --- a/src/main/resources/assets/decorative/models/block/road_white_short.json +++ b/src/main/resources/assets/decorative/models/block/road_white_short.json @@ -15,17 +15,9 @@ "east": {"uv": [0, 0, 16, 16], "texture": "#0"}, "south": {"uv": [0, 0, 16, 16], "texture": "#0"}, "west": {"uv": [0, 0, 16, 16], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#1"}, "down": {"uv": [0, 0, 16, 16], "texture": "#0"} } - }, - { - "from": [0, 16.01, 0], - "to": [16, 16.01, 16], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 24, 8]}, - "faces": { - "up": {"uv": [0, 0, 16, 16], "texture": "#1"} - } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/block/shower_head.json b/src/main/resources/assets/decorative/models/block/shower_head.json new file mode 100644 index 0000000..36fdd45 --- /dev/null +++ b/src/main/resources/assets/decorative/models/block/shower_head.json @@ -0,0 +1,47 @@ +{ + "credit": "made by Motschen", + "parent": "block/block", + "textures": { + "0": "block/gray_concrete", + "1": "decorative:block/shower_head", + "particle": "block/gray_concrete" + }, + "elements": [ + { + "from": [0, 12, 7], + "to": [6, 14, 9], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 20, 15]}, + "faces": { + "north": {"uv": [0, 0, 6, 2], "texture": "#0"}, + "south": {"uv": [0, 0, 6, 2], "texture": "#0"}, + "west": {"uv": [0, 0, 2, 2], "texture": "#0"}, + "up": {"uv": [0, 0, 6, 2], "texture": "#0"}, + "down": {"uv": [0, 0, 6, 2], "texture": "#0"} + } + }, + { + "from": [3, 9.7, 4], + "to": [11, 11.2, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [15, 17, 15]}, + "faces": { + "north": {"uv": [0, 0, 8, 1.5], "texture": "#0"}, + "east": {"uv": [0, 0, 8, 1.5], "texture": "#0"}, + "south": {"uv": [0, 0, 8, 1.5], "texture": "#0"}, + "west": {"uv": [0, 0, 8, 1.5], "texture": "#0"}, + "up": {"uv": [0, 0, 8, 8], "texture": "#0"}, + "down": {"uv": [0, 0, 8.5, 8.5], "texture": "#1"} + } + }, + { + "from": [8.651, 5.65, 7.001], + "to": [12.651, 7.65, 8.999], + "rotation": {"angle": -45, "axis": "z", "origin": [15, 14, 15]}, + "faces": { + "north": {"uv": [0, 0, 4, 2], "texture": "#0"}, + "south": {"uv": [0, 0, 4, 2], "texture": "#0"}, + "up": {"uv": [0, 0, 4, 1.998], "texture": "#0"}, + "down": {"uv": [0, 0, 4, 1.998], "texture": "#0"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/block/sliding_door_bottom.json b/src/main/resources/assets/decorative/models/block/sliding_door_bottom.json index e72930b..10051cd 100644 --- a/src/main/resources/assets/decorative/models/block/sliding_door_bottom.json +++ b/src/main/resources/assets/decorative/models/block/sliding_door_bottom.json @@ -1,6 +1,6 @@ { "credit": "made by Motschen", - "parent": "block", + "parent": "block/block", "textures": { "0": "block/glass", "1": "block/white_concrete", diff --git a/src/main/resources/assets/decorative/models/block/sliding_door_bottom_open.json b/src/main/resources/assets/decorative/models/block/sliding_door_bottom_open.json index 5878154..c514f5a 100644 --- a/src/main/resources/assets/decorative/models/block/sliding_door_bottom_open.json +++ b/src/main/resources/assets/decorative/models/block/sliding_door_bottom_open.json @@ -1,6 +1,6 @@ { "credit": "made by Motschen", - "parent": "block", + "parent": "block/block", "textures": { "0": "block/glass", "1": "block/white_concrete", diff --git a/src/main/resources/assets/decorative/models/block/sliding_door_top.json b/src/main/resources/assets/decorative/models/block/sliding_door_top.json index 05b077c..427d41b 100644 --- a/src/main/resources/assets/decorative/models/block/sliding_door_top.json +++ b/src/main/resources/assets/decorative/models/block/sliding_door_top.json @@ -1,6 +1,6 @@ { "credit": "made by Motschen", - "parent": "block", + "parent": "block/block", "textures": { "0": "block/glass", "1": "block/white_concrete", diff --git a/src/main/resources/assets/decorative/models/block/sliding_door_top_open.json b/src/main/resources/assets/decorative/models/block/sliding_door_top_open.json index e14f71c..fe7d682 100644 --- a/src/main/resources/assets/decorative/models/block/sliding_door_top_open.json +++ b/src/main/resources/assets/decorative/models/block/sliding_door_top_open.json @@ -1,6 +1,6 @@ { "credit": "made by Motschen", - "parent": "block", + "parent": "block/block", "textures": { "0": "block/glass", "1": "block/white_concrete", diff --git a/src/main/resources/assets/decorative/models/block/springboard_back.json b/src/main/resources/assets/decorative/models/block/springboard_back.json new file mode 100644 index 0000000..ab75746 --- /dev/null +++ b/src/main/resources/assets/decorative/models/block/springboard_back.json @@ -0,0 +1,147 @@ +{ + "credit": "made by Motschen", + "textures": { + "0": "block/white_concrete", + "1": "block/iron_block", + "particle": "block/white_concrete" + }, + "elements": [ + { + "from": [0, 2, 1], + "to": [12, 3, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 9]}, + "faces": { + "north": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 14, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 12, 14], "texture": "#0"}, + "down": {"uv": [0, 0, 12, 14], "texture": "#0"} + } + }, + { + "from": [5, 1, 1], + "to": [14, 2, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 9, 9]}, + "faces": { + "north": {"uv": [0, 0, 9, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 14, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 9, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 14, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 9, 14], "texture": "#0"}, + "down": {"uv": [0, 0, 9, 14], "texture": "#0"} + } + }, + { + "from": [7, 0, 1], + "to": [16, 1, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 9]}, + "faces": { + "north": {"uv": [0, 0, 9, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 14, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 9, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 14, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 9, 14], "texture": "#0"}, + "down": {"uv": [0, 0, 9, 14], "texture": "#0"} + } + }, + { + "from": [0, 0, 0], + "to": [15, 1, 1], + "faces": { + "north": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 15, 1], "texture": "#1"} + } + }, + { + "from": [0, 0, 15], + "to": [15, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 23]}, + "faces": { + "north": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 15, 1], "texture": "#1"} + } + }, + { + "from": [0, 6, 0], + "to": [15, 7, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, 8]}, + "faces": { + "north": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 15, 1], "texture": "#1"} + } + }, + { + "from": [0, 6, 15], + "to": [15, 7, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, 23]}, + "faces": { + "north": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 15, 1], "texture": "#1"} + } + }, + { + "from": [15, 0, 0], + "to": [16, 6, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [23, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#1"} + } + }, + { + "from": [15, 0, 15], + "to": [16, 6, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [23, 8, 23]}, + "faces": { + "north": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#1"} + } + }, + { + "from": [14, 5, 15], + "to": [15, 6, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [22, 8, 23]}, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#1"} + } + }, + { + "from": [14, 5, 0], + "to": [15, 6, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [22, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#1"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/block/springboard_front.json b/src/main/resources/assets/decorative/models/block/springboard_front.json new file mode 100644 index 0000000..2664fd3 --- /dev/null +++ b/src/main/resources/assets/decorative/models/block/springboard_front.json @@ -0,0 +1,122 @@ +{ + "credit": "made by Motschen", + "textures": { + "0": "block/white_concrete", + "1": "block/iron_block", + "particle": "block/white_concrete" + }, + "elements": [ + { + "from": [0, 2, 1], + "to": [16, 3, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 9]}, + "faces": { + "north": {"uv": [0, 0, 16, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 16, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 14, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 16, 14], "texture": "#0"}, + "down": {"uv": [0, 0, 16, 14], "texture": "#0"} + } + }, + { + "from": [9, 0, 15], + "to": [16, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 23]}, + "faces": { + "north": {"uv": [0, 0, 7, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 7, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 7, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 7, 1], "texture": "#1"} + } + }, + { + "from": [9, 0, 0], + "to": [16, 1, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 7, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 7, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 7, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 7, 1], "texture": "#1"} + } + }, + { + "from": [9, 6, 15], + "to": [16, 7, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 14, 23]}, + "faces": { + "north": {"uv": [0, 0, 7, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 7, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 7, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 7, 1], "texture": "#1"} + } + }, + { + "from": [9, 6, 0], + "to": [16, 7, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 14, 8]}, + "faces": { + "north": {"uv": [0, 0, 7, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 7, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 7, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 7, 1], "texture": "#1"} + } + }, + { + "from": [8, 0, 15], + "to": [9, 6, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 8, 23]}, + "faces": { + "north": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#1"} + } + }, + { + "from": [8, 0, 0], + "to": [9, 6, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [16, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#1"} + } + }, + { + "from": [9, 5, 15], + "to": [10, 6, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [17, 8, 23]}, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#1"} + } + }, + { + "from": [9, 5, 0], + "to": [10, 6, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [17, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#1"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/bath_tire.json b/src/main/resources/assets/decorative/models/item/bath_tire.json new file mode 100644 index 0000000..8d2c974 --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/bath_tire.json @@ -0,0 +1,106 @@ +{ + "credit": "made by Motschen", + "parent": "block/block", + "textures": { + "0": "minecraft:block/white_concrete" + }, + "elements": [ + { + "from": [-2, 0, 0], + "to": [2, 4, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [1, 0, 8]}, + "faces": { + "north": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "east": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "south": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "west": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "up": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "down": {"uv": [1, 1, 1, 1], "texture": "#0"} + } + }, + { + "from": [14, 0, 0], + "to": [18, 4, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [17, 0, 8]}, + "faces": { + "north": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "east": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "south": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "west": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "up": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "down": {"uv": [1, 1, 1, 1], "texture": "#0"} + } + }, + { + "from": [0, -0.01, -2], + "to": [16, 3.99, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [17, 0, 6]}, + "faces": { + "north": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "east": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "south": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "west": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "up": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "down": {"uv": [1, 1, 1, 1], "texture": "#0"} + } + }, + { + "from": [0, -0.01, 14], + "to": [16, 3.99, 18], + "rotation": {"angle": 0, "axis": "y", "origin": [17, 0, 22]}, + "faces": { + "north": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "east": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "south": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "west": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "up": {"uv": [1, 1, 1, 1], "texture": "#0"}, + "down": {"uv": [1, 1, 1, 1], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [50, 0, 0], + "translation": [0, 3.5, -1.25], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [50, 0, 0], + "translation": [0, 3.5, -1.25], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-3, -25, 0], + "translation": [-0.75, 5.75, -0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-3, -25, 0], + "translation": [-0.75, 5.75, -0.75], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [30, 45, 0], + "translation": [0, 2.75, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "translation": [0, -1, 0] + }, + "fixed": { + "rotation": [-90, 0, 0], + "translation": [0, 0, -5.5], + "scale": [0.75, 0.75, 0.75] + } + }, + "groups": [ + { + "name": "body", + "origin": [0, 0, 0], + "children": [0, 1, 2, 3] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/beach_ball.json b/src/main/resources/assets/decorative/models/item/beach_ball.json new file mode 100644 index 0000000..a6c5636 --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/beach_ball.json @@ -0,0 +1,108 @@ +{ + "credit": "made by Motschen", + "parent": "block/block", + "texture_size": [64, 64], + "textures": { + "0": "decorative:entity/beach_ball" + }, + "elements": [ + { + "from": [4, 0, 4], + "to": [12, 1, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "faces": { + "north": {"uv": [2, 7.5, 4, 7.75], "texture": "#0"}, + "east": {"uv": [0, 7.5, 2, 7.75], "texture": "#0"}, + "south": {"uv": [6, 7.5, 8, 7.75], "texture": "#0"}, + "west": {"uv": [4, 7.5, 6, 7.75], "texture": "#0"}, + "up": {"uv": [4, 7.5, 2, 5.5], "texture": "#0"}, + "down": {"uv": [6, 5.5, 4, 7.5], "texture": "#0"} + } + }, + { + "from": [4, 11, 4], + "to": [12, 12, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 11, 8]}, + "faces": { + "north": {"uv": [2, 7.5, 4, 7.75], "texture": "#0"}, + "east": {"uv": [0, 7.5, 2, 7.75], "texture": "#0"}, + "south": {"uv": [6, 7.5, 8, 7.75], "texture": "#0"}, + "west": {"uv": [4, 7.5, 6, 7.75], "texture": "#0"}, + "up": {"uv": [4, 7.5, 2, 5.5], "texture": "#0"}, + "down": {"uv": [6, 5.5, 4, 7.5], "texture": "#0"} + } + }, + { + "from": [13, 2, 4], + "to": [14, 10, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 11, 8]}, + "faces": { + "north": {"uv": [2, 14, 2.25, 16], "texture": "#0"}, + "east": {"uv": [0, 14, 2, 16], "texture": "#0"}, + "south": {"uv": [4.25, 14, 4.5, 16], "texture": "#0"}, + "west": {"uv": [2.25, 14, 4.25, 16], "texture": "#0"}, + "up": {"uv": [2.25, 14, 2, 12], "texture": "#0"}, + "down": {"uv": [2.5, 12, 2.25, 14], "texture": "#0"} + } + }, + { + "from": [2, 2, 4], + "to": [3, 10, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [-1, 11, 8]}, + "faces": { + "north": {"uv": [7, 14, 7.25, 16], "texture": "#0"}, + "east": {"uv": [5, 14, 7, 16], "texture": "#0"}, + "south": {"uv": [9.25, 14, 9.5, 16], "texture": "#0"}, + "west": {"uv": [7.25, 14, 9.25, 16], "texture": "#0"}, + "up": {"uv": [7.25, 14, 7, 12], "texture": "#0"}, + "down": {"uv": [7.5, 12, 7.25, 14], "texture": "#0"} + } + }, + { + "from": [4, 2, 2], + "to": [12, 10, 3], + "rotation": {"angle": 0, "axis": "y", "origin": [1, 11, 6]}, + "faces": { + "north": {"uv": [0.25, 8.5, 2.25, 10.5], "texture": "#0"}, + "east": {"uv": [0, 8.5, 0.25, 10.5], "texture": "#0"}, + "south": {"uv": [2.5, 8.5, 4.5, 10.5], "texture": "#0"}, + "west": {"uv": [2.25, 8.5, 2.5, 10.5], "texture": "#0"}, + "up": {"uv": [2.25, 8.5, 0.25, 8.25], "texture": "#0"}, + "down": {"uv": [4.25, 8.25, 2.25, 8.5], "texture": "#0"} + } + }, + { + "from": [4, 2, 13], + "to": [12, 10, 14], + "rotation": {"angle": 0, "axis": "y", "origin": [1, 11, 17]}, + "faces": { + "north": {"uv": [5.25, 8.5, 7.25, 10.5], "texture": "#0"}, + "east": {"uv": [5, 8.5, 5.25, 10.5], "texture": "#0"}, + "south": {"uv": [7.5, 8.5, 9.5, 10.5], "texture": "#0"}, + "west": {"uv": [7.25, 8.5, 7.5, 10.5], "texture": "#0"}, + "up": {"uv": [7.25, 8.5, 5.25, 8.25], "texture": "#0"}, + "down": {"uv": [9.25, 8.25, 7.25, 8.5], "texture": "#0"} + } + }, + { + "from": [3, 1, 3], + "to": [13, 11, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 1, 9]}, + "faces": { + "north": {"uv": [2.5, 2.5, 5, 5], "texture": "#0"}, + "east": {"uv": [0, 2.5, 2.5, 5], "texture": "#0"}, + "south": {"uv": [7.5, 2.5, 10, 5], "texture": "#0"}, + "west": {"uv": [5, 2.5, 7.5, 5], "texture": "#0"}, + "up": {"uv": [5, 2.5, 2.5, 0], "texture": "#0"}, + "down": {"uv": [7.5, 0, 5, 2.5], "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "body", + "origin": [0, 0, 0], + "children": [0, 1, 2, 3, 4, 5, 6] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/black_bath_tire.json b/src/main/resources/assets/decorative/models/item/black_bath_tire.json new file mode 100644 index 0000000..a4ca06e --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/black_bath_tire.json @@ -0,0 +1,6 @@ +{ + "parent": "decorative:item/bath_tire", + "textures": { + "0": "minecraft:block/black_concrete" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/blue_bath_tire.json b/src/main/resources/assets/decorative/models/item/blue_bath_tire.json new file mode 100644 index 0000000..1c7f727 --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/blue_bath_tire.json @@ -0,0 +1,6 @@ +{ + "parent": "decorative:item/bath_tire", + "textures": { + "0": "minecraft:block/blue_concrete" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/brown_bath_tire.json b/src/main/resources/assets/decorative/models/item/brown_bath_tire.json new file mode 100644 index 0000000..891b76c --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/brown_bath_tire.json @@ -0,0 +1,6 @@ +{ + "parent": "decorative:item/bath_tire", + "textures": { + "0": "minecraft:block/brown_concrete" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/cyan_bath_tire.json b/src/main/resources/assets/decorative/models/item/cyan_bath_tire.json new file mode 100644 index 0000000..1518003 --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/cyan_bath_tire.json @@ -0,0 +1,6 @@ +{ + "parent": "decorative:item/bath_tire", + "textures": { + "0": "minecraft:block/cyan_concrete" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/duck_bath_tire.json b/src/main/resources/assets/decorative/models/item/duck_bath_tire.json new file mode 100644 index 0000000..0c4dfe0 --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/duck_bath_tire.json @@ -0,0 +1,214 @@ +{ + "credit": "made by Motschen", + "parent": "block/block", + "textures": { + "0": "decorative:entity/duck_bath_tire" + }, + "elements": [ + { + "name": "body", + "from": [-2, 0, 0], + "to": [2, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "faces": { + "north": {"uv": [4, 6.25, 5, 7], "texture": "#0"}, + "east": {"uv": [0, 6.25, 4, 7], "texture": "#0"}, + "south": {"uv": [9, 6.25, 10, 7], "texture": "#0"}, + "west": {"uv": [5, 6.25, 9, 7], "texture": "#0"}, + "up": {"uv": [5, 6.25, 4, 2.25], "texture": "#0"}, + "down": {"uv": [6, 2.25, 5, 6.25], "texture": "#0"} + } + }, + { + "name": "body", + "from": [14, 0, 0], + "to": [18, 3, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "faces": { + "north": {"uv": [4, 13.25, 5, 14], "texture": "#0"}, + "east": {"uv": [0, 13.25, 4, 14], "texture": "#0"}, + "south": {"uv": [9, 13.25, 10, 14], "texture": "#0"}, + "west": {"uv": [5, 13.25, 9, 14], "texture": "#0"}, + "up": {"uv": [5, 13.25, 4, 9.25], "texture": "#0"}, + "down": {"uv": [6, 9.25, 5, 13.25], "texture": "#0"} + } + }, + { + "name": "body", + "from": [0, -0.01, -2], + "to": [16, 2.99, 2], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "faces": { + "north": {"uv": [1, 15.25, 5, 16], "texture": "#0"}, + "east": {"uv": [0, 15.25, 1, 16], "texture": "#0"}, + "south": {"uv": [6, 15.25, 10, 16], "texture": "#0"}, + "west": {"uv": [5, 15.25, 6, 16], "texture": "#0"}, + "up": {"uv": [5, 15.25, 1, 14.25], "texture": "#0"}, + "down": {"uv": [9, 14.25, 5, 15.25], "texture": "#0"} + } + }, + { + "name": "body", + "from": [0, -0.01, 14], + "to": [16, 2.99, 18], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 0, 8]}, + "faces": { + "north": {"uv": [1, 8.25, 5, 9], "texture": "#0"}, + "east": {"uv": [0, 8.25, 1, 9], "texture": "#0"}, + "south": {"uv": [6, 8.25, 10, 9], "texture": "#0"}, + "west": {"uv": [5, 8.25, 6, 9], "texture": "#0"}, + "up": {"uv": [5, 8.25, 1, 7.25], "texture": "#0"}, + "down": {"uv": [9, 7.25, 5, 8.25], "texture": "#0"} + } + }, + { + "from": [6, 3, -2], + "to": [10, 8, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 2, -1]}, + "faces": { + "north": {"uv": [13.25, 0.75, 14.25, 2], "texture": "#0"}, + "east": {"uv": [12.5, 0.75, 13.25, 2], "texture": "#0"}, + "south": {"uv": [15, 0.75, 16, 2], "texture": "#0"}, + "west": {"uv": [14.25, 0.75, 15, 2], "texture": "#0"}, + "up": {"uv": [14.25, 0.75, 13.25, 0], "texture": "#0"}, + "down": {"uv": [15.25, 0, 14.25, 0.75], "texture": "#0"} + } + }, + { + "from": [4.999, 5, -4], + "to": [10.999, 10, -1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3, -3]}, + "faces": { + "north": {"uv": [12.25, 3.5, 13.75, 4.75], "texture": "#0"}, + "east": {"uv": [11.5, 3.5, 12.25, 4.75], "texture": "#0"}, + "south": {"uv": [14.5, 3.5, 16, 4.75], "texture": "#0"}, + "west": {"uv": [13.75, 3.5, 14.5, 4.75], "texture": "#0"}, + "up": {"uv": [13.75, 3.5, 12.25, 2.75], "texture": "#0"}, + "down": {"uv": [15.25, 2.75, 13.75, 3.5], "texture": "#0"} + } + }, + { + "from": [5.499, 9.5, -4.001], + "to": [10.499, 10.5, -1.001], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -3]}, + "faces": { + "north": {"uv": [4.5, 8.5, 5.75, 8.75], "texture": "#0"}, + "east": {"uv": [3.75, 8.5, 4.5, 8.75], "texture": "#0"}, + "south": {"uv": [6.5, 8.5, 7.75, 8.75], "texture": "#0"}, + "west": {"uv": [5.75, 8.5, 6.5, 8.75], "texture": "#0"}, + "up": {"uv": [5.75, 8.5, 4.5, 7.75], "texture": "#0"}, + "down": {"uv": [7, 7.75, 5.75, 8.5], "texture": "#0"} + } + }, + { + "from": [6.999, 6, -5], + "to": [8.999, 8, -4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 3, -6]}, + "faces": { + "north": {"uv": [14.75, 5.25, 15.25, 5.75], "texture": "#0"}, + "east": {"uv": [14.5, 5.25, 14.75, 5.75], "texture": "#0"}, + "south": {"uv": [15.5, 5.25, 16, 5.75], "texture": "#0"}, + "west": {"uv": [15.25, 5.25, 15.5, 5.75], "texture": "#0"}, + "up": {"uv": [15.25, 5.25, 14.75, 5], "texture": "#0"}, + "down": {"uv": [15.75, 5, 15.25, 5.25], "texture": "#0"} + } + }, + { + "from": [8.999, 6, -5], + "to": [9.999, 7, -4], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 3, -6]}, + "faces": { + "north": {"uv": [14.75, 5.25, 15, 5.5], "texture": "#0"}, + "east": {"uv": [14.5, 5.25, 14.75, 5.5], "texture": "#0"}, + "south": {"uv": [15.25, 5.25, 15.5, 5.5], "texture": "#0"}, + "west": {"uv": [15, 5.25, 15.25, 5.5], "texture": "#0"}, + "up": {"uv": [15, 5.25, 14.75, 5], "texture": "#0"}, + "down": {"uv": [15.25, 5, 15, 5.25], "texture": "#0"} + } + }, + { + "from": [8.999, 9, -4.5], + "to": [9.999, 10, -3.5], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, -6]}, + "faces": { + "north": {"uv": [13.5, 5.5, 13.75, 5.75], "texture": "#0"}, + "east": {"uv": [13.25, 5.5, 13.5, 5.75], "texture": "#0"}, + "south": {"uv": [14, 5.5, 14.25, 5.75], "texture": "#0"}, + "west": {"uv": [13.75, 5.5, 14, 5.75], "texture": "#0"}, + "up": {"uv": [13.75, 5.5, 13.5, 5.25], "texture": "#0"}, + "down": {"uv": [14, 5.25, 13.75, 5.5], "texture": "#0"} + } + }, + { + "from": [5.999, 9, -4.5], + "to": [6.999, 10, -3.5], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 6, -6]}, + "faces": { + "north": {"uv": [13.5, 5.5, 13.75, 5.75], "texture": "#0"}, + "east": {"uv": [13.25, 5.5, 13.5, 5.75], "texture": "#0"}, + "south": {"uv": [14, 5.5, 14.25, 5.75], "texture": "#0"}, + "west": {"uv": [13.75, 5.5, 14, 5.75], "texture": "#0"}, + "up": {"uv": [13.75, 5.5, 13.5, 5.25], "texture": "#0"}, + "down": {"uv": [14, 5.25, 13.75, 5.5], "texture": "#0"} + } + }, + { + "from": [5.999, 6, -5], + "to": [6.999, 7, -4], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 3, -6]}, + "faces": { + "north": {"uv": [14.75, 5.25, 15, 5.5], "texture": "#0"}, + "east": {"uv": [14.5, 5.25, 14.75, 5.5], "texture": "#0"}, + "south": {"uv": [15.25, 5.25, 15.5, 5.5], "texture": "#0"}, + "west": {"uv": [15, 5.25, 15.25, 5.5], "texture": "#0"}, + "up": {"uv": [15, 5.25, 14.75, 5], "texture": "#0"}, + "down": {"uv": [15.25, 5, 15, 5.25], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [50, 0, 0], + "translation": [0, 3.5, -1.25], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [50, 0, 0], + "translation": [0, 3.5, -1.25], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [-3, -25, 0], + "translation": [-0.75, 5.75, -0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [-3, -25, 0], + "translation": [-0.75, 5.75, -0.75], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [30, 135, 0], + "translation": [0, 2.75, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "translation": [0, -1, 0] + }, + "fixed": { + "rotation": [-90, 0, 0], + "translation": [0, 0, -5.5], + "scale": [0.75, 0.75, 0.75] + } + }, + "groups": [ + { + "name": "body", + "origin": [0, 0, 0], + "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/gray_bath_tire.json b/src/main/resources/assets/decorative/models/item/gray_bath_tire.json new file mode 100644 index 0000000..c015a55 --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/gray_bath_tire.json @@ -0,0 +1,6 @@ +{ + "parent": "decorative:item/bath_tire", + "textures": { + "0": "minecraft:block/gray_concrete" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/green_bath_tire.json b/src/main/resources/assets/decorative/models/item/green_bath_tire.json new file mode 100644 index 0000000..7512c93 --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/green_bath_tire.json @@ -0,0 +1,6 @@ +{ + "parent": "decorative:item/bath_tire", + "textures": { + "0": "minecraft:block/green_concrete" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/light_blue_bath_tire.json b/src/main/resources/assets/decorative/models/item/light_blue_bath_tire.json new file mode 100644 index 0000000..b05a352 --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/light_blue_bath_tire.json @@ -0,0 +1,6 @@ +{ + "parent": "decorative:item/bath_tire", + "textures": { + "0": "minecraft:block/light_blue_concrete" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/light_gray_bath_tire.json b/src/main/resources/assets/decorative/models/item/light_gray_bath_tire.json new file mode 100644 index 0000000..4a6cb74 --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/light_gray_bath_tire.json @@ -0,0 +1,6 @@ +{ + "parent": "decorative:item/bath_tire", + "textures": { + "0": "minecraft:block/light_gray_concrete" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/lime_bath_tire.json b/src/main/resources/assets/decorative/models/item/lime_bath_tire.json new file mode 100644 index 0000000..9d78d97 --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/lime_bath_tire.json @@ -0,0 +1,6 @@ +{ + "parent": "decorative:item/bath_tire", + "textures": { + "0": "minecraft:block/lime_concrete" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/magenta_bath_tire.json b/src/main/resources/assets/decorative/models/item/magenta_bath_tire.json new file mode 100644 index 0000000..71025df --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/magenta_bath_tire.json @@ -0,0 +1,6 @@ +{ + "parent": "decorative:item/bath_tire", + "textures": { + "0": "minecraft:block/magenta_concrete" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/orange_bath_tire.json b/src/main/resources/assets/decorative/models/item/orange_bath_tire.json new file mode 100644 index 0000000..e140334 --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/orange_bath_tire.json @@ -0,0 +1,6 @@ +{ + "parent": "decorative:item/bath_tire", + "textures": { + "0": "minecraft:block/orange_concrete" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/pink_bath_tire.json b/src/main/resources/assets/decorative/models/item/pink_bath_tire.json new file mode 100644 index 0000000..b1ad184 --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/pink_bath_tire.json @@ -0,0 +1,6 @@ +{ + "parent": "decorative:item/bath_tire", + "textures": { + "0": "minecraft:block/pink_concrete" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/pool_sprinkler.json b/src/main/resources/assets/decorative/models/item/pool_sprinkler.json new file mode 100644 index 0000000..297adae --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/pool_sprinkler.json @@ -0,0 +1,3 @@ +{ + "parent": "decorative:block/pool_sprinkler" +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/pool_wall.json b/src/main/resources/assets/decorative/models/item/pool_wall.json new file mode 100644 index 0000000..58f0740 --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/pool_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "decorative:block/pool_wall_corner" +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/purple_bath_tire.json b/src/main/resources/assets/decorative/models/item/purple_bath_tire.json new file mode 100644 index 0000000..bcb2e08 --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/purple_bath_tire.json @@ -0,0 +1,6 @@ +{ + "parent": "decorative:item/bath_tire", + "textures": { + "0": "minecraft:block/purple_concrete" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/red_bath_tire.json b/src/main/resources/assets/decorative/models/item/red_bath_tire.json new file mode 100644 index 0000000..6588392 --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/red_bath_tire.json @@ -0,0 +1,6 @@ +{ + "parent": "decorative:item/bath_tire", + "textures": { + "0": "minecraft:block/red_concrete" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/shower_head.json b/src/main/resources/assets/decorative/models/item/shower_head.json new file mode 100644 index 0000000..cafb25f --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/shower_head.json @@ -0,0 +1,3 @@ +{ + "parent": "decorative:block/shower_head" +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/springboard.json b/src/main/resources/assets/decorative/models/item/springboard.json new file mode 100644 index 0000000..cb8f04b --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/springboard.json @@ -0,0 +1,310 @@ +{ + "credit": "made by Motschen", + "textures": { + "0": "block/white_concrete", + "1": "block/iron_block", + "particle": "block/white_concrete", + "2_0": "block/white_concrete", + "2_1": "block/iron_block" + }, + "elements": [ + { + "from": [0, 2, 1], + "to": [12, 3, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 10, 9]}, + "faces": { + "north": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 14, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 12, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 12, 14], "texture": "#0"}, + "down": {"uv": [0, 0, 12, 14], "texture": "#0"} + } + }, + { + "from": [5, 1, 1], + "to": [14, 2, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 9, 9]}, + "faces": { + "north": {"uv": [0, 0, 9, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 14, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 9, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 14, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 9, 14], "texture": "#0"}, + "down": {"uv": [0, 0, 9, 14], "texture": "#0"} + } + }, + { + "from": [7, 0, 1], + "to": [16, 1, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [12, 8, 9]}, + "faces": { + "north": {"uv": [0, 0, 9, 1], "texture": "#0"}, + "east": {"uv": [0, 0, 14, 1], "texture": "#0"}, + "south": {"uv": [0, 0, 9, 1], "texture": "#0"}, + "west": {"uv": [0, 0, 14, 1], "texture": "#0"}, + "up": {"uv": [0, 0, 9, 14], "texture": "#0"}, + "down": {"uv": [0, 0, 9, 14], "texture": "#0"} + } + }, + { + "from": [0, 0, 0], + "to": [15, 1, 1], + "faces": { + "north": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 15, 1], "texture": "#1"} + } + }, + { + "from": [0, 0, 15], + "to": [15, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 23]}, + "faces": { + "north": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 15, 1], "texture": "#1"} + } + }, + { + "from": [0, 6, 0], + "to": [15, 7, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, 8]}, + "faces": { + "north": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 15, 1], "texture": "#1"} + } + }, + { + "from": [0, 6, 15], + "to": [15, 7, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 14, 23]}, + "faces": { + "north": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 15, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 15, 1], "texture": "#1"} + } + }, + { + "from": [15, 0, 0], + "to": [16, 6, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [23, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#1"} + } + }, + { + "from": [15, 0, 15], + "to": [16, 6, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [23, 8, 23]}, + "faces": { + "north": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 6], "texture": "#1"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#1"} + } + }, + { + "from": [14, 5, 15], + "to": [15, 6, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [22, 8, 23]}, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#1"} + } + }, + { + "from": [14, 5, 0], + "to": [15, 6, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [22, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#1"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#1"} + } + }, + { + "from": [-16, 2, 1], + "to": [0, 3, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [-8, 10, 9]}, + "faces": { + "north": {"uv": [0, 0, 16, 1], "texture": "#2_0"}, + "south": {"uv": [0, 0, 16, 1], "texture": "#2_0"}, + "west": {"uv": [0, 0, 14, 1], "texture": "#2_0"}, + "up": {"uv": [0, 0, 16, 14], "texture": "#2_0"}, + "down": {"uv": [0, 0, 16, 14], "texture": "#2_0"} + } + }, + { + "from": [-7, 0, 15], + "to": [0, 1, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [-7, 8, 23]}, + "faces": { + "north": {"uv": [0, 0, 7, 1], "texture": "#2_1"}, + "south": {"uv": [0, 0, 7, 1], "texture": "#2_1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#2_1"}, + "up": {"uv": [0, 0, 7, 1], "texture": "#2_1"}, + "down": {"uv": [0, 0, 7, 1], "texture": "#2_1"} + } + }, + { + "from": [-7, 0, 0], + "to": [0, 1, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [-7, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 7, 1], "texture": "#2_1"}, + "south": {"uv": [0, 0, 7, 1], "texture": "#2_1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#2_1"}, + "up": {"uv": [0, 0, 7, 1], "texture": "#2_1"}, + "down": {"uv": [0, 0, 7, 1], "texture": "#2_1"} + } + }, + { + "from": [-7, 6, 15], + "to": [0, 7, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [-7, 14, 23]}, + "faces": { + "north": {"uv": [0, 0, 7, 1], "texture": "#2_1"}, + "south": {"uv": [0, 0, 7, 1], "texture": "#2_1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#2_1"}, + "up": {"uv": [0, 0, 7, 1], "texture": "#2_1"}, + "down": {"uv": [0, 0, 7, 1], "texture": "#2_1"} + } + }, + { + "from": [-7, 6, 0], + "to": [0, 7, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [-7, 14, 8]}, + "faces": { + "north": {"uv": [0, 0, 7, 1], "texture": "#2_1"}, + "south": {"uv": [0, 0, 7, 1], "texture": "#2_1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#2_1"}, + "up": {"uv": [0, 0, 7, 1], "texture": "#2_1"}, + "down": {"uv": [0, 0, 7, 1], "texture": "#2_1"} + } + }, + { + "from": [-8, 0, 15], + "to": [-7, 6, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 23]}, + "faces": { + "north": {"uv": [0, 0, 1, 6], "texture": "#2_1"}, + "east": {"uv": [0, 0, 1, 6], "texture": "#2_1"}, + "south": {"uv": [0, 0, 1, 6], "texture": "#2_1"}, + "west": {"uv": [0, 0, 1, 6], "texture": "#2_1"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#2_1"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#2_1"} + } + }, + { + "from": [-8, 0, 0], + "to": [-7, 6, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 6], "texture": "#2_1"}, + "east": {"uv": [0, 0, 1, 6], "texture": "#2_1"}, + "south": {"uv": [0, 0, 1, 6], "texture": "#2_1"}, + "west": {"uv": [0, 0, 1, 6], "texture": "#2_1"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#2_1"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#2_1"} + } + }, + { + "from": [-7, 5, 15], + "to": [-6, 6, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [1, 8, 23]}, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#2_1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#2_1"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#2_1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#2_1"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#2_1"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#2_1"} + } + }, + { + "from": [-7, 5, 0], + "to": [-6, 6, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [1, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 1, 1], "texture": "#2_1"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#2_1"}, + "south": {"uv": [0, 0, 1, 1], "texture": "#2_1"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#2_1"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#2_1"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#2_1"} + } + } + ], + "display": { + "thirdperson_righthand": { + "translation": [1.5, 0, -4], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "translation": [-2.5, 0, -4], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [4, -89, 0], + "translation": [1.75, 4.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [4, 89, 0], + "translation": [1.75, 4.5, 0.75], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [25, 45, 0], + "translation": [2.5, 2.5, 0], + "scale": [0.45, 0.45, 0.45] + }, + "head": { + "rotation": [0, -90, 0], + "translation": [0, 10.25, 2], + "scale": [0.5, 0.5, 0.5] + }, + "fixed": { + "translation": [4, 0, -4], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "springboard_back", + "origin": [8, 8, 8], + "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] + }, + { + "name": "springboard_front", + "origin": [8, 8, 8], + "children": [11, 12, 13, 14, 15, 16, 17, 18, 19] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/white_bath_tire.json b/src/main/resources/assets/decorative/models/item/white_bath_tire.json new file mode 100644 index 0000000..a284a0b --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/white_bath_tire.json @@ -0,0 +1,6 @@ +{ + "parent": "decorative:item/bath_tire", + "textures": { + "0": "minecraft:block/white_concrete" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/models/item/yellow_bath_tire.json b/src/main/resources/assets/decorative/models/item/yellow_bath_tire.json new file mode 100644 index 0000000..dc7ce26 --- /dev/null +++ b/src/main/resources/assets/decorative/models/item/yellow_bath_tire.json @@ -0,0 +1,6 @@ +{ + "parent": "decorative:item/bath_tire", + "textures": { + "0": "minecraft:block/yellow_concrete" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/decorative/textures/block/ceilingfan.png b/src/main/resources/assets/decorative/textures/block/ceilingfan.png index ff306ee..ae0cfb5 100644 Binary files a/src/main/resources/assets/decorative/textures/block/ceilingfan.png and b/src/main/resources/assets/decorative/textures/block/ceilingfan.png differ diff --git a/src/main/resources/assets/decorative/textures/block/road_white_long.png b/src/main/resources/assets/decorative/textures/block/road_white_long.png index 909a4a6..87ce661 100644 Binary files a/src/main/resources/assets/decorative/textures/block/road_white_long.png and b/src/main/resources/assets/decorative/textures/block/road_white_long.png differ diff --git a/src/main/resources/assets/decorative/textures/block/road_white_short.png b/src/main/resources/assets/decorative/textures/block/road_white_short.png index 8a0b5fe..4c58046 100644 Binary files a/src/main/resources/assets/decorative/textures/block/road_white_short.png and b/src/main/resources/assets/decorative/textures/block/road_white_short.png differ diff --git a/src/main/resources/assets/decorative/textures/block/shower_head.png b/src/main/resources/assets/decorative/textures/block/shower_head.png new file mode 100644 index 0000000..c9246b1 Binary files /dev/null and b/src/main/resources/assets/decorative/textures/block/shower_head.png differ diff --git a/src/main/resources/assets/decorative/textures/entity/beach_ball.png b/src/main/resources/assets/decorative/textures/entity/beach_ball.png new file mode 100644 index 0000000..bf9568e Binary files /dev/null and b/src/main/resources/assets/decorative/textures/entity/beach_ball.png differ diff --git a/src/main/resources/assets/decorative/textures/entity/duck_bath_tire.png b/src/main/resources/assets/decorative/textures/entity/duck_bath_tire.png new file mode 100644 index 0000000..311e54b Binary files /dev/null and b/src/main/resources/assets/decorative/textures/entity/duck_bath_tire.png differ diff --git a/src/main/resources/data/decorative/loot_tables/blocks/pool_sprinkler.json b/src/main/resources/data/decorative/loot_tables/blocks/pool_sprinkler.json new file mode 100644 index 0000000..a988697 --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/blocks/pool_sprinkler.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "decorative:pool_sprinkler" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/blocks/pool_wall.json b/src/main/resources/data/decorative/loot_tables/blocks/pool_wall.json new file mode 100644 index 0000000..d02eaff --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/blocks/pool_wall.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "decorative:pool_wall" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/blocks/shower_head.json b/src/main/resources/data/decorative/loot_tables/blocks/shower_head.json new file mode 100644 index 0000000..b34e863 --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/blocks/shower_head.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "decorative:shower_head" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/blocks/springboard.json b/src/main/resources/data/decorative/loot_tables/blocks/springboard.json new file mode 100644 index 0000000..79cd28d --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/blocks/springboard.json @@ -0,0 +1,28 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:block_state_property", + "block": "decorative:springboard", + "properties": { + "part": "back" + } + } + ], + "name": "decorative:springboard" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/black_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/black_bath_tire.json new file mode 100644 index 0000000..66d3f0d --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/black_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:white_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/blue_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/blue_bath_tire.json new file mode 100644 index 0000000..66d3f0d --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/blue_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:white_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/brown_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/brown_bath_tire.json new file mode 100644 index 0000000..66d3f0d --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/brown_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:white_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/cyan_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/cyan_bath_tire.json new file mode 100644 index 0000000..3a149d1 --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/cyan_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:cyan_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/duck_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/duck_bath_tire.json new file mode 100644 index 0000000..f1a5ba3 --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/duck_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:duck_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/gray_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/gray_bath_tire.json new file mode 100644 index 0000000..9c91c25 --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/gray_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:gray_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/green_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/green_bath_tire.json new file mode 100644 index 0000000..5bcefa7 --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/green_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:green_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/light_blue_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/light_blue_bath_tire.json new file mode 100644 index 0000000..f8a0b66 --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/light_blue_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:light_blue_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/light_gray_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/light_gray_bath_tire.json new file mode 100644 index 0000000..943666c --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/light_gray_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:light_gray_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/lime_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/lime_bath_tire.json new file mode 100644 index 0000000..e5df36c --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/lime_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:lime_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/magenta_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/magenta_bath_tire.json new file mode 100644 index 0000000..31a40e0 --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/magenta_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:magenta_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/orange_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/orange_bath_tire.json new file mode 100644 index 0000000..00f59ca --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/orange_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:orange_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/pink_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/pink_bath_tire.json new file mode 100644 index 0000000..8a0fd74 --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/pink_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:pink_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/purple_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/purple_bath_tire.json new file mode 100644 index 0000000..e0f766e --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/purple_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:purple_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/red_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/red_bath_tire.json new file mode 100644 index 0000000..fb2fa17 --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/red_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:red_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/white_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/white_bath_tire.json new file mode 100644 index 0000000..66d3f0d --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/white_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:white_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/loot_tables/entities/yellow_bath_tire.json b/src/main/resources/data/decorative/loot_tables/entities/yellow_bath_tire.json new file mode 100644 index 0000000..96f374c --- /dev/null +++ b/src/main/resources/data/decorative/loot_tables/entities/yellow_bath_tire.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 0.0, + "max": 1.0, + "type": "minecraft:uniform" + } + } + ], + "name": "decorative:yellow_bath_tire" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/categories/pool.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/categories/pool.json new file mode 100644 index 0000000..ea35c76 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/categories/pool.json @@ -0,0 +1,5 @@ +{ + "name": "Pool", + "description": "Alles für deinen Pool!", + "icon": "decorative:beach_ball" +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/beach_ball.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/beach_ball.json new file mode 100644 index 0000000..17dd50f --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/beach_ball.json @@ -0,0 +1,18 @@ +{ + "name": "Beach Ball", + "icon": "decorative:beach_ball", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:beach_ball", + "title": "Beach Ball", + "link_recipe": false, + "text": "Ein Ball für's Wasser oder den Strand." + }, + { + "type": "crafting", + "recipe": "decorative:beach_ball" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/black_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/black_bath_tire.json new file mode 100644 index 0000000..b0567ed --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/black_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Schwarzer Schwimmreifen", + "icon": "decorative:black_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:black_bath_tire", + "title": "Schwarzer Schwimmreifen", + "link_recipe": false, + "text": "Ein schöner Reifen für deinen Pool." + }, + { + "type": "crafting", + "recipe": "decorative:black_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/blue_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/blue_bath_tire.json new file mode 100644 index 0000000..21af960 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/blue_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Blauer Schwimmreifen", + "icon": "decorative:blue_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:blue_bath_tire", + "title": "Blauer Schwimmreifen", + "link_recipe": false, + "text": "Ein schöner Reifen für deinen Pool." + }, + { + "type": "crafting", + "recipe": "decorative:blue_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/brown_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/brown_bath_tire.json new file mode 100644 index 0000000..8b7f41e --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/brown_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Brauner Schwimmreifen", + "icon": "decorative:brown_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:brown_bath_tire", + "title": "Brauner Schwimmreifen", + "link_recipe": false, + "text": "Ein schöner Reifen für deinen Pool." + }, + { + "type": "crafting", + "recipe": "decorative:brown_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/cyan_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/cyan_bath_tire.json new file mode 100644 index 0000000..1f480f5 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/cyan_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Cyanener Schwimmreifen", + "icon": "decorative:cyan_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:cyan_bath_tire", + "title": "Cyanener Schwimmreifen", + "link_recipe": false, + "text": "Ein schöner Reifen für deinen Pool." + }, + { + "type": "crafting", + "recipe": "decorative:cyan_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/duck_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/duck_bath_tire.json new file mode 100644 index 0000000..5ef451c --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/duck_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Enten-Schwimmreifen", + "icon": "decorative:duck_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:duck_bath_tire", + "title": "Enten-Schwimmreifen", + "link_recipe": false, + "text": "Ein schönes Spielzeug für kleine Kinder." + }, + { + "type": "crafting", + "recipe": "decorative:duck_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/gray_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/gray_bath_tire.json new file mode 100644 index 0000000..060e5fa --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/gray_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Grauer Schwimmreifen", + "icon": "decorative:gray_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:gray_bath_tire", + "title": "Grauer Schwimmreifen", + "link_recipe": false, + "text": "Ein schöner Reifen für deinen Pool." + }, + { + "type": "crafting", + "recipe": "decorative:gray_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/green_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/green_bath_tire.json new file mode 100644 index 0000000..82f6290 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/green_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Grüner Schwimmreifen", + "icon": "decorative:green_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:green_bath_tire", + "title": "Grüner Schwimmreifen", + "link_recipe": false, + "text": "Ein schöner Reifen für deinen Pool." + }, + { + "type": "crafting", + "recipe": "decorative:green_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/light_blue_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/light_blue_bath_tire.json new file mode 100644 index 0000000..fbeb560 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/light_blue_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Hellblauer Schwimmreifen", + "icon": "decorative:light_blue_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:light_blue_bath_tire", + "title": "Hellblauer Schwimmreifen", + "link_recipe": false, + "text": "Ein schöner Reifen für deinen Pool." + }, + { + "type": "crafting", + "recipe": "decorative:light_blue_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/light_gray_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/light_gray_bath_tire.json new file mode 100644 index 0000000..3a5e7a7 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/light_gray_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Hellgrauer Schwimmreifen", + "icon": "decorative:light_gray_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:light_gray_bath_tire", + "title": "Hellgrauer Schwimmreifen", + "link_recipe": false, + "text": "Ein schöner Reifen für deinen Pool." + }, + { + "type": "crafting", + "recipe": "decorative:light_gray_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/lime_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/lime_bath_tire.json new file mode 100644 index 0000000..d73d47e --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/lime_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Hellgrüner Schwimmreifen", + "icon": "decorative:lime_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:lime_bath_tire", + "title": "Hellgrüner Schwimmreifen", + "link_recipe": false, + "text": "Ein schöner Reifen für deinen Pool." + }, + { + "type": "crafting", + "recipe": "decorative:lime_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/magenta_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/magenta_bath_tire.json new file mode 100644 index 0000000..660abc4 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/magenta_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Magenta Schwimmreifen", + "icon": "decorative:magenta_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:magenta_bath_tire", + "title": "Magenta Schwimmreifen", + "link_recipe": false, + "text": "Ein schöner Reifen für deinen Pool." + }, + { + "type": "crafting", + "recipe": "decorative:magenta_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/orange_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/orange_bath_tire.json new file mode 100644 index 0000000..fedd676 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/orange_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Orangener Schwimmreifen", + "icon": "decorative:orange_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:orange_bath_tire", + "title": "Orangener Schwimmreifen", + "link_recipe": false, + "text": "Ein schöner Reifen für deinen Pool." + }, + { + "type": "crafting", + "recipe": "decorative:orange_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/pink_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/pink_bath_tire.json new file mode 100644 index 0000000..deefeab --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/pink_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Pinker Schwimmreifen", + "icon": "decorative:pink_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:pink_bath_tire", + "title": "Pinker Schwimmreifen", + "link_recipe": false, + "text": "Ein schöner Reifen für deinen Pool." + }, + { + "type": "crafting", + "recipe": "decorative:pink_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/pool_sprinkler.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/pool_sprinkler.json new file mode 100644 index 0000000..ef9c64b --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/pool_sprinkler.json @@ -0,0 +1,18 @@ +{ + "name": "Wasserspeier", + "icon": "decorative:pool_sprinkler", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:pool_sprinkler", + "title": "Wasserspeier", + "link_recipe": false, + "text": "Das, was es in jedem Bad gibt." + }, + { + "type": "crafting", + "recipe": "decorative:pool_sprinkler" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/pool_wall.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/pool_wall.json new file mode 100644 index 0000000..9863189 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/pool_wall.json @@ -0,0 +1,18 @@ +{ + "name": "Poolwand", + "icon": "decorative:pool_wall", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:pool_wall", + "title": "Poolwand", + "link_recipe": false, + "text": "Kann genutzt werden, um schön aussehende Pools zu bauen." + }, + { + "type": "crafting", + "recipe": "decorative:pool_wall" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/purple_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/purple_bath_tire.json new file mode 100644 index 0000000..b9095f0 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/purple_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Lila Schwimmreifen", + "icon": "decorative:purple_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:purple_bath_tire", + "title": "Lila Schwimmreifen", + "link_recipe": false, + "text": "Ein schöner Reifen für deinen Pool." + }, + { + "type": "crafting", + "recipe": "decorative:purple_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/red_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/red_bath_tire.json new file mode 100644 index 0000000..fae57de --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/red_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Roter Schwimmreifen", + "icon": "decorative:red_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:red_bath_tire", + "title": "Roter Schwimmreifen", + "link_recipe": false, + "text": "Ein schöner Reifen für deinen Pool." + }, + { + "type": "crafting", + "recipe": "decorative:red_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/shower_head.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/shower_head.json new file mode 100644 index 0000000..66ef038 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/shower_head.json @@ -0,0 +1,18 @@ +{ + "name": "Duschkopf", + "icon": "decorative:shower_head", + "category": "decorative:indoor", + "pages": [ + { + "type": "spotlight", + "item": "decorative:shower_head", + "title": "Duschkopf", + "link_recipe": false, + "text": "Jeder braucht manchmal eine Dusche." + }, + { + "type": "crafting", + "recipe": "decorative:shower_head" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/springboard.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/springboard.json new file mode 100644 index 0000000..c301ba3 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/springboard.json @@ -0,0 +1,18 @@ +{ + "name": "Sprungbrett", + "icon": "decorative:springboard", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:springboard", + "title": "Sprungbrett", + "link_recipe": false, + "text": "Wenn du es vorne rechtsklickst, wirst du weit in die Luft geworfen!" + }, + { + "type": "crafting", + "recipe": "decorative:springboard" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/white_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/white_bath_tire.json new file mode 100644 index 0000000..21d97d4 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/white_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Weißer Schwimmreifen", + "icon": "decorative:white_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:white_bath_tire", + "title": "Weißer Schwimmreifen", + "link_recipe": false, + "text": "Ein schöner Reifen für deinen Pool." + }, + { + "type": "crafting", + "recipe": "decorative:white_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/yellow_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/yellow_bath_tire.json new file mode 100644 index 0000000..a2342b3 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/de_de/entries/decoration_guide/yellow_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Gelber Schwimmreifen", + "icon": "decorative:yellow_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:yellow_bath_tire", + "title": "Gelber Schwimmreifen", + "link_recipe": false, + "text": "Ein schöner Reifen für deinen Pool." + }, + { + "type": "crafting", + "recipe": "decorative:yellow_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/categories/pool.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/categories/pool.json new file mode 100644 index 0000000..3626dc2 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/categories/pool.json @@ -0,0 +1,5 @@ +{ + "name": "Pool", + "description": "Everything for your pool", + "icon": "decorative:beach_ball" +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/beach_ball.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/beach_ball.json new file mode 100644 index 0000000..39650c4 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/beach_ball.json @@ -0,0 +1,18 @@ +{ + "name": "Beach Ball", + "icon": "decorative:beach_ball", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:beach_ball", + "title": "Beach Ball", + "link_recipe": false, + "text": "Best used in water." + }, + { + "type": "crafting", + "recipe": "decorative:beach_ball" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/black_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/black_bath_tire.json new file mode 100644 index 0000000..df4c74c --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/black_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Black Bath Tire", + "icon": "decorative:black_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:black_bath_tire", + "title": "Black Bath Tire", + "link_recipe": false, + "text": "A nice toy for summer days." + }, + { + "type": "crafting", + "recipe": "decorative:black_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/blue_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/blue_bath_tire.json new file mode 100644 index 0000000..4172c17 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/blue_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Blue Bath Tire", + "icon": "decorative:blue_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:blue_bath_tire", + "title": "Blue Bath Tire", + "link_recipe": false, + "text": "A nice toy for summer days." + }, + { + "type": "crafting", + "recipe": "decorative:blue_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/brown_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/brown_bath_tire.json new file mode 100644 index 0000000..bad581b --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/brown_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Brown Bath Tire", + "icon": "decorative:brown_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:brown_bath_tire", + "title": "Brown Bath Tire", + "link_recipe": false, + "text": "A nice toy for summer days." + }, + { + "type": "crafting", + "recipe": "decorative:brown_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/cyan_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/cyan_bath_tire.json new file mode 100644 index 0000000..eacea2c --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/cyan_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Cyan Bath Tire", + "icon": "decorative:cyan_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:cyan_bath_tire", + "title": "Cyan Bath Tire", + "link_recipe": false, + "text": "A nice toy for summer days." + }, + { + "type": "crafting", + "recipe": "decorative:cyan_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/duck_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/duck_bath_tire.json new file mode 100644 index 0000000..f064c16 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/duck_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Duck Bath Tire", + "icon": "decorative:duck_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:duck_bath_tire", + "title": "Duck Bath Tire", + "link_recipe": false, + "text": "A nice toy for little children." + }, + { + "type": "crafting", + "recipe": "decorative:duck_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/gray_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/gray_bath_tire.json new file mode 100644 index 0000000..f3b0814 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/gray_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Gray Bath Tire", + "icon": "decorative:gray_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:gray_bath_tire", + "title": "Gray Bath Tire", + "link_recipe": false, + "text": "A nice toy for summer days." + }, + { + "type": "crafting", + "recipe": "decorative:gray_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/green_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/green_bath_tire.json new file mode 100644 index 0000000..aff8ec3 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/green_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Green Bath Tire", + "icon": "decorative:green_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:green_bath_tire", + "title": "Green Bath Tire", + "link_recipe": false, + "text": "A nice toy for summer days." + }, + { + "type": "crafting", + "recipe": "decorative:green_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/light_blue_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/light_blue_bath_tire.json new file mode 100644 index 0000000..8c687cc --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/light_blue_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Light Blue Bath Tire", + "icon": "decorative:light_blue_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:light_blue_bath_tire", + "title": "Light Blue Bath Tire", + "link_recipe": false, + "text": "A nice toy for summer days." + }, + { + "type": "crafting", + "recipe": "decorative:light_blue_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/light_gray_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/light_gray_bath_tire.json new file mode 100644 index 0000000..ed9be3b --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/light_gray_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Light Gray Bath Tire", + "icon": "decorative:light_gray_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:light_gray_bath_tire", + "title": "Light Gray Bath Tire", + "link_recipe": false, + "text": "A nice toy for summer days." + }, + { + "type": "crafting", + "recipe": "decorative:light_gray_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/lime_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/lime_bath_tire.json new file mode 100644 index 0000000..1baf7f5 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/lime_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Lime Bath Tire", + "icon": "decorative:lime_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:lime_bath_tire", + "title": "Lime Bath Tire", + "link_recipe": false, + "text": "A nice toy for summer days." + }, + { + "type": "crafting", + "recipe": "decorative:lime_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/magenta_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/magenta_bath_tire.json new file mode 100644 index 0000000..dcbfca0 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/magenta_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Magenta Bath Tire", + "icon": "decorative:magenta_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:magenta_bath_tire", + "title": "Magenta Bath Tire", + "link_recipe": false, + "text": "A nice toy for summer days." + }, + { + "type": "crafting", + "recipe": "decorative:magenta_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/orange_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/orange_bath_tire.json new file mode 100644 index 0000000..f1b2f3a --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/orange_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Orange Bath Tire", + "icon": "decorative:orange_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:orange_bath_tire", + "title": "Orange Bath Tire", + "link_recipe": false, + "text": "A nice toy for summer days." + }, + { + "type": "crafting", + "recipe": "decorative:orange_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/pink_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/pink_bath_tire.json new file mode 100644 index 0000000..2bdc561 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/pink_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Pink Bath Tire", + "icon": "decorative:pink_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:pink_bath_tire", + "title": "Pink Bath Tire", + "link_recipe": false, + "text": "A nice toy for summer days." + }, + { + "type": "crafting", + "recipe": "decorative:pink_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/pool_sprinkler.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/pool_sprinkler.json new file mode 100644 index 0000000..b8f2f29 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/pool_sprinkler.json @@ -0,0 +1,18 @@ +{ + "name": "Pool Sprinkler", + "icon": "decorative:pool_sprinkler", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:pool_sprinkler", + "title": "Pool Sprinkler", + "link_recipe": false, + "text": "An Item to decorate your pool with." + }, + { + "type": "crafting", + "recipe": "decorative:pool_sprinkler" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/pool_wall.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/pool_wall.json new file mode 100644 index 0000000..24aae19 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/pool_wall.json @@ -0,0 +1,18 @@ +{ + "name": "Pool Wall", + "icon": "decorative:pool_wall", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:pool_wall", + "title": "Pool Wall", + "link_recipe": false, + "text": "Can be used to create very nice looking pools." + }, + { + "type": "crafting", + "recipe": "decorative:pool_wall" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/purple_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/purple_bath_tire.json new file mode 100644 index 0000000..6b36469 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/purple_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Purple Bath Tire", + "icon": "decorative:purple_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:purple_bath_tire", + "title": "Purple Bath Tire", + "link_recipe": false, + "text": "A nice toy for summer days." + }, + { + "type": "crafting", + "recipe": "decorative:purple_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/red_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/red_bath_tire.json new file mode 100644 index 0000000..f04d502 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/red_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Red Bath Tire", + "icon": "decorative:red_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:red_bath_tire", + "title": "Red Bath Tire", + "link_recipe": false, + "text": "A nice toy for summer days." + }, + { + "type": "crafting", + "recipe": "decorative:red_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/shower_head.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/shower_head.json new file mode 100644 index 0000000..75a0377 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/shower_head.json @@ -0,0 +1,18 @@ +{ + "name": "Shower Head", + "icon": "decorative:shower_head", + "category": "decorative:indoor", + "pages": [ + { + "type": "spotlight", + "item": "decorative:shower_head", + "title": "Shower Head", + "link_recipe": false, + "text": "Everyone sometimes needs a shower." + }, + { + "type": "crafting", + "recipe": "decorative:shower_head" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/springboard.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/springboard.json new file mode 100644 index 0000000..82f75e0 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/springboard.json @@ -0,0 +1,18 @@ +{ + "name": "Springboard", + "icon": "decorative:springboard", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:springboard", + "title": "Springboard", + "link_recipe": false, + "text": "If you right click the front part, you'll be launched into the air!" + }, + { + "type": "crafting", + "recipe": "decorative:springboard" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/white_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/white_bath_tire.json new file mode 100644 index 0000000..d1fe898 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/white_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "White Bath Tire", + "icon": "decorative:white_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:white_bath_tire", + "title": "White Bath Tire", + "link_recipe": false, + "text": "A nice toy for summer days." + }, + { + "type": "crafting", + "recipe": "decorative:white_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/yellow_bath_tire.json b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/yellow_bath_tire.json new file mode 100644 index 0000000..7848375 --- /dev/null +++ b/src/main/resources/data/decorative/patchouli_books/decoration_guide/en_us/entries/decoration_guide/yellow_bath_tire.json @@ -0,0 +1,18 @@ +{ + "name": "Yellow Bath Tire", + "icon": "decorative:yellow_bath_tire", + "category": "decorative:pool", + "pages": [ + { + "type": "spotlight", + "item": "decorative:yellow_bath_tire", + "title": "Yellow Bath Tire", + "link_recipe": false, + "text": "A nice toy for summer days." + }, + { + "type": "crafting", + "recipe": "decorative:yellow_bath_tire" + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/beach_ball.json b/src/main/resources/data/decorative/recipes/beach_ball.json new file mode 100644 index 0000000..5543a04 --- /dev/null +++ b/src/main/resources/data/decorative/recipes/beach_ball.json @@ -0,0 +1,23 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#YL", + "#YL", + "#YL" + ], + "key": { + "#": { + "item": "minecraft:red_concrete" + }, + "Y": { + "item": "minecraft:yellow_concrete" + }, + "L": { + "item": "minecraft:light_blue_concrete" + } + }, + "result": { + "item": "decorative:beach_ball", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/black_bath_tire.json b/src/main/resources/data/decorative/recipes/black_bath_tire.json new file mode 100644 index 0000000..fdf4d6a --- /dev/null +++ b/src/main/resources/data/decorative/recipes/black_bath_tire.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": { + "item": "minecraft:black_concrete" + } + }, + "result": { + "item": "decorative:black_bath_tire", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/blue_bath_tire.json b/src/main/resources/data/decorative/recipes/blue_bath_tire.json new file mode 100644 index 0000000..1ba53b4 --- /dev/null +++ b/src/main/resources/data/decorative/recipes/blue_bath_tire.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": { + "item": "minecraft:blue_concrete" + } + }, + "result": { + "item": "decorative:blue_bath_tire", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/brown_bath_tire.json b/src/main/resources/data/decorative/recipes/brown_bath_tire.json new file mode 100644 index 0000000..1c3af2c --- /dev/null +++ b/src/main/resources/data/decorative/recipes/brown_bath_tire.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": { + "item": "minecraft:brown_concrete" + } + }, + "result": { + "item": "decorative:brown_bath_tire", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/cyan_bath_tire.json b/src/main/resources/data/decorative/recipes/cyan_bath_tire.json new file mode 100644 index 0000000..1e933a7 --- /dev/null +++ b/src/main/resources/data/decorative/recipes/cyan_bath_tire.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": { + "item": "minecraft:cyan_concrete" + } + }, + "result": { + "item": "decorative:cyan_bath_tire", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/gray_bath_tire.json b/src/main/resources/data/decorative/recipes/gray_bath_tire.json new file mode 100644 index 0000000..adc9167 --- /dev/null +++ b/src/main/resources/data/decorative/recipes/gray_bath_tire.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": { + "item": "minecraft:gray_concrete" + } + }, + "result": { + "item": "decorative:gray_bath_tire", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/green_bath_tire.json b/src/main/resources/data/decorative/recipes/green_bath_tire.json new file mode 100644 index 0000000..cdceb29 --- /dev/null +++ b/src/main/resources/data/decorative/recipes/green_bath_tire.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": { + "item": "minecraft:green_concrete" + } + }, + "result": { + "item": "decorative:green_bath_tire", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/light_blue_bath_tire.json b/src/main/resources/data/decorative/recipes/light_blue_bath_tire.json new file mode 100644 index 0000000..92404da --- /dev/null +++ b/src/main/resources/data/decorative/recipes/light_blue_bath_tire.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": { + "item": "minecraft:light_blue_concrete" + } + }, + "result": { + "item": "decorative:light_blue_bath_tire", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/light_gray_bath_tire.json b/src/main/resources/data/decorative/recipes/light_gray_bath_tire.json new file mode 100644 index 0000000..c93356d --- /dev/null +++ b/src/main/resources/data/decorative/recipes/light_gray_bath_tire.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": { + "item": "minecraft:light_gray_concrete" + } + }, + "result": { + "item": "decorative:light_gray_bath_tire", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/lime_bath_tire.json b/src/main/resources/data/decorative/recipes/lime_bath_tire.json new file mode 100644 index 0000000..bae3fac --- /dev/null +++ b/src/main/resources/data/decorative/recipes/lime_bath_tire.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": { + "item": "minecraft:lime_concrete" + } + }, + "result": { + "item": "decorative:lime_bath_tire", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/magenta_bath_tire.json b/src/main/resources/data/decorative/recipes/magenta_bath_tire.json new file mode 100644 index 0000000..c6a0e14 --- /dev/null +++ b/src/main/resources/data/decorative/recipes/magenta_bath_tire.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": { + "item": "minecraft:magenta_concrete" + } + }, + "result": { + "item": "decorative:magenta_bath_tire", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/orange_bath_tire.json b/src/main/resources/data/decorative/recipes/orange_bath_tire.json new file mode 100644 index 0000000..b7368c8 --- /dev/null +++ b/src/main/resources/data/decorative/recipes/orange_bath_tire.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": { + "item": "minecraft:orange_concrete" + } + }, + "result": { + "item": "decorative:orange_bath_tire", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/pink_bath_tire.json b/src/main/resources/data/decorative/recipes/pink_bath_tire.json new file mode 100644 index 0000000..8db76d6 --- /dev/null +++ b/src/main/resources/data/decorative/recipes/pink_bath_tire.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": { + "item": "minecraft:pink_concrete" + } + }, + "result": { + "item": "decorative:pink_bath_tire", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/pool_sprinkler.json b/src/main/resources/data/decorative/recipes/pool_sprinkler.json new file mode 100644 index 0000000..df35d9f --- /dev/null +++ b/src/main/resources/data/decorative/recipes/pool_sprinkler.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "##", + "# " + ], + "key": { + "#": { + "item": "minecraft:iron_block" + } + }, + "result": { + "item": "decorative:pool_sprinkler", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/pool_wall.json b/src/main/resources/data/decorative/recipes/pool_wall.json new file mode 100644 index 0000000..41160e2 --- /dev/null +++ b/src/main/resources/data/decorative/recipes/pool_wall.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "item": "minecraft:white_concrete" + }, + { + "item": "minecraft:white_concrete" + }, + { + "item": "minecraft:white_concrete" + } + ], + "result": { + "item": "decorative:pool_wall", + "count": 6 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/purple_bath_tire.json b/src/main/resources/data/decorative/recipes/purple_bath_tire.json new file mode 100644 index 0000000..d7f8bd9 --- /dev/null +++ b/src/main/resources/data/decorative/recipes/purple_bath_tire.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": { + "item": "minecraft:purple_concrete" + } + }, + "result": { + "item": "decorative:purple_bath_tire", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/red_bath_tire.json b/src/main/resources/data/decorative/recipes/red_bath_tire.json new file mode 100644 index 0000000..ecec263 --- /dev/null +++ b/src/main/resources/data/decorative/recipes/red_bath_tire.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": { + "item": "minecraft:red_concrete" + } + }, + "result": { + "item": "decorative:red_bath_tire", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/shower_head.json b/src/main/resources/data/decorative/recipes/shower_head.json new file mode 100644 index 0000000..9e1be9a --- /dev/null +++ b/src/main/resources/data/decorative/recipes/shower_head.json @@ -0,0 +1,20 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "#", + "G", + "G" + ], + "key": { + "#": { + "item": "minecraft:lever" + }, + "G": { + "item": "minecraft:gray_concrete" + } + }, + "result": { + "item": "decorative:shower_head", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/springboard.json b/src/main/resources/data/decorative/recipes/springboard.json new file mode 100644 index 0000000..1aa2e20 --- /dev/null +++ b/src/main/resources/data/decorative/recipes/springboard.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + " G" + ], + "key": { + "#": { + "item": "minecraft:white_concrete" + }, + "G": { + "item": "minecraft:gray_concrete" + } + }, + "result": { + "item": "decorative:springboard", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/white_bath_tire.json b/src/main/resources/data/decorative/recipes/white_bath_tire.json new file mode 100644 index 0000000..17a24ad --- /dev/null +++ b/src/main/resources/data/decorative/recipes/white_bath_tire.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": { + "item": "minecraft:white_concrete" + } + }, + "result": { + "item": "decorative:white_bath_tire", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/data/decorative/recipes/yellow_bath_tire.json b/src/main/resources/data/decorative/recipes/yellow_bath_tire.json new file mode 100644 index 0000000..7b60ede --- /dev/null +++ b/src/main/resources/data/decorative/recipes/yellow_bath_tire.json @@ -0,0 +1,17 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "###", + "# #", + "###" + ], + "key": { + "#": { + "item": "minecraft:yellow_concrete" + } + }, + "result": { + "item": "decorative:yellow_bath_tire", + "count": 1 + } +} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 9bb8d98..5279b1c 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, "id": "decorative", - "version": "1.0.0", + "version": "2.0.0 - Summer 2020 Update", "name": "Decorative", "description": "Adds many cool new decorative items with 3d models!", @@ -11,7 +11,7 @@ ], "contact": { "homepage": "https://www.midnightdust.eu/", - "sources": "https://github.com/TeamMidnightDust/StylishDecoration" + "issues": "https://github.com/TeamMidnightDust/Decorative/issues" }, "license": "MIT",