From 3d3ef68900b1de15490009e547305cedc10d22a4 Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Sat, 13 May 2023 07:57:06 -0700 Subject: [PATCH 1/4] Improve LerpedFloat#settled() --- .../simibubi/create/foundation/ponder/ui/PonderTagScreen.java | 2 +- .../create/foundation/utility/animation/LerpedFloat.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java index f91b6ecdc..2dd853597 100644 --- a/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java +++ b/src/main/java/com/simibubi/create/foundation/ponder/ui/PonderTagScreen.java @@ -265,7 +265,7 @@ public class PonderTagScreen extends NavigatableSimiScreen { // UIRenderHelper.streak(0, itemArea.getX() - 10, itemArea.getY() - 20, 20, 180, 0x101010); drawCenteredString(ms, font, relatedTitle, windowWidth / 2, itemArea.getY() - 20, Theme.i(Theme.Key.TEXT)); - ms.translate(0,0, -200); + ms.translate(0, 0, -200); UIRenderHelper.streak(ms, 0, 0, 0, itemArea.getHeight() + 10, itemArea.getWidth() / 2 + 75); UIRenderHelper.streak(ms, 180, 0, 0, itemArea.getHeight() + 10, itemArea.getWidth() / 2 + 75); diff --git a/src/main/java/com/simibubi/create/foundation/utility/animation/LerpedFloat.java b/src/main/java/com/simibubi/create/foundation/utility/animation/LerpedFloat.java index bb9e24ef1..516be8dbd 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/animation/LerpedFloat.java +++ b/src/main/java/com/simibubi/create/foundation/utility/animation/LerpedFloat.java @@ -95,7 +95,7 @@ public class LerpedFloat { } public boolean settled() { - return Mth.equal((double) previousValue, value); + return Mth.equal((double) previousValue, value) && (chaseFunction == null || Mth.equal((double) value, chaseTarget)); } public float getChaseTarget() { From 03feeb71ef973724147158d11c1938262a2c8944 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Sun, 14 May 2023 00:23:46 +0200 Subject: [PATCH 2/4] Stop funnelling around - Fixed filters with an unset (*) extraction amount not migrating correctly from 0.5 worlds - Move more recent version of palettes reference to `assets\create\reference` --- .../filtering/FilteringBehaviour.java | 7 +++++++ .../assets/create/Art Reference/palettes.png | Bin 23979 -> 0 bytes .../assets/create/reference/palettes.png | Bin 13554 -> 23979 bytes 3 files changed, 7 insertions(+) delete mode 100644 src/main/resources/assets/create/Art Reference/palettes.png diff --git a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/filtering/FilteringBehaviour.java b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/filtering/FilteringBehaviour.java index 401737851..f4d4b0330 100644 --- a/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/filtering/FilteringBehaviour.java +++ b/src/main/java/com/simibubi/create/foundation/blockEntity/behaviour/filtering/FilteringBehaviour.java @@ -96,6 +96,13 @@ public class FilteringBehaviour extends BlockEntityBehaviour implements ValueSet filter = ItemStack.of(nbt.getCompound("Filter")); count = nbt.getInt("FilterAmount"); upTo = nbt.getBoolean("UpTo"); + + // Migrate from previous behaviour + if (count == 0) { + upTo = true; + count = filter.getMaxStackSize(); + } + super.read(nbt, clientPacket); } diff --git a/src/main/resources/assets/create/Art Reference/palettes.png b/src/main/resources/assets/create/Art Reference/palettes.png deleted file mode 100644 index 0a2799a3d7940c41e2cac13757fd0ddc616196fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23979 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 F{{fJ*bcg@| From 9c0c058fc0e0870fcc39f706089d39a1acd4a456 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Mon, 15 May 2023 01:12:38 +0200 Subject: [PATCH 3/4] SeamsBad - Pushed surfaces around by fractions of a pixel to cover up misaligned geometry from mc's model rendering --- .../java/com/simibubi/create/AllShapes.java | 2 +- .../sequencer/SequencedGearshiftScreen.java | 2 +- .../belts/tunnel/BeltTunnelInstance.java | 2 +- .../belts/tunnel/BeltTunnelRenderer.java | 4 +- .../block/funnel/FunnelInstance.java | 2 +- .../block/funnel/FunnelRenderer.java | 4 +- .../create/models/block/bearing/block.json | 129 ++++++------- .../block/belt_funnel/block_extended.json | 6 +- .../block/belt_funnel/block_pulling.json | 4 +- .../block/belt_funnel/block_pushing.json | 4 +- .../block/belt_funnel/block_retracted.json | 6 +- .../create/models/block/belt_funnel/flap.json | 4 +- .../create/models/block/belt_tunnel/flap.json | 4 +- .../models/block/belt_tunnel/straight.json | 8 +- .../models/block/belt_tunnel/t_left.json | 12 +- .../models/block/belt_tunnel/t_right.json | 12 +- .../models/block/belt_tunnel/window.json | 8 +- .../models/block/controls/block_open.json | 2 +- .../models/block/controls/block_virtual.json | 2 +- .../models/block/deployer/horizontal.json | 16 +- .../models/block/deployer/vertical.json | 16 +- .../create/models/block/depot/block.json | 4 +- .../models/block/elevator_contact/block.json | 2 +- .../models/block/encased_fan/block.json | 12 +- .../block/fluid_tank/block_bottom_window.json | 32 ++-- .../fluid_tank/block_bottom_window_ne.json | 12 +- .../fluid_tank/block_bottom_window_nw.json | 12 +- .../fluid_tank/block_bottom_window_se.json | 12 +- .../fluid_tank/block_bottom_window_sw.json | 12 +- .../block/fluid_tank/block_middle_window.json | 33 ++-- .../fluid_tank/block_middle_window_ne.json | 13 +- .../fluid_tank/block_middle_window_nw.json | 13 +- .../fluid_tank/block_middle_window_se.json | 13 +- .../fluid_tank/block_middle_window_sw.json | 13 +- .../block/fluid_tank/block_single_window.json | 32 ++-- .../fluid_tank/block_single_window_ne.json | 12 +- .../fluid_tank/block_single_window_nw.json | 12 +- .../fluid_tank/block_single_window_se.json | 12 +- .../fluid_tank/block_single_window_sw.json | 12 +- .../block/fluid_tank/block_top_window.json | 32 ++-- .../block/fluid_tank/block_top_window_ne.json | 12 +- .../block/fluid_tank/block_top_window_nw.json | 12 +- .../block/fluid_tank/block_top_window_se.json | 12 +- .../block/fluid_tank/block_top_window_sw.json | 12 +- .../models/block/funnel/block_horizontal.json | 2 +- .../models/block/funnel/block_vertical.json | 24 +-- .../funnel/block_vertical_filterless.json | 24 +-- .../create/models/block/funnel/flap.json | 4 +- .../block/gantry_carriage/horizontal.json | 4 +- .../block/gantry_carriage/vertical.json | 4 +- .../create/models/block/gauge/base.json | 4 +- .../create/models/block/gauge/base_wall.json | 4 +- .../create/models/block/gearbox/block.json | 4 +- .../models/block/mechanical_drill/block.json | 4 +- .../models/block/mechanical_drill/head.json | 86 ++++----- .../mechanical_piston/extended/block.json | 8 +- .../extended/block_rotated.json | 8 +- .../block/mechanical_piston/moving/block.json | 11 +- .../moving/block_rotated.json | 11 +- .../block/mechanical_piston/normal/block.json | 20 +-- .../normal/block_rotated.json | 6 +- .../models/block/mechanical_press/block.json | 6 +- .../models/block/mechanical_press/head.json | 170 +++++++++--------- .../block/mechanical_saw/horizontal.json | 6 +- .../models/block/mechanical_saw/vertical.json | 140 +++++++-------- .../models/block/redstone_contact/block.json | 4 +- .../models/block/rope_pulley/block.json | 3 +- .../create/models/block/rope_pulley/item.json | 33 +++- .../block/rope_pulley/pulley_magnet.json | 28 ++- .../create/models/block/rope_pulley/rope.json | 4 +- .../models/block/rope_pulley/rope_half.json | 4 +- .../block/rope_pulley/rope_half_magnet.json | 28 ++- .../block/sequenced_gearshift/idle.json | 4 +- .../create/models/block/spout/block.json | 60 +++---- .../models/block/water_wheel/block.json | 11 +- .../textures/block/fluid_tank_window.png | Bin 168 -> 254 bytes .../create/textures/block/pulley_magnet.png | Bin 347 -> 331 bytes .../create/textures/block/pulley_rope.png | Bin 207 -> 161 bytes 78 files changed, 680 insertions(+), 641 deletions(-) diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index 45220463a..2a24670af 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -249,7 +249,7 @@ public class AllShapes { BELT_COLLISION_MASK = cuboid(0, 0, 0, 16, 19, 16), SCHEMATICANNON_SHAPE = shape(1, 0, 1, 15, 8, 15).add(0.5, 8, 0.5, 15.5, 11, 15.5) .build(), - PULLEY_MAGNET = shape(3, 0, 3, 13, 2, 13).add(FOUR_VOXEL_POLE.get(UP)) + PULLEY_MAGNET = shape(3, 0, 3, 13, 3, 13).add(FOUR_VOXEL_POLE.get(UP)) .build(), SPOUT = shape(1, 2, 1, 15, 14, 15).add(2, 0, 2, 14, 16, 14) .build(), diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java index 6d703a69c..4c5d20620 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/advanced/sequencer/SequencedGearshiftScreen.java @@ -150,7 +150,7 @@ public class SequencedGearshiftScreen extends AbstractSimiScreen { AllGuiTextures toDraw = AllGuiTextures.SEQUENCER_EMPTY; int yOffset = toDraw.height * row; - toDraw.render(ms, x, y + 14 + yOffset, this); + toDraw.render(ms, x, y + 16 + yOffset, this); } for (int row = 0; row < instructions.capacity(); row++) { diff --git a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelInstance.java b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelInstance.java index 1bd4f6844..d1365b05a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelInstance.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/belts/tunnel/BeltTunnelInstance.java @@ -47,7 +47,7 @@ public class BeltTunnelInstance extends BlockEntityInstance imple for (int segment = 0; segment <= 3; segment++) { float intensity = segment == 3 ? 1.5f : segment + 1; - float segmentOffset = -3 / 16f * segment; + float segmentOffset = -3.05f / 16f * segment + 0.075f / 16f; FlapData key = model.createInstance(); diff --git a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelRenderer.java b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelRenderer.java index c31ca61f0..c4e5dc43a 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelRenderer.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/funnel/FunnelRenderer.java @@ -49,7 +49,7 @@ public class FunnelRenderer extends SmartBlockEntityRenderer msr.centre() .rotateY(horizontalAngle) .unCentre(); - ms.translate(0, 0, -be.getFlapOffset()); + ms.translate(0.075f, 0, -be.getFlapOffset()); for (int segment = 0; segment <= 3; segment++) { ms.pushPose(); @@ -68,7 +68,7 @@ public class FunnelRenderer extends SmartBlockEntityRenderer .renderInto(ms, vb); ms.popPose(); - ms.translate(-3 / 16f, 0, 0); + ms.translate(-3.05f / 16f, 0, 0); } ms.popPose(); } diff --git a/src/main/resources/assets/create/models/block/bearing/block.json b/src/main/resources/assets/create/models/block/bearing/block.json index 15d53e03e..bcc3b8268 100644 --- a/src/main/resources/assets/create/models/block/bearing/block.json +++ b/src/main/resources/assets/create/models/block/bearing/block.json @@ -1,66 +1,67 @@ { - "textures": { - "particle": "#side", - "gearbox": "#back", - "bearing_side": "#side" - }, - "elements": [ - { - "name": "Side", - "from": [ 0, 0, 0 ], - "to": [ 2, 12, 16 ], - "faces": { - "north": { "texture": "#bearing_side", "uv": [ 14, 4, 16, 16 ] }, - "east": { "texture": "#bearing_side", "uv": [ 0, 4, 16, 16 ] }, - "south": { "texture": "#bearing_side", "uv": [ 0, 4, 2, 16 ] }, - "west": { "texture": "#bearing_side", "uv": [ 0, 4, 16, 16 ] }, - "up": { "texture": "#gearbox", "uv": [ 0, 0, 2, 16 ] }, - "down": { "texture": "#gearbox", "uv": [ 0, 0, 2, 16 ] } - } - }, - { - "name": "Side", - "from": [ 14, 0, 0 ], - "to": [ 16, 12, 16 ], - "faces": { - "north": { "texture": "#bearing_side", "uv": [ 0, 4, 2, 16 ] }, - "east": { "texture": "#bearing_side", "uv": [ 0, 4, 16, 16 ] }, - "south": { "texture": "#bearing_side", "uv": [ 14, 4, 16, 16 ] }, - "west": { "texture": "#bearing_side", "uv": [ 0, 4, 16, 16 ] }, - "up": { "texture": "#gearbox", "uv": [ 14, 0, 16, 16 ] }, - "down": { "texture": "#gearbox", "uv": [ 14, 0, 16, 16 ] } - } - }, - { - "name": "Side", - "from": [ 2, 0, 0 ], - "to": [ 14, 12, 2 ], - "faces": { - "north": { "texture": "#bearing_side", "uv": [ 2, 4, 14, 16 ] }, - "south": { "texture": "#bearing_side", "uv": [ 2, 4, 14, 16 ] }, - "up": { "texture": "#gearbox", "uv": [ 2, 0, 14, 2 ] }, - "down": { "texture": "#gearbox", "uv": [ 2, 14, 14, 16 ] } - } - }, - { - "name": "Side", - "from": [ 2, 0, 14 ], - "to": [ 14, 12, 16 ], - "faces": { - "north": { "texture": "#bearing_side", "uv": [ 2, 4, 14, 16 ] }, - "south": { "texture": "#bearing_side", "uv": [ 2, 4, 14, 16 ] }, - "up": { "texture": "#gearbox", "uv": [ 2, 14, 14, 16 ] }, - "down": { "texture": "#gearbox", "uv": [ 2, 0, 14, 2 ] } - } - }, - { - "name": "Core", - "from": [ 2, 1, 2 ], - "to": [ 14, 12, 14 ], - "faces": { - "up": { "texture": "#gearbox", "uv": [ 2, 2, 14, 14 ] }, - "down": { "texture": "#gearbox", "uv": [ 2, 2, 14, 14 ] } - } - } - ] + "credit": "Made with Blockbench", + "textures": { + "gearbox": "#back", + "particle": "#side", + "bearing_side": "#side" + }, + "elements": [ + { + "name": "Side", + "from": [0, 0, 0], + "to": [2, 12, 16], + "faces": { + "north": {"uv": [14, 4, 16, 16], "texture": "#bearing_side"}, + "east": {"uv": [0, 4, 16, 16], "texture": "#bearing_side"}, + "south": {"uv": [0, 4, 2, 16], "texture": "#bearing_side"}, + "west": {"uv": [0, 4, 16, 16], "texture": "#bearing_side"}, + "up": {"uv": [0, 0, 2, 16], "texture": "#gearbox"}, + "down": {"uv": [0, 0, 2, 16], "texture": "#gearbox"} + } + }, + { + "name": "Side", + "from": [14, 0, 0], + "to": [16, 12, 16], + "faces": { + "north": {"uv": [0, 4, 2, 16], "texture": "#bearing_side"}, + "east": {"uv": [0, 4, 16, 16], "texture": "#bearing_side"}, + "south": {"uv": [14, 4, 16, 16], "texture": "#bearing_side"}, + "west": {"uv": [0, 4, 16, 16], "texture": "#bearing_side"}, + "up": {"uv": [14, 0, 16, 16], "texture": "#gearbox"}, + "down": {"uv": [14, 0, 16, 16], "texture": "#gearbox"} + } + }, + { + "name": "Side", + "from": [2, 0, 0], + "to": [14, 12, 2], + "faces": { + "north": {"uv": [2, 4, 14, 16], "texture": "#bearing_side"}, + "south": {"uv": [2, 4, 14, 16], "texture": "#bearing_side"}, + "up": {"uv": [2, 0, 14, 2], "texture": "#gearbox"}, + "down": {"uv": [2, 14, 14, 16], "texture": "#gearbox"} + } + }, + { + "name": "Side", + "from": [2, 0, 14], + "to": [14, 12, 16], + "faces": { + "north": {"uv": [2, 4, 14, 16], "texture": "#bearing_side"}, + "south": {"uv": [2, 4, 14, 16], "texture": "#bearing_side"}, + "up": {"uv": [2, 14, 14, 16], "texture": "#gearbox"}, + "down": {"uv": [2, 0, 14, 2], "texture": "#gearbox"} + } + }, + { + "name": "Core", + "from": [2, 0.95, 2], + "to": [14, 12, 14], + "faces": { + "up": {"uv": [2, 2, 14, 14], "texture": "#gearbox"}, + "down": {"uv": [2, 2, 14, 14], "texture": "#gearbox"} + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json index 5dafd92af..843792b2e 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_extended.json @@ -48,7 +48,7 @@ }, { "from": [1.95, -3, 6], - "to": [14.05, 10, 0], + "to": [14.05, 10.05, 0], "faces": { "east": {"uv": [13, 6, 16, 12.5], "rotation": 180, "texture": "#base"}, "west": {"uv": [13, 8.5, 16, 16], "texture": "#base"}, @@ -68,8 +68,8 @@ }, { "name": "MidExtension", - "from": [2, -2, 6], - "to": [14, 14, 10], + "from": [1.95, -2, 6], + "to": [14.05, 14.05, 10], "rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]}, "faces": { "north": {"uv": [0, 0, 8, 6], "rotation": 270, "texture": "#base"}, diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json b/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json index e6f21e1a3..722f587ae 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_pulling.json @@ -73,8 +73,8 @@ }, { "name": "Internal", - "from": [1.95, -3, 19], - "to": [14.05, 10, 13], + "from": [1.9, -3, 19], + "to": [14.1, 10.05, 13], "rotation": {"angle": -22.5, "axis": "x", "origin": [0, -3, 13]}, "faces": { "east": {"uv": [13, 16, 16, 9.5], "rotation": 180, "texture": "#base"}, diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json b/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json index 3ff98968f..e641f0744 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_pushing.json @@ -73,8 +73,8 @@ }, { "name": "Internal", - "from": [1.95, -3, 19], - "to": [14.05, 10, 13], + "from": [1.9, -3, 19], + "to": [14.1, 10.05, 13], "rotation": {"angle": -22.5, "axis": "x", "origin": [0, -3, 13]}, "faces": { "east": {"uv": [13, 6, 16, 12.5], "rotation": 180, "texture": "#base"}, diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json index 3a6426162..f4224ad87 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted.json @@ -48,7 +48,7 @@ }, { "from": [1.95, -3, 14], - "to": [14.05, 10, 8], + "to": [14.05, 10.05, 8], "faces": { "east": {"uv": [13, 16, 16, 9.5], "rotation": 180, "texture": "#base"}, "west": {"uv": [13, 12.5, 16, 6], "texture": "#base"}, @@ -93,8 +93,8 @@ } }, { - "from": [1, -2, 14], - "to": [15, 15, 15], + "from": [0.95, -2, 14], + "to": [15.05, 15.05, 15], "rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 22]}, "faces": { "east": {"uv": [7, 7.5, 7.5, 16], "texture": "#back"}, diff --git a/src/main/resources/assets/create/models/block/belt_funnel/flap.json b/src/main/resources/assets/create/models/block/belt_funnel/flap.json index 5d4a2a5e7..f1bc4fab5 100644 --- a/src/main/resources/assets/create/models/block/belt_funnel/flap.json +++ b/src/main/resources/assets/create/models/block/belt_funnel/flap.json @@ -6,8 +6,8 @@ "elements": [ { "name": "F4", - "from": [11, -3, 9], - "to": [14, 10, 10], + "from": [10.975, -3, 8.95], + "to": [14.025, 10.05, 9.95], "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, "faces": { "north": {"uv": [6, 8, 7.5, 14.5], "texture": "#4"}, diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/flap.json b/src/main/resources/assets/create/models/block/belt_tunnel/flap.json index fe713b69a..153b32516 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/flap.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/flap.json @@ -6,8 +6,8 @@ "elements": [ { "name": "F4", - "from": [11, -3, 1], - "to": [14, 10, 2], + "from": [10.975, -3, 0.95], + "to": [14.025, 10.05, 1.95], "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, "faces": { "north": {"uv": [6, 8, 7.5, 14.5], "texture": "#4"}, diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/straight.json b/src/main/resources/assets/create/models/block/belt_tunnel/straight.json index d2e89a95b..e834fe71b 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/straight.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/straight.json @@ -22,8 +22,8 @@ }, { "name": "inner X", - "from": [0, -5, 14], - "to": [16, 16, 2], + "from": [0, -5, 14.05], + "to": [16, 16, 1.95], "faces": { "north": {"uv": [0, 0, 8, 10.5], "texture": "#tunnel"}, "south": {"uv": [0, 0, 8, 10.5], "texture": "#tunnel"} @@ -41,8 +41,8 @@ }, { "name": "inner rim", - "from": [0, 10, 0], - "to": [16, 12, 16], + "from": [0, 10.05, 0], + "to": [16, 12.05, 16], "faces": { "down": {"uv": [0, 0, 16, 16], "texture": "#frame"} } diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json b/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json index f482eaf7c..14bdada30 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/t_left.json @@ -22,8 +22,8 @@ }, { "name": "inner X", - "from": [0, -5, 14], - "to": [16, 16, 2], + "from": [0, -5, 14.05], + "to": [16, 16, 1.95], "faces": { "north": {"uv": [0, 0, 8, 10.5], "texture": "#direction"}, "south": {"uv": [0, 0, 8, 10.5], "texture": "#tunnel"} @@ -31,8 +31,8 @@ }, { "name": "inner Z", - "from": [14, -5, 0], - "to": [2, 16, 16], + "from": [14.05, -5, 0], + "to": [1.95, 16, 16], "rotation": {"angle": 0, "axis": "y", "origin": [8, 5.5, 24]}, "faces": { "east": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"}, @@ -41,8 +41,8 @@ }, { "name": "inner rim", - "from": [0, 10, 0], - "to": [16, 12, 16], + "from": [0, 10.05, 0], + "to": [16, 12.05, 16], "faces": { "down": {"uv": [0, 0, 16, 16], "texture": "#frame"} } diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json b/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json index 7d7bbbba6..41367296f 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/t_right.json @@ -22,8 +22,8 @@ }, { "name": "inner X", - "from": [0, -5, 14], - "to": [16, 16, 2], + "from": [0, -5, 14.05], + "to": [16, 16, 1.95], "faces": { "north": {"uv": [0, 0, 8, 10.5], "texture": "#tunnel"}, "south": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"} @@ -31,8 +31,8 @@ }, { "name": "inner Z", - "from": [14, -5, 0], - "to": [2, 16, 16], + "from": [14.05, -5, 0], + "to": [1.95, 16, 16], "rotation": {"angle": 0, "axis": "y", "origin": [8, 5.5, 24]}, "faces": { "east": {"uv": [0, 5.5, 8, 16], "rotation": 180, "texture": "#direction"}, @@ -41,8 +41,8 @@ }, { "name": "inner rim", - "from": [0, 10, 0], - "to": [16, 12, 16], + "from": [0, 10.05, 0], + "to": [16, 12.05, 16], "faces": { "down": {"uv": [0, 0, 16, 16], "texture": "#frame"} } diff --git a/src/main/resources/assets/create/models/block/belt_tunnel/window.json b/src/main/resources/assets/create/models/block/belt_tunnel/window.json index ca4473a56..44adf6ce1 100644 --- a/src/main/resources/assets/create/models/block/belt_tunnel/window.json +++ b/src/main/resources/assets/create/models/block/belt_tunnel/window.json @@ -21,8 +21,8 @@ }, { "name": "inner X", - "from": [0, -5, 14], - "to": [16, 16, 2], + "from": [0, -5, 14.05], + "to": [16, 16, 1.95], "faces": { "north": {"uv": [8, 0, 16, 10.5], "texture": "#tunnel"}, "south": {"uv": [8, 0, 16, 10.5], "texture": "#tunnel"} @@ -40,8 +40,8 @@ }, { "name": "inner rim", - "from": [0, 10, 0], - "to": [16, 12, 16], + "from": [0, 10.05, 0], + "to": [16, 12.05, 16], "faces": { "down": {"uv": [0, 4, 8, 12], "texture": "#direction"} } diff --git a/src/main/resources/assets/create/models/block/controls/block_open.json b/src/main/resources/assets/create/models/block/controls/block_open.json index e217883f8..479cce174 100644 --- a/src/main/resources/assets/create/models/block/controls/block_open.json +++ b/src/main/resources/assets/create/models/block/controls/block_open.json @@ -42,7 +42,7 @@ }, { "from": [2, 5, 7], - "to": [14, 13, 15], + "to": [14, 13.05, 15], "faces": { "north": {"uv": [1, 14, 7, 10.05], "rotation": 180, "texture": "#4"}, "up": {"uv": [1, 13.5, 7, 9.55], "texture": "#4"}, diff --git a/src/main/resources/assets/create/models/block/controls/block_virtual.json b/src/main/resources/assets/create/models/block/controls/block_virtual.json index b22cbbd2f..1977a302f 100644 --- a/src/main/resources/assets/create/models/block/controls/block_virtual.json +++ b/src/main/resources/assets/create/models/block/controls/block_virtual.json @@ -75,7 +75,7 @@ }, { "from": [2, 5, 7], - "to": [14, 13, 15], + "to": [14, 13.05, 15], "faces": { "north": {"uv": [1, 14, 7, 10], "rotation": 180, "texture": "#4"}, "up": {"uv": [1, 13.5, 7, 9.5], "texture": "#4"}, diff --git a/src/main/resources/assets/create/models/block/deployer/horizontal.json b/src/main/resources/assets/create/models/block/deployer/horizontal.json index f1bf58939..4af517b80 100644 --- a/src/main/resources/assets/create/models/block/deployer/horizontal.json +++ b/src/main/resources/assets/create/models/block/deployer/horizontal.json @@ -18,17 +18,17 @@ "to": [16, 16, 2], "faces": { "north": {"uv": [0, 16, 16, 0], "rotation": 90, "texture": "#6"}, - "east": {"uv": [0, 14, 16, 16], "rotation": 270, "texture": "#gearbox_top"}, + "east": {"uv": [0, 14, 16, 16], "rotation": 270, "texture": "#5"}, "south": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#gearbox_top"}, - "west": {"uv": [0, 14, 16, 16], "rotation": 90, "texture": "#gearbox_top"}, + "west": {"uv": [0, 14, 16, 16], "rotation": 90, "texture": "#andesite_casing_short"}, "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#andesite_casing_short"}, "down": {"uv": [0, 14, 16, 16], "texture": "#andesite_casing_short"} } }, { "name": "Inner", - "from": [1, 2, 2], - "to": [15, 14, 12], + "from": [0.95, 2, 2], + "to": [15.05, 14, 12], "faces": { "north": {"uv": [0, 0, 12, 14], "rotation": 270, "texture": "#gearbox"}, "east": {"uv": [2, 4, 14, 14], "rotation": 270, "texture": "#gearbox"}, @@ -41,9 +41,9 @@ "from": [0, 0, 2], "to": [16, 2, 12], "faces": { - "east": {"uv": [16, 0, 14, 10], "rotation": 270, "texture": "#gearbox_top"}, + "east": {"uv": [0, 4, 2, 14], "rotation": 270, "texture": "#andesite_casing_short"}, "south": {"uv": [0, 0, 16, 2], "texture": "#andesite_casing_short"}, - "west": {"uv": [14, 0, 16, 10], "rotation": 90, "texture": "#gearbox_top"}, + "west": {"uv": [14, 4, 16, 14], "rotation": 90, "texture": "#andesite_casing_short"}, "up": {"uv": [0, 0, 16, 10], "rotation": 180, "texture": "#gearbox_top"}, "down": {"uv": [0, 4, 16, 14], "texture": "#5"} } @@ -53,9 +53,9 @@ "from": [0, 14, 2], "to": [16, 16, 12], "faces": { - "east": {"uv": [14, 0, 16, 10], "rotation": 270, "texture": "#gearbox_top"}, + "east": {"uv": [14, 4, 16, 14], "rotation": 270, "texture": "#andesite_casing_short"}, "south": {"uv": [0, 0, 16, 2], "rotation": 180, "texture": "#andesite_casing_short"}, - "west": {"uv": [16, 0, 14, 10], "rotation": 90, "texture": "#gearbox_top"}, + "west": {"uv": [0, 4, 2, 14], "rotation": 90, "texture": "#andesite_casing_short"}, "up": {"uv": [0, 4, 16, 14], "rotation": 180, "texture": "#5"}, "down": {"uv": [0, 0, 16, 10], "texture": "#gearbox_top"} } diff --git a/src/main/resources/assets/create/models/block/deployer/vertical.json b/src/main/resources/assets/create/models/block/deployer/vertical.json index d08683aca..e9322b7a4 100644 --- a/src/main/resources/assets/create/models/block/deployer/vertical.json +++ b/src/main/resources/assets/create/models/block/deployer/vertical.json @@ -21,14 +21,14 @@ "east": {"uv": [0, 14, 16, 16], "rotation": 270, "texture": "#andesite_casing_short"}, "south": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#gearbox_top"}, "west": {"uv": [0, 14, 16, 16], "rotation": 90, "texture": "#andesite_casing_short"}, - "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#gearbox_top"}, - "down": {"uv": [0, 14, 16, 16], "texture": "#gearbox_top"} + "up": {"uv": [0, 14, 16, 16], "rotation": 180, "texture": "#andesite_casing_short"}, + "down": {"uv": [0, 14, 16, 16], "texture": "#andesite_casing_short"} } }, { "name": "Inner", - "from": [2, 1, 2], - "to": [14, 15, 12], + "from": [2, 0.95, 2], + "to": [14, 15.05, 12], "faces": { "north": {"uv": [0, 0, 12, 14], "texture": "#gearbox"}, "south": {"uv": [2, 1, 14, 15], "texture": "#7"}, @@ -44,8 +44,8 @@ "east": {"uv": [0, 4, 16, 14], "rotation": 270, "texture": "#5"}, "south": {"uv": [0, 0, 16, 2], "rotation": 270, "texture": "#andesite_casing_short"}, "west": {"uv": [0, 0, 16, 10], "rotation": 90, "texture": "#gearbox_top"}, - "up": {"uv": [16, 0, 14, 10], "rotation": 180, "texture": "#gearbox_top"}, - "down": {"uv": [14, 0, 16, 10], "texture": "#gearbox_top"} + "up": {"uv": [0, 4, 2, 14], "rotation": 180, "texture": "#andesite_casing_short"}, + "down": {"uv": [14, 4, 16, 14], "texture": "#andesite_casing_short"} } }, { @@ -56,8 +56,8 @@ "east": {"uv": [0, 0, 16, 10], "rotation": 270, "texture": "#gearbox_top"}, "south": {"uv": [0, 0, 16, 2], "rotation": 90, "texture": "#andesite_casing_short"}, "west": {"uv": [0, 4, 16, 14], "rotation": 90, "texture": "#5"}, - "up": {"uv": [14, 2, 16, 12], "rotation": 180, "texture": "#gearbox_top"}, - "down": {"uv": [16, 0, 14, 10], "texture": "#gearbox_top"} + "up": {"uv": [14, 4, 16, 14], "rotation": 180, "texture": "#andesite_casing_short"}, + "down": {"uv": [0, 4, 2, 14], "texture": "#andesite_casing_short"} } } ], diff --git a/src/main/resources/assets/create/models/block/depot/block.json b/src/main/resources/assets/create/models/block/depot/block.json index 85bde5e9f..e95d7d785 100644 --- a/src/main/resources/assets/create/models/block/depot/block.json +++ b/src/main/resources/assets/create/models/block/depot/block.json @@ -22,8 +22,8 @@ } }, { - "from": [1, 11, 1], - "to": [15, 13, 15], + "from": [0.95, 11, 0.95], + "to": [15.05, 13, 15.05], "rotation": {"angle": 0, "axis": "y", "origin": [9, -2, 9]}, "faces": { "north": {"uv": [1, 14, 15, 16], "texture": "#2"}, diff --git a/src/main/resources/assets/create/models/block/elevator_contact/block.json b/src/main/resources/assets/create/models/block/elevator_contact/block.json index 6ced587e7..bc50e32f8 100644 --- a/src/main/resources/assets/create/models/block/elevator_contact/block.json +++ b/src/main/resources/assets/create/models/block/elevator_contact/block.json @@ -11,7 +11,7 @@ { "name": "Center", "from": [2, 0, 2], - "to": [14, 15, 14], + "to": [14, 15.05, 14], "faces": { "up": {"uv": [2, 2, 14, 14], "texture": "#0"}, "down": {"uv": [2, 2, 14, 14], "texture": "#3"} diff --git a/src/main/resources/assets/create/models/block/encased_fan/block.json b/src/main/resources/assets/create/models/block/encased_fan/block.json index f29406b6c..3a72c94e6 100644 --- a/src/main/resources/assets/create/models/block/encased_fan/block.json +++ b/src/main/resources/assets/create/models/block/encased_fan/block.json @@ -22,8 +22,8 @@ } }, { - "from": [1.9, 16, 1.9], - "to": [14.1, 0, 14.1], + "from": [1.95, 16, 1.95], + "to": [14.05, 0, 14.05], "faces": { "north": {"uv": [2, 0, 14, 16], "rotation": 180, "texture": "#fan_side"}, "east": {"uv": [2, 0, 14, 16], "rotation": 180, "texture": "#fan_side"}, @@ -32,16 +32,16 @@ } }, { - "from": [2, 1, 2], - "to": [14, 8, 14], + "from": [1.95, 0.95, 1.95], + "to": [14.05, 8.05, 14.05], "faces": { "up": {"uv": [2, 2, 14, 14], "texture": "#back"}, "down": {"uv": [2, 2, 14, 14], "texture": "#back"} } }, { - "from": [2, 15, 2], - "to": [14, 15, 14], + "from": [2, 14.95, 2], + "to": [14, 15.1, 14], "faces": { "up": {"uv": [2, 2, 14, 14], "texture": "#fan_casing"}, "down": {"uv": [2, 2, 14, 14], "texture": "#fan_casing"} diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window.json b/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window.json index 54b091e49..d255e487c 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window.json @@ -16,7 +16,7 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, "faces": { "north": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "north"}, - "east": {"uv": [12, 0, 13, 12], "texture": "#1", "cullface": "north"}, + "east": {"uv": [0, 0, 1, 12], "texture": "#1", "cullface": "north"}, "south": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "north"} } }, @@ -26,7 +26,7 @@ "to": [16, 16, 4], "faces": { "east": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "east"}, - "south": {"uv": [12, 0, 13, 12], "texture": "#1", "cullface": "east"}, + "south": {"uv": [0, 0, 1, 12], "texture": "#1", "cullface": "east"}, "west": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "east"} } }, @@ -37,7 +37,7 @@ "faces": { "north": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "south"}, "south": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "south"}, - "west": {"uv": [12, 0, 13, 12], "texture": "#1", "cullface": "south"} + "west": {"uv": [0, 0, 1, 12], "texture": "#1", "cullface": "south"} } }, { @@ -45,15 +45,15 @@ "from": [0, 4, 12], "to": [1, 16, 16], "faces": { - "north": {"uv": [12, 0, 13, 12], "texture": "#1", "cullface": "west"}, + "north": {"uv": [0, 0, 1, 12], "texture": "#1", "cullface": "west"}, "east": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "west"}, "west": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "west"} } }, { "name": "Window", - "from": [4, 4, 1], - "to": [12, 16, 1], + "from": [4, 4, 0.95], + "to": [12, 16, 0.95], "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, "faces": { "north": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "north"}, @@ -62,8 +62,8 @@ }, { "name": "Window", - "from": [15, 4, 4], - "to": [15, 16, 12], + "from": [15.05, 4, 4], + "to": [15.05, 16, 12], "faces": { "east": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "east"}, "west": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "east"} @@ -71,8 +71,8 @@ }, { "name": "Window", - "from": [4, 4, 15], - "to": [12, 16, 15], + "from": [4, 4, 15.05], + "to": [12, 16, 15.05], "faces": { "north": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "south"}, "south": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "south"} @@ -80,8 +80,8 @@ }, { "name": "Window", - "from": [1, 4, 4], - "to": [1, 16, 12], + "from": [0.95, 4, 4], + "to": [0.95, 16, 12], "faces": { "east": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "west"}, "west": {"uv": [0, 4, 8, 16], "texture": "#3", "cullface": "west"} @@ -95,7 +95,7 @@ "faces": { "north": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "north"}, "south": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "north"}, - "west": {"uv": [3, 0, 4, 12], "texture": "#1", "cullface": "north"} + "west": {"uv": [15, 0, 16, 12], "texture": "#1", "cullface": "north"} } }, { @@ -103,7 +103,7 @@ "from": [15, 4, 12], "to": [16, 16, 16], "faces": { - "north": {"uv": [3, 0, 4, 12], "texture": "#1", "cullface": "east"}, + "north": {"uv": [15, 0, 16, 12], "texture": "#1", "cullface": "east"}, "east": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "east"}, "west": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "east"} } @@ -114,7 +114,7 @@ "to": [4, 16, 16], "faces": { "north": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "south"}, - "east": {"uv": [3, 0, 4, 12], "texture": "#1", "cullface": "south"}, + "east": {"uv": [15, 0, 16, 12], "texture": "#1", "cullface": "south"}, "south": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "south"} } }, @@ -124,7 +124,7 @@ "to": [1, 16, 4], "faces": { "east": {"uv": [12, 0, 16, 12], "texture": "#1", "cullface": "west"}, - "south": {"uv": [3, 0, 4, 12], "texture": "#1", "cullface": "west"}, + "south": {"uv": [15, 0, 16, 12], "texture": "#1", "cullface": "west"}, "west": {"uv": [0, 0, 4, 12], "texture": "#1", "cullface": "west"} } }, diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_ne.json b/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_ne.json index a78d38168..df535c9c1 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_ne.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_ne.json @@ -15,14 +15,14 @@ "to": [16, 16, 12], "faces": { "east": {"uv": [4, 0, 16, 12], "texture": "#1"}, - "south": {"uv": [12, 0, 13, 12], "texture": "#1"}, + "south": {"uv": [4, 0, 5, 12], "texture": "#1"}, "west": {"uv": [0, 0, 12, 12], "texture": "#1"} } }, { "name": "Window", - "from": [0, 4, 1], - "to": [4, 16, 1], + "from": [0, 4, 0.95], + "to": [4, 16, 0.95], "faces": { "north": {"uv": [0, 4, 4, 16], "texture": "#3"}, "south": {"uv": [4, 4, 8, 16], "texture": "#3"} @@ -30,8 +30,8 @@ }, { "name": "Window", - "from": [15, 4, 12], - "to": [15, 16, 16], + "from": [15.05, 4, 12], + "to": [15.05, 16, 16], "faces": { "east": {"uv": [4, 4, 8, 16], "texture": "#3"}, "west": {"uv": [0, 4, 4, 16], "texture": "#3"} @@ -44,7 +44,7 @@ "faces": { "north": {"uv": [0, 0, 12, 12], "texture": "#1"}, "south": {"uv": [4, 0, 16, 12], "texture": "#1"}, - "west": {"uv": [3, 0, 4, 12], "texture": "#1"} + "west": {"uv": [11, 0, 12, 12], "texture": "#1"} } }, { diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_nw.json b/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_nw.json index e538bd656..eaac7ff0e 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_nw.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_nw.json @@ -15,14 +15,14 @@ "to": [12, 16, 1], "faces": { "north": {"uv": [4, 0, 16, 12], "texture": "#1"}, - "east": {"uv": [12, 0, 13, 12], "texture": "#1"}, + "east": {"uv": [4, 0, 5, 12], "texture": "#1"}, "south": {"uv": [0, 0, 12, 12], "texture": "#1"} } }, { "name": "Window", - "from": [1, 4, 12], - "to": [1, 16, 16], + "from": [0.95, 4, 12], + "to": [0.95, 16, 16], "faces": { "east": {"uv": [4, 4, 8, 16], "texture": "#3"}, "west": {"uv": [0, 4, 4, 16], "texture": "#3"} @@ -30,8 +30,8 @@ }, { "name": "Window", - "from": [12, 4, 1], - "to": [16, 16, 1], + "from": [12, 4, 0.95], + "to": [16, 16, 0.95], "faces": { "north": {"uv": [4, 4, 8, 16], "texture": "#3"}, "south": {"uv": [0, 4, 4, 16], "texture": "#3"} @@ -43,7 +43,7 @@ "to": [1, 16, 12], "faces": { "east": {"uv": [4, 0, 16, 12], "texture": "#1"}, - "south": {"uv": [3, 0, 4, 12], "texture": "#1"}, + "south": {"uv": [11, 0, 12, 12], "texture": "#1"}, "west": {"uv": [0, 0, 12, 12], "texture": "#1"} } }, diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_se.json b/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_se.json index d5d893146..b3772ef7a 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_se.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_se.json @@ -16,13 +16,13 @@ "faces": { "north": {"uv": [0, 0, 12, 12], "texture": "#1"}, "south": {"uv": [4, 0, 16, 12], "texture": "#1"}, - "west": {"uv": [12, 0, 13, 12], "texture": "#1"} + "west": {"uv": [4, 0, 5, 12], "texture": "#1"} } }, { "name": "Window", - "from": [15, 4, 0], - "to": [15, 16, 4], + "from": [15.05, 4, 0], + "to": [15.05, 16, 4], "faces": { "east": {"uv": [0, 4, 4, 16], "texture": "#3"}, "west": {"uv": [4, 4, 8, 16], "texture": "#3"} @@ -30,8 +30,8 @@ }, { "name": "Window", - "from": [0, 4, 15], - "to": [4, 16, 15], + "from": [0, 4, 15.05], + "to": [4, 16, 15.05], "faces": { "north": {"uv": [0, 4, 4, 16], "texture": "#3"}, "south": {"uv": [4, 4, 8, 16], "texture": "#3"} @@ -42,7 +42,7 @@ "from": [15, 4, 4], "to": [16, 16, 16], "faces": { - "north": {"uv": [3, 0, 4, 12], "texture": "#1"}, + "north": {"uv": [11, 0, 12, 12], "texture": "#1"}, "east": {"uv": [0, 0, 12, 12], "texture": "#1"}, "west": {"uv": [4, 0, 16, 12], "texture": "#1"} } diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_sw.json b/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_sw.json index 7d05e454f..d91e8a1e4 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_sw.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_bottom_window_sw.json @@ -14,15 +14,15 @@ "from": [0, 4, 4], "to": [1, 16, 16], "faces": { - "north": {"uv": [12, 0, 13, 12], "texture": "#1"}, + "north": {"uv": [4, 0, 5, 12], "texture": "#1"}, "east": {"uv": [0, 0, 12, 12], "texture": "#1"}, "west": {"uv": [4, 0, 16, 12], "texture": "#1"} } }, { "name": "Window", - "from": [12, 4, 15], - "to": [16, 16, 15], + "from": [12, 4, 15.05], + "to": [16, 16, 15.05], "faces": { "north": {"uv": [4, 4, 8, 16], "texture": "#3"}, "south": {"uv": [0, 4, 4, 16], "texture": "#3"} @@ -30,8 +30,8 @@ }, { "name": "Window", - "from": [1, 4, 0], - "to": [1, 16, 4], + "from": [0.95, 4, 0], + "to": [0.95, 16, 4], "faces": { "east": {"uv": [0, 4, 4, 16], "texture": "#3"}, "west": {"uv": [4, 4, 8, 16], "texture": "#3"} @@ -43,7 +43,7 @@ "to": [12, 16, 16], "faces": { "north": {"uv": [4, 0, 16, 12], "texture": "#1"}, - "east": {"uv": [3, 0, 4, 12], "texture": "#1"}, + "east": {"uv": [11, 0, 12, 12], "texture": "#1"}, "south": {"uv": [0, 0, 12, 12], "texture": "#1"} } }, diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window.json b/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window.json index 5f62b589c..c0b365f15 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window.json @@ -14,7 +14,7 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, "faces": { "north": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "north"}, - "east": {"uv": [12, 0, 13, 16], "texture": "#1", "cullface": "north"}, + "east": {"uv": [0, 0, 1, 16], "texture": "#1", "cullface": "north"}, "south": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "north"} } }, @@ -24,7 +24,7 @@ "to": [16, 16, 4], "faces": { "east": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "east"}, - "south": {"uv": [12, 0, 13, 16], "texture": "#1", "cullface": "east"}, + "south": {"uv": [0, 0, 1, 16], "texture": "#1", "cullface": "east"}, "west": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "east"} } }, @@ -35,7 +35,7 @@ "faces": { "north": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "south"}, "south": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "south"}, - "west": {"uv": [12, 0, 13, 16], "texture": "#1", "cullface": "south"} + "west": {"uv": [0, 0, 1, 16], "texture": "#1", "cullface": "south"} } }, { @@ -43,15 +43,15 @@ "from": [0, 0, 12], "to": [1, 16, 16], "faces": { - "north": {"uv": [12, 0, 13, 16], "texture": "#1", "cullface": "west"}, + "north": {"uv": [0, 0, 1, 16], "texture": "#1", "cullface": "west"}, "east": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "west"}, "west": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "west"} } }, { "name": "Window", - "from": [4, 0, 1], - "to": [12, 16, 1], + "from": [4, 0, 0.95], + "to": [12, 16, 0.95], "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, "faces": { "north": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "north"}, @@ -60,8 +60,8 @@ }, { "name": "Window", - "from": [15, 0, 4], - "to": [15, 16, 12], + "from": [15.05, 0, 4], + "to": [15.05, 16, 12], "faces": { "east": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "east"}, "west": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "east"} @@ -69,8 +69,8 @@ }, { "name": "Window", - "from": [4, 0, 15], - "to": [12, 16, 15], + "from": [4, 0, 15.05], + "to": [12, 16, 15.05], "faces": { "north": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "south"}, "south": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "south"} @@ -78,8 +78,8 @@ }, { "name": "Window", - "from": [1, 0, 4], - "to": [1, 16, 12], + "from": [0.95, 0, 4], + "to": [0.95, 16, 12], "faces": { "east": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "west"}, "west": {"uv": [8, 0, 16, 16], "texture": "#3", "cullface": "west"} @@ -93,7 +93,7 @@ "faces": { "north": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "north"}, "south": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "north"}, - "west": {"uv": [3, 0, 4, 16], "texture": "#1", "cullface": "north"} + "west": {"uv": [15, 0, 16, 16], "texture": "#1", "cullface": "north"} } }, { @@ -101,7 +101,7 @@ "from": [15, 0, 12], "to": [16, 16, 16], "faces": { - "north": {"uv": [3, 0, 4, 16], "texture": "#1", "cullface": "east"}, + "north": {"uv": [15, 0, 16, 16], "texture": "#1", "cullface": "east"}, "east": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "east"}, "west": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "east"} } @@ -112,7 +112,7 @@ "to": [4, 16, 16], "faces": { "north": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "south"}, - "east": {"uv": [3, 0, 4, 16], "texture": "#1", "cullface": "south"}, + "east": {"uv": [15, 0, 16, 16], "texture": "#1", "cullface": "south"}, "south": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "south"} } }, @@ -122,7 +122,7 @@ "to": [1, 16, 4], "faces": { "east": {"uv": [12, 0, 16, 16], "texture": "#1", "cullface": "west"}, - "south": {"uv": [3, 0, 4, 16], "texture": "#1", "cullface": "west"}, + "south": {"uv": [15, 0, 16, 16], "texture": "#1", "cullface": "west"}, "west": {"uv": [0, 0, 4, 16], "texture": "#1", "cullface": "west"} } } @@ -131,6 +131,7 @@ { "name": "tank", "origin": [8, 8, -23], + "color": 0, "children": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] } ] diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_ne.json b/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_ne.json index bca53a94d..351267630 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_ne.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_ne.json @@ -13,14 +13,14 @@ "to": [16, 16, 12], "faces": { "east": {"uv": [4, 0, 16, 16], "texture": "#1"}, - "south": {"uv": [12, 0, 13, 16], "texture": "#1"}, + "south": {"uv": [4, 0, 5, 16], "texture": "#1"}, "west": {"uv": [0, 0, 12, 16], "texture": "#1"} } }, { "name": "Window", - "from": [0, 0, 1], - "to": [4, 16, 1], + "from": [0, 0, 0.95], + "to": [4, 16, 0.95], "faces": { "north": {"uv": [8, 0, 12, 16], "texture": "#3"}, "south": {"uv": [12, 0, 16, 16], "texture": "#3"} @@ -28,8 +28,8 @@ }, { "name": "Window", - "from": [15, 0, 12], - "to": [15, 16, 16], + "from": [15.05, 0, 12], + "to": [15.05, 16, 16], "faces": { "east": {"uv": [12, 0, 16, 16], "texture": "#3"}, "west": {"uv": [8, 0, 12, 16], "texture": "#3"} @@ -42,7 +42,7 @@ "faces": { "north": {"uv": [0, 0, 12, 16], "texture": "#1"}, "south": {"uv": [4, 0, 16, 16], "texture": "#1"}, - "west": {"uv": [3, 0, 4, 16], "texture": "#1"} + "west": {"uv": [11, 0, 12, 16], "texture": "#1"} } } ], @@ -50,6 +50,7 @@ { "name": "tank", "origin": [8, 8, -23], + "color": 0, "children": [0, 1, 2, 3] } ] diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_nw.json b/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_nw.json index 56e4f161f..6ea7f319c 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_nw.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_nw.json @@ -13,14 +13,14 @@ "to": [12, 16, 1], "faces": { "north": {"uv": [4, 0, 16, 16], "texture": "#1"}, - "east": {"uv": [12, 0, 13, 16], "texture": "#1"}, + "east": {"uv": [4, 0, 5, 16], "texture": "#1"}, "south": {"uv": [0, 0, 12, 16], "texture": "#1"} } }, { "name": "Window", - "from": [1, 0, 12], - "to": [1, 16, 16], + "from": [0.95, 0, 12], + "to": [0.95, 16, 16], "faces": { "east": {"uv": [12, 0, 16, 16], "texture": "#3"}, "west": {"uv": [8, 0, 12, 16], "texture": "#3"} @@ -28,8 +28,8 @@ }, { "name": "Window", - "from": [12, 0, 1], - "to": [16, 16, 1], + "from": [12, 0, 0.95], + "to": [16, 16, 0.95], "faces": { "north": {"uv": [12, 0, 16, 16], "texture": "#3"}, "south": {"uv": [8, 0, 12, 16], "texture": "#3"} @@ -41,7 +41,7 @@ "to": [1, 16, 12], "faces": { "east": {"uv": [4, 0, 16, 16], "texture": "#1"}, - "south": {"uv": [3, 0, 4, 16], "texture": "#1"}, + "south": {"uv": [11, 0, 12, 16], "texture": "#1"}, "west": {"uv": [0, 0, 12, 16], "texture": "#1"} } } @@ -50,6 +50,7 @@ { "name": "tank", "origin": [8, 8, -23], + "color": 0, "children": [0, 1, 2, 3] } ] diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_se.json b/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_se.json index 2ae7111a1..763b55f82 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_se.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_se.json @@ -14,13 +14,13 @@ "faces": { "north": {"uv": [0, 0, 12, 16], "texture": "#1"}, "south": {"uv": [4, 0, 16, 16], "texture": "#1"}, - "west": {"uv": [12, 0, 13, 16], "texture": "#1"} + "west": {"uv": [4, 0, 5, 16], "texture": "#1"} } }, { "name": "Window", - "from": [15, 0, 0], - "to": [15, 16, 4], + "from": [15.05, 0, 0], + "to": [15.05, 16, 4], "faces": { "east": {"uv": [8, 0, 12, 16], "texture": "#3"}, "west": {"uv": [12, 0, 16, 16], "texture": "#3"} @@ -28,8 +28,8 @@ }, { "name": "Window", - "from": [0, 0, 15], - "to": [4, 16, 15], + "from": [0, 0, 15.05], + "to": [4, 16, 15.05], "faces": { "north": {"uv": [8, 0, 12, 16], "texture": "#3"}, "south": {"uv": [12, 0, 16, 16], "texture": "#3"} @@ -40,7 +40,7 @@ "from": [15, 0, 4], "to": [16, 16, 16], "faces": { - "north": {"uv": [3, 0, 4, 16], "texture": "#1"}, + "north": {"uv": [11, 0, 12, 16], "texture": "#1"}, "east": {"uv": [0, 0, 12, 16], "texture": "#1"}, "west": {"uv": [4, 0, 16, 16], "texture": "#1"} } @@ -50,6 +50,7 @@ { "name": "tank", "origin": [8, 8, -23], + "color": 0, "children": [0, 1, 2, 3] } ] diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_sw.json b/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_sw.json index 44ff9e1a0..6ab4f02c6 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_sw.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_middle_window_sw.json @@ -12,15 +12,15 @@ "from": [0, 0, 4], "to": [1, 16, 16], "faces": { - "north": {"uv": [12, 0, 13, 16], "texture": "#1"}, + "north": {"uv": [4, 0, 5, 16], "texture": "#1"}, "east": {"uv": [0, 0, 12, 16], "texture": "#1"}, "west": {"uv": [4, 0, 16, 16], "texture": "#1"} } }, { "name": "Window", - "from": [12, 0, 15], - "to": [16, 16, 15], + "from": [12, 0, 15.05], + "to": [16, 16, 15.05], "faces": { "north": {"uv": [12, 0, 16, 16], "texture": "#3"}, "south": {"uv": [8, 0, 12, 16], "texture": "#3"} @@ -28,8 +28,8 @@ }, { "name": "Window", - "from": [1, 0, 0], - "to": [1, 16, 4], + "from": [0.95, 0, 0], + "to": [0.95, 16, 4], "faces": { "east": {"uv": [8, 0, 12, 16], "texture": "#3"}, "west": {"uv": [12, 0, 16, 16], "texture": "#3"} @@ -41,7 +41,7 @@ "to": [12, 16, 16], "faces": { "north": {"uv": [4, 0, 16, 16], "texture": "#1"}, - "east": {"uv": [3, 0, 4, 16], "texture": "#1"}, + "east": {"uv": [11, 0, 12, 16], "texture": "#1"}, "south": {"uv": [0, 0, 12, 16], "texture": "#1"} } } @@ -50,6 +50,7 @@ { "name": "tank", "origin": [8, 8, -23], + "color": 0, "children": [0, 1, 2, 3] } ] diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window.json b/src/main/resources/assets/create/models/block/fluid_tank/block_single_window.json index 2d49277a9..e310b9c5e 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_single_window.json @@ -30,7 +30,7 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, "faces": { "north": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "north"}, - "east": {"uv": [12, 4, 13, 12], "texture": "#1", "cullface": "north"}, + "east": {"uv": [8, 4, 9, 12], "texture": "#1", "cullface": "north"}, "south": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "north"} } }, @@ -40,7 +40,7 @@ "to": [16, 12, 4], "faces": { "east": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "east"}, - "south": {"uv": [12, 4, 13, 12], "texture": "#1", "cullface": "east"}, + "south": {"uv": [8, 4, 9, 12], "texture": "#1", "cullface": "east"}, "west": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "east"} } }, @@ -51,7 +51,7 @@ "faces": { "north": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "south"}, "south": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "south"}, - "west": {"uv": [12, 4, 13, 12], "texture": "#1", "cullface": "south"} + "west": {"uv": [8, 4, 9, 12], "texture": "#1", "cullface": "south"} } }, { @@ -59,15 +59,15 @@ "from": [0, 4, 12], "to": [1, 12, 16], "faces": { - "north": {"uv": [12, 4, 13, 12], "texture": "#1", "cullface": "west"}, + "north": {"uv": [8, 4, 9, 12], "texture": "#1", "cullface": "west"}, "east": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "west"}, "west": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "west"} } }, { "name": "Window", - "from": [4, 4, 1], - "to": [12, 12, 1], + "from": [4, 4, 0.95], + "to": [12, 12, 0.95], "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, "faces": { "north": {"uv": [0, 0, 8, 8], "texture": "#5", "cullface": "north"}, @@ -76,8 +76,8 @@ }, { "name": "Window", - "from": [15, 4, 4], - "to": [15, 12, 12], + "from": [15.05, 4, 4], + "to": [15.05, 12, 12], "faces": { "east": {"uv": [0, 0, 8, 8], "texture": "#5", "cullface": "east"}, "west": {"uv": [0, 0, 8, 8], "texture": "#5", "cullface": "east"} @@ -85,8 +85,8 @@ }, { "name": "Window", - "from": [4, 4, 15], - "to": [12, 12, 15], + "from": [4, 4, 15.05], + "to": [12, 12, 15.05], "faces": { "north": {"uv": [0, 0, 8, 8], "texture": "#5", "cullface": "south"}, "south": {"uv": [0, 0, 8, 8], "texture": "#5", "cullface": "south"} @@ -94,8 +94,8 @@ }, { "name": "Window", - "from": [1, 4, 4], - "to": [1, 12, 12], + "from": [0.95, 4, 4], + "to": [0.95, 12, 12], "faces": { "east": {"uv": [0, 0, 8, 8], "texture": "#5", "cullface": "west"}, "west": {"uv": [0, 0, 8, 8], "texture": "#5", "cullface": "west"} @@ -109,7 +109,7 @@ "faces": { "north": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "north"}, "south": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "north"}, - "west": {"uv": [3, 4, 4, 12], "texture": "#1", "cullface": "north"} + "west": {"uv": [7, 4, 8, 12], "texture": "#1", "cullface": "north"} } }, { @@ -117,7 +117,7 @@ "from": [15, 4, 12], "to": [16, 12, 16], "faces": { - "north": {"uv": [3, 4, 4, 12], "texture": "#1", "cullface": "east"}, + "north": {"uv": [7, 4, 8, 12], "texture": "#1", "cullface": "east"}, "east": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "east"}, "west": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "east"} } @@ -128,7 +128,7 @@ "to": [4, 12, 16], "faces": { "north": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "south"}, - "east": {"uv": [3, 4, 4, 12], "texture": "#1", "cullface": "south"}, + "east": {"uv": [7, 4, 8, 12], "texture": "#1", "cullface": "south"}, "south": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "south"} } }, @@ -138,7 +138,7 @@ "to": [1, 12, 4], "faces": { "east": {"uv": [12, 4, 16, 12], "texture": "#1", "cullface": "west"}, - "south": {"uv": [3, 4, 4, 12], "texture": "#1", "cullface": "west"}, + "south": {"uv": [7, 4, 8, 12], "texture": "#1", "cullface": "west"}, "west": {"uv": [0, 4, 4, 12], "texture": "#1", "cullface": "west"} } }, diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_ne.json b/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_ne.json index 63f80f0ed..90c529e92 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_ne.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_ne.json @@ -16,14 +16,14 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "east": {"uv": [4, 4, 16, 12], "texture": "#1"}, - "south": {"uv": [12, 4, 13, 12], "texture": "#1"}, + "south": {"uv": [4, 4, 5, 12], "texture": "#1"}, "west": {"uv": [0, 4, 12, 12], "texture": "#1"} } }, { "name": "Window", - "from": [0, 4, 1], - "to": [4, 12, 1], + "from": [0, 4, 0.95], + "to": [4, 12, 0.95], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "north": {"uv": [0, 0, 4, 8], "texture": "#5"}, @@ -32,8 +32,8 @@ }, { "name": "Window", - "from": [15, 4, 12], - "to": [15, 12, 16], + "from": [15.05, 4, 12], + "to": [15.05, 12, 16], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "east": {"uv": [4, 0, 8, 8], "texture": "#5"}, @@ -48,7 +48,7 @@ "faces": { "north": {"uv": [0, 4, 12, 12], "texture": "#1"}, "south": {"uv": [4, 4, 16, 12], "texture": "#1"}, - "west": {"uv": [3, 4, 4, 12], "texture": "#1"} + "west": {"uv": [11, 4, 12, 12], "texture": "#1"} } }, { diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_nw.json b/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_nw.json index 7c09e1e5b..2aaba7d6b 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_nw.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_nw.json @@ -16,14 +16,14 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "north": {"uv": [4, 4, 16, 12], "texture": "#1"}, - "east": {"uv": [12, 4, 13, 12], "texture": "#1"}, + "east": {"uv": [4, 4, 5, 12], "texture": "#1"}, "south": {"uv": [0, 4, 12, 12], "texture": "#1"} } }, { "name": "Window", - "from": [1, 4, 12], - "to": [1, 12, 16], + "from": [0.95, 4, 12], + "to": [0.95, 12, 16], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "east": {"uv": [4, 0, 8, 8], "texture": "#5"}, @@ -32,8 +32,8 @@ }, { "name": "Window", - "from": [12, 4, 1], - "to": [16, 12, 1], + "from": [12, 4, 0.95], + "to": [16, 12, 0.95], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "north": {"uv": [4, 0, 8, 8], "texture": "#5"}, @@ -47,7 +47,7 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "east": {"uv": [4, 4, 16, 12], "texture": "#1"}, - "south": {"uv": [3, 4, 4, 12], "texture": "#1"}, + "south": {"uv": [11, 4, 12, 12], "texture": "#1"}, "west": {"uv": [0, 4, 12, 12], "texture": "#1"} } }, diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_se.json b/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_se.json index 66c7fedee..0550d1248 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_se.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_se.json @@ -17,13 +17,13 @@ "faces": { "north": {"uv": [0, 4, 12, 12], "texture": "#1"}, "south": {"uv": [4, 4, 16, 12], "texture": "#1"}, - "west": {"uv": [12, 4, 13, 12], "texture": "#1"} + "west": {"uv": [4, 4, 5, 12], "texture": "#1"} } }, { "name": "Window", - "from": [15, 4, 0], - "to": [15, 12, 4], + "from": [15.05, 4, 0], + "to": [15.05, 12, 4], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "east": {"uv": [0, 0, 4, 8], "texture": "#5"}, @@ -32,8 +32,8 @@ }, { "name": "Window", - "from": [0, 4, 15], - "to": [4, 12, 15], + "from": [0, 4, 15.05], + "to": [4, 12, 15.05], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "north": {"uv": [0, 0, 4, 8], "texture": "#5"}, @@ -46,7 +46,7 @@ "to": [16, 12, 16], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { - "north": {"uv": [3, 4, 4, 12], "texture": "#1"}, + "north": {"uv": [11, 4, 12, 12], "texture": "#1"}, "east": {"uv": [0, 4, 12, 12], "texture": "#1"}, "west": {"uv": [4, 4, 16, 12], "texture": "#1"} } diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_sw.json b/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_sw.json index cb3f29c79..ec9958080 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_sw.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_single_window_sw.json @@ -15,15 +15,15 @@ "to": [1, 12, 16], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { - "north": {"uv": [12, 4, 13, 12], "texture": "#1"}, + "north": {"uv": [4, 4, 5, 12], "texture": "#1"}, "east": {"uv": [0, 4, 12, 12], "texture": "#1"}, "west": {"uv": [4, 4, 16, 12], "texture": "#1"} } }, { "name": "Window", - "from": [12, 4, 15], - "to": [16, 12, 15], + "from": [12, 4, 15.05], + "to": [16, 12, 15.05], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "north": {"uv": [4, 0, 8, 8], "texture": "#5"}, @@ -32,8 +32,8 @@ }, { "name": "Window", - "from": [1, 4, 0], - "to": [1, 12, 4], + "from": [0.95, 4, 0], + "to": [0.95, 12, 4], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "east": {"uv": [0, 0, 4, 8], "texture": "#5"}, @@ -47,7 +47,7 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "north": {"uv": [4, 4, 16, 12], "texture": "#1"}, - "east": {"uv": [3, 4, 4, 12], "texture": "#1"}, + "east": {"uv": [11, 4, 12, 12], "texture": "#1"}, "south": {"uv": [0, 4, 12, 12], "texture": "#1"} } }, diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window.json b/src/main/resources/assets/create/models/block/fluid_tank/block_top_window.json index cd53f57ef..7b837cf08 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_top_window.json @@ -30,7 +30,7 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, "faces": { "north": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "north"}, - "east": {"uv": [12, 4, 13, 16], "texture": "#1", "cullface": "north"}, + "east": {"uv": [0, 4, 1, 16], "texture": "#1", "cullface": "north"}, "south": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "north"} } }, @@ -40,7 +40,7 @@ "to": [16, 12, 4], "faces": { "east": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "east"}, - "south": {"uv": [12, 4, 13, 16], "texture": "#1", "cullface": "east"}, + "south": {"uv": [0, 4, 1, 16], "texture": "#1", "cullface": "east"}, "west": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "east"} } }, @@ -51,7 +51,7 @@ "faces": { "north": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "south"}, "south": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "south"}, - "west": {"uv": [12, 4, 13, 16], "texture": "#1", "cullface": "south"} + "west": {"uv": [0, 4, 1, 16], "texture": "#1", "cullface": "south"} } }, { @@ -59,15 +59,15 @@ "from": [0, 0, 12], "to": [1, 12, 16], "faces": { - "north": {"uv": [12, 4, 13, 16], "texture": "#1", "cullface": "west"}, + "north": {"uv": [0, 4, 1, 16], "texture": "#1", "cullface": "west"}, "east": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "west"}, "west": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "west"} } }, { "name": "Window", - "from": [4, 0, 1], - "to": [12, 12, 1], + "from": [4, 0, 0.95], + "to": [12, 12, 0.95], "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, "faces": { "north": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "north"}, @@ -76,8 +76,8 @@ }, { "name": "Window", - "from": [15, 0, 4], - "to": [15, 12, 12], + "from": [15.05, 0, 4], + "to": [15.05, 12, 12], "faces": { "east": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "east"}, "west": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "east"} @@ -85,8 +85,8 @@ }, { "name": "Window", - "from": [4, 0, 15], - "to": [12, 12, 15], + "from": [4, 0, 15.05], + "to": [12, 12, 15.05], "faces": { "north": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "south"}, "south": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "south"} @@ -94,8 +94,8 @@ }, { "name": "Window", - "from": [1, 0, 4], - "to": [1, 12, 12], + "from": [0.95, 0, 4], + "to": [0.95, 12, 12], "faces": { "east": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "west"}, "west": {"uv": [0, 0, 8, 12], "texture": "#3", "cullface": "west"} @@ -109,7 +109,7 @@ "faces": { "north": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "north"}, "south": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "north"}, - "west": {"uv": [3, 4, 4, 16], "texture": "#1", "cullface": "north"} + "west": {"uv": [15, 4, 16, 16], "texture": "#1", "cullface": "north"} } }, { @@ -117,7 +117,7 @@ "from": [15, 0, 12], "to": [16, 12, 16], "faces": { - "north": {"uv": [3, 4, 4, 16], "texture": "#1", "cullface": "east"}, + "north": {"uv": [15, 4, 16, 16], "texture": "#1", "cullface": "east"}, "east": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "east"}, "west": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "east"} } @@ -128,7 +128,7 @@ "to": [4, 12, 16], "faces": { "north": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "south"}, - "east": {"uv": [3, 4, 4, 16], "texture": "#1", "cullface": "south"}, + "east": {"uv": [15, 4, 16, 16], "texture": "#1", "cullface": "south"}, "south": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "south"} } }, @@ -138,7 +138,7 @@ "to": [1, 12, 4], "faces": { "east": {"uv": [12, 4, 16, 16], "texture": "#1", "cullface": "west"}, - "south": {"uv": [3, 4, 4, 16], "texture": "#1", "cullface": "west"}, + "south": {"uv": [15, 4, 16, 16], "texture": "#1", "cullface": "west"}, "west": {"uv": [0, 4, 4, 16], "texture": "#1", "cullface": "west"} } } diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_ne.json b/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_ne.json index a09758c42..26791cb84 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_ne.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_ne.json @@ -16,14 +16,14 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "east": {"uv": [4, 4, 16, 16], "texture": "#1"}, - "south": {"uv": [12, 4, 13, 16], "texture": "#1"}, + "south": {"uv": [4, 4, 5, 16], "texture": "#1"}, "west": {"uv": [0, 4, 12, 16], "texture": "#1"} } }, { "name": "Window", - "from": [0, 0, 1], - "to": [4, 12, 1], + "from": [0, 0, 0.95], + "to": [4, 12, 0.95], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "north": {"uv": [0, 0, 4, 12], "texture": "#3"}, @@ -32,8 +32,8 @@ }, { "name": "Window", - "from": [15, 0, 12], - "to": [15, 12, 16], + "from": [15.05, 0, 12], + "to": [15.05, 12, 16], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "east": {"uv": [4, 0, 8, 12], "texture": "#3"}, @@ -48,7 +48,7 @@ "faces": { "north": {"uv": [0, 4, 12, 16], "texture": "#1"}, "south": {"uv": [4, 4, 16, 16], "texture": "#1"}, - "west": {"uv": [3, 4, 4, 16], "texture": "#1"} + "west": {"uv": [11, 4, 12, 16], "texture": "#1"} } }, { diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_nw.json b/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_nw.json index 5d8e03a2d..c00c753bc 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_nw.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_nw.json @@ -16,14 +16,14 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "north": {"uv": [4, 4, 16, 16], "texture": "#1"}, - "east": {"uv": [12, 4, 13, 16], "texture": "#1"}, + "east": {"uv": [4, 4, 5, 16], "texture": "#1"}, "south": {"uv": [0, 4, 12, 16], "texture": "#1"} } }, { "name": "Window", - "from": [1, 0, 12], - "to": [1, 12, 16], + "from": [0.95, 0, 12], + "to": [0.95, 12, 16], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "east": {"uv": [4, 0, 8, 12], "texture": "#3"}, @@ -32,8 +32,8 @@ }, { "name": "Window", - "from": [12, 0, 1], - "to": [16, 12, 1], + "from": [12, 0, 0.95], + "to": [16, 12, 0.95], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "north": {"uv": [4, 0, 8, 12], "texture": "#3"}, @@ -47,7 +47,7 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "east": {"uv": [4, 4, 16, 16], "texture": "#1"}, - "south": {"uv": [3, 4, 4, 16], "texture": "#1"}, + "south": {"uv": [11, 4, 12, 16], "texture": "#1"}, "west": {"uv": [0, 4, 12, 16], "texture": "#1"} } }, diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_se.json b/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_se.json index 6c9f541fa..85616d16e 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_se.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_se.json @@ -17,13 +17,13 @@ "faces": { "north": {"uv": [0, 4, 12, 16], "texture": "#1"}, "south": {"uv": [4, 4, 16, 16], "texture": "#1"}, - "west": {"uv": [12, 4, 13, 16], "texture": "#1"} + "west": {"uv": [4, 4, 5, 16], "texture": "#1"} } }, { "name": "Window", - "from": [15, 0, 0], - "to": [15, 12, 4], + "from": [15.05, 0, 0], + "to": [15.05, 12, 4], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "east": {"uv": [0, 0, 4, 12], "texture": "#3"}, @@ -32,8 +32,8 @@ }, { "name": "Window", - "from": [0, 0, 15], - "to": [4, 12, 15], + "from": [0, 0, 15.05], + "to": [4, 12, 15.05], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "north": {"uv": [0, 0, 4, 12], "texture": "#3"}, @@ -46,7 +46,7 @@ "to": [16, 12, 16], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { - "north": {"uv": [3, 4, 4, 16], "texture": "#1"}, + "north": {"uv": [11, 4, 12, 16], "texture": "#1"}, "east": {"uv": [0, 4, 12, 16], "texture": "#1"}, "west": {"uv": [4, 4, 16, 16], "texture": "#1"} } diff --git a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_sw.json b/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_sw.json index 77dbb3982..ed8c3da61 100644 --- a/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_sw.json +++ b/src/main/resources/assets/create/models/block/fluid_tank/block_top_window_sw.json @@ -15,15 +15,15 @@ "to": [1, 12, 16], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { - "north": {"uv": [12, 4, 13, 16], "texture": "#1"}, + "north": {"uv": [4, 4, 5, 16], "texture": "#1"}, "east": {"uv": [0, 4, 12, 16], "texture": "#1"}, "west": {"uv": [4, 4, 16, 16], "texture": "#1"} } }, { "name": "Window", - "from": [12, 0, 15], - "to": [16, 12, 15], + "from": [12, 0, 15.05], + "to": [16, 12, 15.05], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "north": {"uv": [4, 0, 8, 12], "texture": "#3"}, @@ -32,8 +32,8 @@ }, { "name": "Window", - "from": [1, 0, 0], - "to": [1, 12, 4], + "from": [0.95, 0, 0], + "to": [0.95, 12, 4], "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "east": {"uv": [0, 0, 4, 12], "texture": "#3"}, @@ -47,7 +47,7 @@ "rotation": {"angle": 0, "axis": "y", "origin": [8, 4, 8]}, "faces": { "north": {"uv": [4, 4, 16, 16], "texture": "#1"}, - "east": {"uv": [3, 4, 4, 16], "texture": "#1"}, + "east": {"uv": [11, 4, 12, 16], "texture": "#1"}, "south": {"uv": [0, 4, 12, 16], "texture": "#1"} } }, diff --git a/src/main/resources/assets/create/models/block/funnel/block_horizontal.json b/src/main/resources/assets/create/models/block/funnel/block_horizontal.json index 1ebed7ae6..42a525dc0 100644 --- a/src/main/resources/assets/create/models/block/funnel/block_horizontal.json +++ b/src/main/resources/assets/create/models/block/funnel/block_horizontal.json @@ -73,7 +73,7 @@ }, { "from": [1.9, 0, 18], - "to": [14.1, 10, 12], + "to": [14.1, 10.05, 12], "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 0, 12]}, "faces": { "east": {"uv": [13, 6, 16, 11], "rotation": 180, "texture": "#base"}, diff --git a/src/main/resources/assets/create/models/block/funnel/block_vertical.json b/src/main/resources/assets/create/models/block/funnel/block_vertical.json index 00e28abdb..bee49ffc8 100644 --- a/src/main/resources/assets/create/models/block/funnel/block_vertical.json +++ b/src/main/resources/assets/create/models/block/funnel/block_vertical.json @@ -23,33 +23,33 @@ } }, { - "from": [1, 5, 2], - "to": [2, 10, 14], - "rotation": {"angle": 22.5, "axis": "z", "origin": [2, 10, 8]}, + "from": [0.95, 5, 2], + "to": [1.95, 10, 14], + "rotation": {"angle": 22.5, "axis": "z", "origin": [1.95, 10, 8]}, "faces": { "east": {"uv": [12, 0, 14.5, 6], "rotation": 90, "texture": "#base"} } }, { - "from": [14, 5, 2], - "to": [15, 10, 14], - "rotation": {"angle": -22.5, "axis": "z", "origin": [14, 10, 8]}, + "from": [14.05, 5, 2], + "to": [15.05, 10, 14], + "rotation": {"angle": -22.5, "axis": "z", "origin": [14.05, 10, 8]}, "faces": { "west": {"uv": [12, 0, 14.5, 6], "rotation": 90, "texture": "#base"} } }, { - "from": [2, 5, 14], - "to": [14, 10, 15], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 14]}, + "from": [2, 5, 14.05], + "to": [14, 10, 15.05], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 14.05]}, "faces": { "north": {"uv": [12, 0, 14.5, 6], "rotation": 90, "texture": "#base"} } }, { - "from": [2, 5, 1], - "to": [14, 10, 2], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 2]}, + "from": [2, 5, 0.95], + "to": [14, 10, 1.95], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 1.95]}, "faces": { "south": {"uv": [12, 0, 14.5, 6], "rotation": 90, "texture": "#base"} } diff --git a/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json b/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json index 613405f69..7a7592825 100644 --- a/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json +++ b/src/main/resources/assets/create/models/block/funnel/block_vertical_filterless.json @@ -23,33 +23,33 @@ } }, { - "from": [1, 5, 2], - "to": [2, 10, 14], - "rotation": {"angle": 22.5, "axis": "z", "origin": [2, 10, 8]}, + "from": [0.95, 5, 2], + "to": [1.95, 10, 14], + "rotation": {"angle": 22.5, "axis": "z", "origin": [1.95, 10, 8]}, "faces": { "east": {"uv": [12, 0, 14.5, 6], "rotation": 90, "texture": "#base"} } }, { - "from": [14, 5, 2], - "to": [15, 10, 14], - "rotation": {"angle": -22.5, "axis": "z", "origin": [14, 10, 8]}, + "from": [14.05, 5, 2], + "to": [15.05, 10, 14], + "rotation": {"angle": -22.5, "axis": "z", "origin": [14.05, 10, 8]}, "faces": { "west": {"uv": [12, 0, 14.5, 6], "rotation": 90, "texture": "#base"} } }, { - "from": [2, 5, 14], - "to": [14, 10, 15], - "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 14]}, + "from": [2, 5, 14.05], + "to": [14, 10, 15.05], + "rotation": {"angle": 22.5, "axis": "x", "origin": [8, 10, 14.05]}, "faces": { "north": {"uv": [12, 0, 14.5, 6], "rotation": 90, "texture": "#base"} } }, { - "from": [2, 5, 1], - "to": [14, 10, 2], - "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 2]}, + "from": [2, 5, 0.95], + "to": [14, 10, 1.95], + "rotation": {"angle": -22.5, "axis": "x", "origin": [8, 10, 1.95]}, "faces": { "south": {"uv": [12, 0, 14.5, 6], "rotation": 90, "texture": "#base"} } diff --git a/src/main/resources/assets/create/models/block/funnel/flap.json b/src/main/resources/assets/create/models/block/funnel/flap.json index 3179cbdac..bbf33e38c 100644 --- a/src/main/resources/assets/create/models/block/funnel/flap.json +++ b/src/main/resources/assets/create/models/block/funnel/flap.json @@ -6,8 +6,8 @@ "elements": [ { "name": "F4", - "from": [11, 0, 9], - "to": [14, 10, 10], + "from": [10.975, 0, 9], + "to": [14.025, 10, 10], "rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]}, "faces": { "north": {"uv": [6, 9.5, 7.5, 14.5], "texture": "#4"}, diff --git a/src/main/resources/assets/create/models/block/gantry_carriage/horizontal.json b/src/main/resources/assets/create/models/block/gantry_carriage/horizontal.json index 879831f7b..d45ac4f84 100644 --- a/src/main/resources/assets/create/models/block/gantry_carriage/horizontal.json +++ b/src/main/resources/assets/create/models/block/gantry_carriage/horizontal.json @@ -52,8 +52,8 @@ }, { "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 12], + "from": [0.95, 1, 2], + "to": [15.2, 15, 12], "faces": { "north": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#opening"}, "east": {"uv": [1, 4, 15, 14], "rotation": 270, "texture": "#opening"}, diff --git a/src/main/resources/assets/create/models/block/gantry_carriage/vertical.json b/src/main/resources/assets/create/models/block/gantry_carriage/vertical.json index c337440d7..00354d961 100644 --- a/src/main/resources/assets/create/models/block/gantry_carriage/vertical.json +++ b/src/main/resources/assets/create/models/block/gantry_carriage/vertical.json @@ -52,8 +52,8 @@ }, { "name": "Core", - "from": [1, 1, 2], - "to": [15, 15, 12], + "from": [1, 0.95, 2], + "to": [15, 15.05, 12], "faces": { "north": {"uv": [0, 0, 0, 0], "rotation": 180, "texture": "#opening"}, "east": {"uv": [0, 0, 0, 0], "rotation": 270, "texture": "#opening"}, diff --git a/src/main/resources/assets/create/models/block/gauge/base.json b/src/main/resources/assets/create/models/block/gauge/base.json index 00db43e7e..6ea216f22 100644 --- a/src/main/resources/assets/create/models/block/gauge/base.json +++ b/src/main/resources/assets/create/models/block/gauge/base.json @@ -8,8 +8,8 @@ "elements": [ { "name": "GaugeBody", - "from": [2, 2, 1], - "to": [14, 14, 15], + "from": [1.95, 2, 0.95], + "to": [14.05, 14, 15.05], "faces": { "north": {"uv": [0, 10, 6, 16], "texture": "#2"}, "east": {"uv": [9, 10, 16, 16], "texture": "#2"}, diff --git a/src/main/resources/assets/create/models/block/gauge/base_wall.json b/src/main/resources/assets/create/models/block/gauge/base_wall.json index 32a8003ba..efd0a1be5 100644 --- a/src/main/resources/assets/create/models/block/gauge/base_wall.json +++ b/src/main/resources/assets/create/models/block/gauge/base_wall.json @@ -8,8 +8,8 @@ "elements": [ { "name": "GaugeBody", - "from": [2, 2, 1], - "to": [14, 14, 15], + "from": [2, 1.95, 0.95], + "to": [14, 14.05, 15.05], "faces": { "north": {"uv": [0, 10, 6, 16], "texture": "#2"}, "east": {"uv": [9, 10, 16, 16], "texture": "#2"}, diff --git a/src/main/resources/assets/create/models/block/gearbox/block.json b/src/main/resources/assets/create/models/block/gearbox/block.json index e3fe13736..0e67eb0a2 100644 --- a/src/main/resources/assets/create/models/block/gearbox/block.json +++ b/src/main/resources/assets/create/models/block/gearbox/block.json @@ -22,8 +22,8 @@ }, { "name": "Core", - "from": [1, 2, 1], - "to": [15, 14, 15], + "from": [0.95, 2, 0.95], + "to": [15.05, 14, 15.05], "faces": { "north": {"uv": [1, 2, 15, 14], "texture": "#1"}, "east": {"uv": [1, 2, 15, 14], "texture": "#1"}, diff --git a/src/main/resources/assets/create/models/block/mechanical_drill/block.json b/src/main/resources/assets/create/models/block/mechanical_drill/block.json index 3308bbdd7..807965b16 100644 --- a/src/main/resources/assets/create/models/block/mechanical_drill/block.json +++ b/src/main/resources/assets/create/models/block/mechanical_drill/block.json @@ -11,8 +11,8 @@ "elements": [ { "name": "Body", - "from": [2, 1, 2], - "to": [14, 9, 14], + "from": [2, 0.95, 2], + "to": [14, 9.05, 14], "faces": { "up": {"uv": [2, 2, 14, 14], "texture": "#4"}, "down": {"uv": [2, 2, 14, 14], "rotation": 180, "texture": "#gearbox"} diff --git a/src/main/resources/assets/create/models/block/mechanical_drill/head.json b/src/main/resources/assets/create/models/block/mechanical_drill/head.json index a29a6203f..23d80c50e 100644 --- a/src/main/resources/assets/create/models/block/mechanical_drill/head.json +++ b/src/main/resources/assets/create/models/block/mechanical_drill/head.json @@ -27,25 +27,11 @@ "to": [11, 11, 12], "rotation": {"angle": 45, "axis": "z", "origin": [8, 8, 8]}, "faces": { - "east": {"uv": [0, 0, 6, 3], "rotation": 270, "texture": "#10"}, + "east": {"uv": [1, 1, 7, 4], "rotation": 270, "texture": "#10"}, "south": {"uv": [5, 0, 11, 6], "texture": "#2"}, - "west": {"uv": [0, 0, 6, 3], "rotation": 90, "texture": "#10"}, - "up": {"uv": [0, 0, 6, 3], "rotation": 180, "texture": "#10"}, - "down": {"uv": [0, 0, 6, 3], "texture": "#10"} - } - }, - { - "name": "Top", - "from": [6, 11, 9], - "to": [10, 13, 13], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 4, 2], "texture": "#10"}, - "east": {"uv": [0, 1, 4, 3], "texture": "#10"}, - "south": {"uv": [0, 0, 2, 4], "rotation": 90, "texture": "#10"}, - "west": {"uv": [0, 1, 4, 3], "texture": "#10"}, - "up": {"uv": [0, 0, 4, 4], "rotation": 90, "texture": "#10"}, - "down": {"uv": [0, 0, 4, 4], "texture": "#10"} + "west": {"uv": [1, 1, 7, 4], "rotation": 90, "texture": "#10"}, + "up": {"uv": [1, 1, 7, 4], "rotation": 180, "texture": "#10"}, + "down": {"uv": [1, 1, 7, 4], "texture": "#10"} } }, { @@ -55,39 +41,53 @@ "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]}, "faces": { "north": {"uv": [0, 0, 4, 2], "texture": "#10"}, - "east": {"uv": [0, 1, 4, 3], "rotation": 180, "texture": "#10"}, - "south": {"uv": [0, 0, 2, 4], "rotation": 90, "texture": "#10"}, - "west": {"uv": [0, 1, 4, 3], "rotation": 180, "texture": "#10"}, + "east": {"uv": [0, 3, 4, 1], "rotation": 180, "texture": "#10"}, + "south": {"uv": [16, 4, 14, 0], "rotation": 90, "texture": "#10"}, + "west": {"uv": [4, 3, 0, 1], "rotation": 180, "texture": "#10"}, "up": {"uv": [0, 0, 4, 4], "texture": "#10"}, - "down": {"uv": [0, 0, 4, 4], "rotation": 90, "texture": "#10"} + "down": {"uv": [4, 4, 0, 0], "rotation": 90, "texture": "#10"} } }, { - "name": "Left", - "from": [3, 6, 9], - "to": [5, 10, 13], - "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]}, - "faces": { - "north": {"uv": [0, 0, 2, 4], "texture": "#10"}, - "east": {"uv": [0, 0, 4, 4], "texture": "#10"}, - "south": {"uv": [0, 0, 2, 4], "texture": "#10"}, - "west": {"uv": [0, 0, 4, 4], "texture": "#10"}, - "up": {"uv": [0, 1, 4, 3], "rotation": 270, "texture": "#10"}, - "down": {"uv": [0, 1, 4, 3], "rotation": 270, "texture": "#10"} - } - }, - { - "name": "Right", + "name": "Bottom", "from": [11, 6, 9], "to": [13, 10, 13], "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [0, 0, 2, 4], "texture": "#10"}, - "east": {"uv": [0, 0, 4, 4], "texture": "#10"}, - "south": {"uv": [0, 0, 2, 4], "texture": "#10"}, - "west": {"uv": [0, 0, 4, 4], "texture": "#10"}, - "up": {"uv": [0, 1, 4, 3], "rotation": 90, "texture": "#10"}, - "down": {"uv": [0, 1, 4, 3], "rotation": 90, "texture": "#10"} + "north": {"uv": [0, 0, 4, 2], "rotation": 90, "texture": "#10"}, + "east": {"uv": [4, 4, 0, 0], "texture": "#10"}, + "south": {"uv": [16, 4, 14, 0], "texture": "#10"}, + "west": {"uv": [0, 0, 4, 4], "rotation": 270, "texture": "#10"}, + "up": {"uv": [0, 3, 4, 1], "rotation": 90, "texture": "#10"}, + "down": {"uv": [4, 3, 0, 1], "rotation": 90, "texture": "#10"} + } + }, + { + "name": "Bottom", + "from": [6, 11, 9], + "to": [10, 13, 13], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 4, 2], "rotation": 180, "texture": "#10"}, + "east": {"uv": [4, 3, 0, 1], "texture": "#10"}, + "south": {"uv": [16, 4, 14, 0], "rotation": 270, "texture": "#10"}, + "west": {"uv": [0, 3, 4, 1], "texture": "#10"}, + "up": {"uv": [4, 4, 0, 0], "rotation": 270, "texture": "#10"}, + "down": {"uv": [0, 0, 4, 4], "rotation": 180, "texture": "#10"} + } + }, + { + "name": "Bottom", + "from": [3, 6, 9], + "to": [5, 10, 13], + "rotation": {"angle": -45, "axis": "z", "origin": [8, 8, 8]}, + "faces": { + "north": {"uv": [0, 0, 4, 2], "rotation": 270, "texture": "#10"}, + "east": {"uv": [0, 0, 4, 4], "rotation": 90, "texture": "#10"}, + "south": {"uv": [16, 4, 14, 0], "rotation": 180, "texture": "#10"}, + "west": {"uv": [4, 4, 0, 0], "rotation": 180, "texture": "#10"}, + "up": {"uv": [4, 3, 0, 1], "rotation": 270, "texture": "#10"}, + "down": {"uv": [0, 3, 4, 1], "rotation": 270, "texture": "#10"} } }, { diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/extended/block.json b/src/main/resources/assets/create/models/block/mechanical_piston/extended/block.json index 2ddf55f1b..93116acf7 100644 --- a/src/main/resources/assets/create/models/block/mechanical_piston/extended/block.json +++ b/src/main/resources/assets/create/models/block/mechanical_piston/extended/block.json @@ -26,8 +26,8 @@ }, { "name": "Inner", - "from": [2, 2, 1], - "to": [14, 12, 15], + "from": [2, 2, 0.95], + "to": [14, 12, 15.05], "faces": { "north": {"uv": [2, 4, 14, 14], "texture": "#2"}, "south": {"uv": [2, 4, 14, 14], "texture": "#2"}, @@ -41,7 +41,7 @@ "faces": { "north": {"uv": [14, 4, 16, 14], "texture": "#0"}, "east": {"uv": [0, 4, 16, 14], "texture": "#0"}, - "south": {"uv": [16, 4, 14, 14], "texture": "#0"}, + "south": {"uv": [0, 4, 2, 14], "texture": "#0"}, "west": {"uv": [0, 4, 16, 14], "texture": "#0"}, "up": {"uv": [0, 2, 16, 0], "rotation": 270, "texture": "#0"} } @@ -51,7 +51,7 @@ "from": [14, 2, 0], "to": [16, 12, 16], "faces": { - "north": {"uv": [16, 4, 14, 14], "texture": "#0"}, + "north": {"uv": [0, 4, 2, 14], "texture": "#0"}, "east": {"uv": [0, 4, 16, 14], "texture": "#0"}, "south": {"uv": [14, 4, 16, 14], "texture": "#0"}, "west": {"uv": [0, 4, 16, 14], "texture": "#0"}, diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/extended/block_rotated.json b/src/main/resources/assets/create/models/block/mechanical_piston/extended/block_rotated.json index afc0e3f79..ec769a464 100644 --- a/src/main/resources/assets/create/models/block/mechanical_piston/extended/block_rotated.json +++ b/src/main/resources/assets/create/models/block/mechanical_piston/extended/block_rotated.json @@ -26,8 +26,8 @@ }, { "name": "Inner", - "from": [1, 2, 2], - "to": [15, 12, 14], + "from": [0.95, 2, 2], + "to": [15.05, 12, 14], "faces": { "east": {"uv": [2, 4, 14, 14], "texture": "#2"}, "west": {"uv": [2, 4, 14, 14], "texture": "#2"}, @@ -42,7 +42,7 @@ "north": {"uv": [0, 4, 16, 14], "texture": "#0"}, "east": {"uv": [14, 4, 16, 14], "texture": "#0"}, "south": {"uv": [0, 4, 16, 14], "texture": "#0"}, - "west": {"uv": [16, 4, 14, 14], "texture": "#0"}, + "west": {"uv": [0, 4, 2, 14], "texture": "#0"}, "up": {"uv": [0, 2, 16, 0], "texture": "#0"} } }, @@ -52,7 +52,7 @@ "to": [16, 12, 16], "faces": { "north": {"uv": [0, 4, 16, 14], "texture": "#0"}, - "east": {"uv": [16, 4, 14, 14], "texture": "#0"}, + "east": {"uv": [0, 4, 2, 14], "texture": "#0"}, "south": {"uv": [0, 4, 16, 14], "texture": "#0"}, "west": {"uv": [14, 4, 16, 14], "texture": "#0"}, "up": {"uv": [0, 0, 16, 2], "texture": "#0"} diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/moving/block.json b/src/main/resources/assets/create/models/block/mechanical_piston/moving/block.json index 25a49ee70..7c0328cb3 100644 --- a/src/main/resources/assets/create/models/block/mechanical_piston/moving/block.json +++ b/src/main/resources/assets/create/models/block/mechanical_piston/moving/block.json @@ -6,6 +6,7 @@ "1": "create:block/piston_bottom", "2": "create:block/gearbox", "3": "create:block/piston_inner", + "4": "create:block/andesite_casing", "particle": "create:block/andesite_casing_piston" }, "elements": [ @@ -18,14 +19,14 @@ "east": {"uv": [0, 14, 16, 16], "texture": "#0"}, "south": {"uv": [0, 14, 16, 16], "texture": "#0"}, "west": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#4"}, "down": {"uv": [0, 0, 16, 16], "texture": "#1"} } }, { "name": "Inner", - "from": [2, 2, 1], - "to": [14, 12, 15], + "from": [2, 2, 0.95], + "to": [14, 12, 15.05], "faces": { "north": {"uv": [2, 4, 14, 14], "texture": "#2"}, "south": {"uv": [2, 4, 14, 14], "texture": "#2"}, @@ -40,7 +41,7 @@ "faces": { "north": {"uv": [14, 4, 16, 14], "texture": "#0"}, "east": {"uv": [0, 4, 16, 14], "texture": "#0"}, - "south": {"uv": [16, 4, 14, 14], "texture": "#0"}, + "south": {"uv": [0, 4, 2, 14], "texture": "#0"}, "west": {"uv": [0, 4, 16, 14], "texture": "#0"}, "up": {"uv": [0, 2, 16, 0], "rotation": 270, "texture": "#0"} } @@ -50,7 +51,7 @@ "from": [14, 2, 0], "to": [16, 12, 16], "faces": { - "north": {"uv": [16, 4, 14, 14], "texture": "#0"}, + "north": {"uv": [0, 4, 2, 14], "texture": "#0"}, "east": {"uv": [0, 4, 16, 14], "texture": "#0"}, "south": {"uv": [14, 4, 16, 14], "texture": "#0"}, "west": {"uv": [0, 4, 16, 14], "texture": "#0"}, diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/moving/block_rotated.json b/src/main/resources/assets/create/models/block/mechanical_piston/moving/block_rotated.json index 0a32c01ec..524cb6565 100644 --- a/src/main/resources/assets/create/models/block/mechanical_piston/moving/block_rotated.json +++ b/src/main/resources/assets/create/models/block/mechanical_piston/moving/block_rotated.json @@ -6,6 +6,7 @@ "1": "create:block/piston_bottom", "2": "create:block/gearbox", "3": "create:block/piston_inner", + "4": "create:block/andesite_casing", "particle": "create:block/andesite_casing_piston" }, "elements": [ @@ -18,14 +19,14 @@ "east": {"uv": [0, 14, 16, 16], "texture": "#0"}, "south": {"uv": [0, 14, 16, 16], "texture": "#0"}, "west": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "up": {"uv": [0, 0, 16, 16], "texture": "#2"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#4"}, "down": {"uv": [0, 0, 16, 16], "texture": "#1"} } }, { "name": "Inner", - "from": [1, 2, 2], - "to": [15, 12, 14], + "from": [0.95, 2, 2], + "to": [15.05, 12, 14], "faces": { "east": {"uv": [2, 4, 14, 14], "texture": "#2"}, "west": {"uv": [2, 4, 14, 14], "texture": "#2"}, @@ -40,7 +41,7 @@ "north": {"uv": [0, 4, 16, 14], "texture": "#0"}, "east": {"uv": [14, 4, 16, 14], "texture": "#0"}, "south": {"uv": [0, 4, 16, 14], "texture": "#0"}, - "west": {"uv": [16, 4, 14, 14], "texture": "#0"}, + "west": {"uv": [0, 4, 2, 14], "texture": "#0"}, "up": {"uv": [0, 2, 16, 0], "texture": "#0"} } }, @@ -50,7 +51,7 @@ "to": [16, 12, 16], "faces": { "north": {"uv": [0, 4, 16, 14], "texture": "#0"}, - "east": {"uv": [16, 4, 14, 14], "texture": "#0"}, + "east": {"uv": [0, 4, 2, 14], "texture": "#0"}, "south": {"uv": [0, 4, 16, 14], "texture": "#0"}, "west": {"uv": [14, 4, 16, 14], "texture": "#0"}, "up": {"uv": [0, 0, 16, 2], "texture": "#0"} diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/normal/block.json b/src/main/resources/assets/create/models/block/mechanical_piston/normal/block.json index d1196dda0..4770e4905 100644 --- a/src/main/resources/assets/create/models/block/mechanical_piston/normal/block.json +++ b/src/main/resources/assets/create/models/block/mechanical_piston/normal/block.json @@ -16,18 +16,18 @@ "from": [0, 0, 0], "to": [16, 2, 16], "faces": { - "north": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "east": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "south": {"uv": [0, 14, 16, 16], "texture": "#0"}, - "west": {"uv": [0, 14, 16, 16], "texture": "#0"}, + "north": {"uv": [0, 14, 16, 16], "texture": "#6"}, + "east": {"uv": [0, 14, 16, 16], "texture": "#6"}, + "south": {"uv": [0, 14, 16, 16], "texture": "#6"}, + "west": {"uv": [0, 14, 16, 16], "texture": "#6"}, "up": {"uv": [0, 0, 16, 16], "texture": "#0"}, "down": {"uv": [0, 0, 16, 16], "texture": "#1"} } }, { "name": "Inner", - "from": [2, 2, 1], - "to": [14, 12, 15], + "from": [2, 2, 0.95], + "to": [14, 12, 15.05], "faces": { "north": {"uv": [2, 4, 14, 14], "texture": "#2"}, "south": {"uv": [2, 4, 14, 14], "texture": "#2"}, @@ -39,9 +39,9 @@ "from": [0, 2, 0], "to": [2, 12, 16], "faces": { - "north": {"uv": [14, 0, 16, 10], "texture": "#0"}, + "north": {"uv": [14, 4, 16, 14], "texture": "#6"}, "east": {"uv": [0, 4, 16, 14], "texture": "#6"}, - "south": {"uv": [0, 0, 2, 10], "texture": "#0"}, + "south": {"uv": [0, 4, 2, 14], "texture": "#6"}, "west": {"uv": [0, 4, 16, 14], "texture": "#6"} } }, @@ -50,9 +50,9 @@ "from": [14, 2, 0], "to": [16, 12, 16], "faces": { - "north": {"uv": [0, 0, 2, 10], "texture": "#0"}, + "north": {"uv": [0, 4, 2, 14], "texture": "#6"}, "east": {"uv": [0, 4, 16, 14], "texture": "#6"}, - "south": {"uv": [14, 0, 16, 10], "texture": "#0"}, + "south": {"uv": [14, 4, 16, 14], "texture": "#6"}, "west": {"uv": [0, 4, 16, 14], "texture": "#6"} } }, diff --git a/src/main/resources/assets/create/models/block/mechanical_piston/normal/block_rotated.json b/src/main/resources/assets/create/models/block/mechanical_piston/normal/block_rotated.json index dfe772819..df92e91ce 100644 --- a/src/main/resources/assets/create/models/block/mechanical_piston/normal/block_rotated.json +++ b/src/main/resources/assets/create/models/block/mechanical_piston/normal/block_rotated.json @@ -24,8 +24,8 @@ }, { "name": "Inner", - "from": [1, 2, 2], - "to": [15, 12, 14], + "from": [0.95, 2, 2], + "to": [15.05, 12, 14], "faces": { "east": {"uv": [2, 4, 14, 14], "texture": "#2"}, "west": {"uv": [2, 4, 14, 14], "texture": "#2"} @@ -48,7 +48,7 @@ "to": [16, 12, 16], "faces": { "north": {"uv": [0, 4, 16, 14], "texture": "#0"}, - "east": {"uv": [16, 4, 14, 14], "texture": "#0"}, + "east": {"uv": [0, 4, 2, 14], "texture": "#0"}, "south": {"uv": [0, 4, 16, 14], "texture": "#0"}, "west": {"uv": [14, 4, 16, 14], "texture": "#0"} } diff --git a/src/main/resources/assets/create/models/block/mechanical_press/block.json b/src/main/resources/assets/create/models/block/mechanical_press/block.json index 113f7348d..be732fd86 100644 --- a/src/main/resources/assets/create/models/block/mechanical_press/block.json +++ b/src/main/resources/assets/create/models/block/mechanical_press/block.json @@ -2,8 +2,8 @@ "credit": "Made with Blockbench", "textures": { "4": "create:block/mechanical_press_side", - "gearbox_top": "create:block/gearbox_top", "particle": "create:block/mechanical_press_side", + "gearbox_top": "create:block/gearbox_top", "gearbox": "create:block/gearbox", "mechanical_press_top": "create:block/mechanical_press_top", "mechanical_press_bottom": "create:block/mechanical_press_bottom" @@ -24,8 +24,8 @@ }, { "name": "Core", - "from": [2, 4, 1], - "to": [14, 14, 15], + "from": [2, 4, 0.95], + "to": [14, 14, 15.05], "faces": { "north": {"uv": [2, 2, 14, 12], "texture": "#gearbox"}, "south": {"uv": [2, 2, 14, 12], "texture": "#gearbox"}, diff --git a/src/main/resources/assets/create/models/block/mechanical_press/head.json b/src/main/resources/assets/create/models/block/mechanical_press/head.json index 2f38fe009..43b0ebca3 100644 --- a/src/main/resources/assets/create/models/block/mechanical_press/head.json +++ b/src/main/resources/assets/create/models/block/mechanical_press/head.json @@ -1,87 +1,87 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", - "textures": { - "mechanical_press_head": "create:block/mechanical_press_head", - "mechanical_press_pole": "create:block/mechanical_press_pole" - }, - "elements": [ - { - "name": "Pole1Core", - "from": [ 6, 4, 6 ], - "to": [ 10, 14, 10 ], - "faces": { - "east": { "texture": "#mechanical_press_pole", "uv": [ 6, 6, 10, 16 ] }, - "west": { "texture": "#mechanical_press_pole", "uv": [ 6, 6, 10, 16 ] } - } - }, - { - "name": "Pole2Core", - "from": [ 6, 14, 6 ], - "to": [ 10, 27, 10 ], - "faces": { - "east": { "texture": "#mechanical_press_pole", "uv": [ 6, 0, 10, 13 ] }, - "west": { "texture": "#mechanical_press_pole", "uv": [ 6, 0, 10, 13 ] }, - "up": { "texture": "#mechanical_press_pole", "uv": [ 11, 1, 15, 5 ], "rotation": 180 } - } - }, - { - "name": "Pole1Side", - "from": [ 5, 4, 5 ], - "to": [ 11, 14, 6 ], - "faces": { - "north": { "texture": "#mechanical_press_pole", "uv": [ 0, 6, 6, 16 ] }, - "east": { "texture": "#mechanical_press_pole", "uv": [ 0, 6, 1, 16 ] }, - "south": { "texture": "#mechanical_press_pole", "uv": [ 0, 6, 6, 16 ] }, - "west": { "texture": "#mechanical_press_pole", "uv": [ 5, 6, 6, 16 ] } - } - }, - { - "name": "Pole1Side", - "from": [ 5, 4, 10 ], - "to": [ 11, 14, 11 ], - "faces": { - "north": { "texture": "#mechanical_press_pole", "uv": [ 0, 6, 6, 16 ] }, - "east": { "texture": "#mechanical_press_pole", "uv": [ 0, 6, 1, 16 ] }, - "south": { "texture": "#mechanical_press_pole", "uv": [ 0, 6, 6, 16 ] }, - "west": { "texture": "#mechanical_press_pole", "uv": [ 5, 6, 6, 16 ] } - } - }, - { - "name": "Pole2Side", - "from": [ 5, 14, 10 ], - "to": [ 11, 27, 11 ], - "faces": { - "north": { "texture": "#mechanical_press_pole", "uv": [ 0, 0, 6, 13 ] }, - "east": { "texture": "#mechanical_press_pole", "uv": [ 0, 0, 1, 13 ] }, - "south": { "texture": "#mechanical_press_pole", "uv": [ 0, 0, 6, 13 ] }, - "west": { "texture": "#mechanical_press_pole", "uv": [ 5, 0, 6, 13 ] }, - "up": { "texture": "#mechanical_press_pole", "uv": [ 10, 0, 16, 1 ], "rotation": 180 } - } - }, - { - "name": "Pole2Side", - "from": [ 5, 14, 5 ], - "to": [ 11, 27, 6 ], - "faces": { - "north": { "texture": "#mechanical_press_pole", "uv": [ 0, 0, 6, 13 ] }, - "east": { "texture": "#mechanical_press_pole", "uv": [ 0, 0, 1, 13 ] }, - "south": { "texture": "#mechanical_press_pole", "uv": [ 0, 0, 6, 13 ] }, - "west": { "texture": "#mechanical_press_pole", "uv": [ 5, 0, 6, 13 ] }, - "up": { "texture": "#mechanical_press_pole", "uv": [ 10, 5, 16, 6 ], "rotation": 180 } - } - }, - { - "name": "Head", - "from": [ 3, 0, 3 ], - "to": [ 13, 4, 13 ], - "faces": { - "north": { "texture": "#mechanical_press_head", "uv": [ 1, 0, 11, 4 ] }, - "east": { "texture": "#mechanical_press_head", "uv": [ 1, 0, 11, 4 ] }, - "south": { "texture": "#mechanical_press_head", "uv": [ 1, 0, 11, 4 ] }, - "west": { "texture": "#mechanical_press_head", "uv": [ 1, 0, 11, 4 ] }, - "up": { "texture": "#mechanical_press_head", "uv": [ 1, 5, 11, 15 ], "rotation": 180 }, - "down": { "texture": "#mechanical_press_head", "uv": [ 1, 5, 11, 15 ], "rotation": 180 } - } - } - ] + "credit": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", + "textures": { + "mechanical_press_head": "create:block/mechanical_press_head", + "mechanical_press_pole": "create:block/mechanical_press_pole" + }, + "elements": [ + { + "name": "Pole1Core", + "from": [5.95, 4, 6], + "to": [10.05, 14, 10], + "faces": { + "east": {"uv": [6, 6, 10, 16], "texture": "#mechanical_press_pole"}, + "west": {"uv": [6, 6, 10, 16], "texture": "#mechanical_press_pole"} + } + }, + { + "name": "Pole2Core", + "from": [5.95, 14, 6], + "to": [10.05, 27, 10], + "faces": { + "east": {"uv": [6, 0, 10, 13], "texture": "#mechanical_press_pole"}, + "west": {"uv": [6, 0, 10, 13], "texture": "#mechanical_press_pole"}, + "up": {"uv": [11, 1, 15, 5], "rotation": 180, "texture": "#mechanical_press_pole"} + } + }, + { + "name": "Pole1Side", + "from": [5, 4, 5], + "to": [11, 14, 6], + "faces": { + "north": {"uv": [0, 6, 6, 16], "texture": "#mechanical_press_pole"}, + "east": {"uv": [0, 6, 1, 16], "texture": "#mechanical_press_pole"}, + "south": {"uv": [0, 6, 6, 16], "texture": "#mechanical_press_pole"}, + "west": {"uv": [5, 6, 6, 16], "texture": "#mechanical_press_pole"} + } + }, + { + "name": "Pole1Side", + "from": [5, 4, 10], + "to": [11, 14, 11], + "faces": { + "north": {"uv": [0, 6, 6, 16], "texture": "#mechanical_press_pole"}, + "east": {"uv": [0, 6, 1, 16], "texture": "#mechanical_press_pole"}, + "south": {"uv": [0, 6, 6, 16], "texture": "#mechanical_press_pole"}, + "west": {"uv": [5, 6, 6, 16], "texture": "#mechanical_press_pole"} + } + }, + { + "name": "Pole2Side", + "from": [5, 14, 10], + "to": [11, 27, 11], + "faces": { + "north": {"uv": [0, 0, 6, 13], "texture": "#mechanical_press_pole"}, + "east": {"uv": [0, 0, 1, 13], "texture": "#mechanical_press_pole"}, + "south": {"uv": [0, 0, 6, 13], "texture": "#mechanical_press_pole"}, + "west": {"uv": [5, 0, 6, 13], "texture": "#mechanical_press_pole"}, + "up": {"uv": [10, 0, 16, 1], "rotation": 180, "texture": "#mechanical_press_pole"} + } + }, + { + "name": "Pole2Side", + "from": [5, 14, 5], + "to": [11, 27, 6], + "faces": { + "north": {"uv": [0, 0, 6, 13], "texture": "#mechanical_press_pole"}, + "east": {"uv": [0, 0, 1, 13], "texture": "#mechanical_press_pole"}, + "south": {"uv": [0, 0, 6, 13], "texture": "#mechanical_press_pole"}, + "west": {"uv": [5, 0, 6, 13], "texture": "#mechanical_press_pole"}, + "up": {"uv": [10, 5, 16, 6], "rotation": 180, "texture": "#mechanical_press_pole"} + } + }, + { + "name": "Head", + "from": [3, 0, 3], + "to": [13, 4, 13], + "faces": { + "north": {"uv": [1, 0, 11, 4], "texture": "#mechanical_press_head"}, + "east": {"uv": [1, 0, 11, 4], "texture": "#mechanical_press_head"}, + "south": {"uv": [1, 0, 11, 4], "texture": "#mechanical_press_head"}, + "west": {"uv": [1, 0, 11, 4], "texture": "#mechanical_press_head"}, + "up": {"uv": [1, 5, 11, 15], "rotation": 180, "texture": "#mechanical_press_head"}, + "down": {"uv": [1, 5, 11, 15], "rotation": 180, "texture": "#mechanical_press_head"} + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/mechanical_saw/horizontal.json b/src/main/resources/assets/create/models/block/mechanical_saw/horizontal.json index 339a64417..897fa0006 100644 --- a/src/main/resources/assets/create/models/block/mechanical_saw/horizontal.json +++ b/src/main/resources/assets/create/models/block/mechanical_saw/horizontal.json @@ -50,7 +50,7 @@ { "name": "Inner", "from": [0, 2, 2], - "to": [16, 14, 11], + "to": [16, 14, 11.025], "faces": { "east": {"uv": [2, 6, 14, 15], "rotation": 90, "texture": "#andesite_casing_short"}, "south": {"uv": [0, 2, 16, 14], "texture": "#slit"}, @@ -70,8 +70,8 @@ }, { "name": "Back", - "from": [2, 2, 1], - "to": [14, 14, 2], + "from": [2, 2, 0.95], + "to": [14, 14, 1.95], "faces": { "north": {"uv": [2, 2, 14, 14], "texture": "#gearbox"} } diff --git a/src/main/resources/assets/create/models/block/mechanical_saw/vertical.json b/src/main/resources/assets/create/models/block/mechanical_saw/vertical.json index f63bcea80..4d538d0a1 100644 --- a/src/main/resources/assets/create/models/block/mechanical_saw/vertical.json +++ b/src/main/resources/assets/create/models/block/mechanical_saw/vertical.json @@ -1,72 +1,72 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", - "textures": { - "gearbox_top": "create:block/gearbox_top", - "gearbox": "create:block/gearbox", - "andesite_casing_short": "create:block/andesite_casing_short", - "mechanical_saw_top": "create:block/mechanical_saw_top", - "particle": "create:block/mechanical_saw_top" - }, - "elements": [ - { - "name": "Bottom", - "from": [ 0, 0, 0 ], - "to": [ 16, 2, 16 ], - "faces": { - "north": { "texture": "#gearbox_top", "uv": [ 0, 14, 16, 16 ] }, - "east": { "texture": "#andesite_casing_short", "uv": [ 0, 14, 16, 16 ] }, - "south": { "texture": "#gearbox_top", "uv": [ 0, 14, 16, 16 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 0, 14, 16, 16 ] }, - "up": { "texture": "#gearbox_top", "uv": [ 0, 0, 16, 16 ] }, - "down": { "texture": "#gearbox_top", "uv": [ 0, 0, 16, 16 ] } - } - }, - { - "name": "Inner", - "from": [ 2, 2, 1 ], - "to": [ 14, 12, 15 ], - "faces": { - "north": { "texture": "#gearbox", "uv": [ 2, 4, 14, 14 ] }, - "south": { "texture": "#gearbox", "uv": [ 2, 4, 14, 14 ] }, - "up": { "texture": "#mechanical_saw_top", "uv": [ 2, 1, 14, 15 ] }, - "down": { "texture": "#gearbox", "uv": [ 0, 0, 12, 14 ] } - } - }, - { - "name": "Side", - "from": [ 0, 2, 0 ], - "to": [ 2, 12, 16 ], - "faces": { - "north": { "texture": "#gearbox_top", "uv": [ 14, 0, 16, 10 ] }, - "east": { "texture": "#gearbox_top", "uv": [ 0, 0, 16, 10 ] }, - "south": { "texture": "#gearbox_top", "uv": [ 0, 0, 2, 10 ] }, - "west": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 14 ] }, - "up": { "texture": "#gearbox_top", "uv": [ 0, 0, 16, 2 ], "rotation": 270 } - } - }, - { - "name": "Side2", - "from": [ 14, 2, 0 ], - "to": [ 16, 12, 16 ], - "faces": { - "north": { "texture": "#gearbox_top", "uv": [ 0, 0, 2, 10 ] }, - "east": { "texture": "#andesite_casing_short", "uv": [ 0, 4, 16, 14 ] }, - "south": { "texture": "#gearbox_top", "uv": [ 14, 0, 16, 10 ] }, - "west": { "texture": "#gearbox_top", "uv": [ 0, 0, 16, 10 ] }, - "up": { "texture": "#gearbox_top", "uv": [ 0, 14, 16, 16 ], "rotation": 270 } - } - }, - { - "name": "Top", - "from": [ 0, 12, 2 ], - "to": [ 16, 13, 14 ], - "faces": { - "north": { "texture": "#mechanical_saw_top", "uv": [ 0, 13, 16, 14 ] }, - "east": { "texture": "#mechanical_saw_top", "uv": [ 0, 3, 1, 13 ], "rotation": 90 }, - "south": { "texture": "#mechanical_saw_top", "uv": [ 0, 2, 16, 3 ] }, - "west": { "texture": "#mechanical_saw_top", "uv": [ 15, 3, 16, 13 ], "rotation": 270 }, - "up": { "texture": "#mechanical_saw_top", "uv": [ 0, 2, 16, 14 ] } - } - } - ] + "credit": "Model generated using MrCrayfish's Model Creator (https://mrcrayfish.com/tools?id=mc)", + "textures": { + "gearbox_top": "create:block/gearbox_top", + "gearbox": "create:block/gearbox", + "andesite_casing_short": "create:block/andesite_casing_short", + "particle": "create:block/mechanical_saw_top", + "mechanical_saw_top": "create:block/mechanical_saw_top" + }, + "elements": [ + { + "name": "Bottom", + "from": [0, 0, 0], + "to": [16, 2, 16], + "faces": { + "north": {"uv": [0, 14, 16, 16], "texture": "#andesite_casing_short"}, + "east": {"uv": [0, 14, 16, 16], "texture": "#andesite_casing_short"}, + "south": {"uv": [0, 14, 16, 16], "texture": "#gearbox_top"}, + "west": {"uv": [0, 14, 16, 16], "texture": "#andesite_casing_short"}, + "up": {"uv": [0, 0, 16, 16], "texture": "#gearbox_top"}, + "down": {"uv": [0, 0, 16, 16], "texture": "#gearbox_top"} + } + }, + { + "name": "Inner", + "from": [2, 2, 0.95], + "to": [14, 12, 15.05], + "faces": { + "north": {"uv": [2, 4, 14, 14], "texture": "#gearbox"}, + "south": {"uv": [2, 4, 14, 14], "texture": "#gearbox"}, + "up": {"uv": [2, 1, 14, 15], "texture": "#mechanical_saw_top"}, + "down": {"uv": [0, 0, 12, 14], "texture": "#gearbox"} + } + }, + { + "name": "Side", + "from": [0, 2, 0], + "to": [2, 12, 16], + "faces": { + "north": {"uv": [14, 4, 16, 14], "texture": "#andesite_casing_short"}, + "east": {"uv": [0, 0, 16, 10], "texture": "#gearbox_top"}, + "south": {"uv": [0, 4, 2, 14], "texture": "#andesite_casing_short"}, + "west": {"uv": [0, 4, 16, 14], "texture": "#andesite_casing_short"}, + "up": {"uv": [0, 0, 16, 2], "rotation": 270, "texture": "#gearbox_top"} + } + }, + { + "name": "Side2", + "from": [14, 2, 0], + "to": [16, 12, 16], + "faces": { + "north": {"uv": [0, 4, 2, 14], "texture": "#andesite_casing_short"}, + "east": {"uv": [0, 4, 16, 14], "texture": "#andesite_casing_short"}, + "south": {"uv": [14, 4, 16, 14], "texture": "#andesite_casing_short"}, + "west": {"uv": [0, 0, 16, 10], "texture": "#gearbox_top"}, + "up": {"uv": [0, 14, 16, 16], "rotation": 270, "texture": "#gearbox_top"} + } + }, + { + "name": "Top", + "from": [0, 12, 1.95], + "to": [16, 13, 14.05], + "faces": { + "north": {"uv": [16, 2, 0, 3], "texture": "#mechanical_saw_top"}, + "east": {"uv": [0, 2, 1, 14], "rotation": 90, "texture": "#mechanical_saw_top"}, + "south": {"uv": [0, 13, 16, 14], "texture": "#mechanical_saw_top"}, + "west": {"uv": [15, 2, 16, 14], "rotation": 270, "texture": "#mechanical_saw_top"}, + "up": {"uv": [0, 2, 16, 14], "texture": "#mechanical_saw_top"} + } + } + ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/redstone_contact/block.json b/src/main/resources/assets/create/models/block/redstone_contact/block.json index 274c963cd..5afcf430c 100644 --- a/src/main/resources/assets/create/models/block/redstone_contact/block.json +++ b/src/main/resources/assets/create/models/block/redstone_contact/block.json @@ -10,8 +10,8 @@ "elements": [ { "name": "Center", - "from": [2, 1, 2], - "to": [14, 15, 14], + "from": [2, 0.95, 2], + "to": [14, 15.05, 14], "faces": { "up": {"uv": [2, 2, 14, 14], "texture": "#0"}, "down": {"uv": [2, 2, 14, 14], "texture": "#3"} diff --git a/src/main/resources/assets/create/models/block/rope_pulley/block.json b/src/main/resources/assets/create/models/block/rope_pulley/block.json index 965644d1c..7215d4577 100644 --- a/src/main/resources/assets/create/models/block/rope_pulley/block.json +++ b/src/main/resources/assets/create/models/block/rope_pulley/block.json @@ -4,6 +4,7 @@ "textures": { "3": "create:block/gearbox_top", "4": "create:block/gearbox", + "5": "create:block/andesite_casing", "6": "create:block/pulley_top", "particle": "create:block/pulley_rope" }, @@ -197,7 +198,7 @@ "east": {"uv": [2, 1, 14, 3], "rotation": 180, "texture": "#6"}, "west": {"uv": [2, 13, 14, 15], "texture": "#6"}, "up": {"uv": [2, 2, 14, 14], "rotation": 90, "texture": "#6"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 90, "texture": "#6"} + "down": {"uv": [2, 2, 14, 14], "rotation": 90, "texture": "#5"} } } ] diff --git a/src/main/resources/assets/create/models/block/rope_pulley/item.json b/src/main/resources/assets/create/models/block/rope_pulley/item.json index 35746dbbf..ed905e459 100644 --- a/src/main/resources/assets/create/models/block/rope_pulley/item.json +++ b/src/main/resources/assets/create/models/block/rope_pulley/item.json @@ -8,6 +8,7 @@ "4": "create:block/gearbox", "5": "create:block/pulley_rope", "6": "create:block/pulley_magnet", + "7": "create:block/andesite_casing", "8": "create:block/pulley_top", "particle": "create:block/pulley_top" }, @@ -82,17 +83,31 @@ { "name": "magnet", "from": [3.1, 0, 3], - "to": [13.1, 2, 13], + "to": [13.1, 3, 13], "rotation": {"angle": 0, "axis": "y", "origin": [24, 23, -8]}, "faces": { - "north": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "east": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "south": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "west": {"uv": [0, 10, 10, 12], "texture": "#6"}, + "north": {"uv": [0, 10, 10, 13], "texture": "#6"}, + "east": {"uv": [0, 10, 10, 13], "texture": "#6"}, + "south": {"uv": [0, 10, 10, 13], "texture": "#6"}, + "west": {"uv": [0, 10, 10, 13], "texture": "#6"}, "up": {"uv": [0, 0, 10, 10], "texture": "#6"}, "down": {"uv": [0, 0, 10, 10], "texture": "#6"} } }, + { + "name": "magnet", + "from": [5.1, 2, 5], + "to": [11.1, 4, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [24, 23, -8]}, + "faces": { + "north": {"uv": [0, 13, 6, 15], "texture": "#6"}, + "east": {"uv": [0, 13, 6, 15], "texture": "#6"}, + "south": {"uv": [0, 13, 6, 15], "texture": "#6"}, + "west": {"uv": [0, 13, 6, 15], "texture": "#6"}, + "up": {"uv": [2, 2, 8, 8], "texture": "#6"}, + "down": {"uv": [2, 2, 8, 8], "texture": "#6"} + } + }, { "name": "side", "from": [2, 2, 14], @@ -282,7 +297,7 @@ "east": {"uv": [2, 1, 14, 3], "rotation": 180, "texture": "#8"}, "west": {"uv": [2, 13, 14, 15], "texture": "#8"}, "up": {"uv": [2, 2, 14, 14], "rotation": 90, "texture": "#8"}, - "down": {"uv": [2, 2, 14, 14], "rotation": 90, "texture": "#8"} + "down": {"uv": [2, 2, 14, 14], "rotation": 90, "texture": "#7"} } } ], @@ -331,9 +346,8 @@ "name": "rope_half_magnet", "origin": [8, 8, 8], "color": 0, - "children": [4, 5] + "children": [4, 5, 6] }, - 6, 7, 8, 9, @@ -347,6 +361,7 @@ 17, 18, 19, - 20 + 20, + 21 ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/rope_pulley/pulley_magnet.json b/src/main/resources/assets/create/models/block/rope_pulley/pulley_magnet.json index 1b44d7f3e..e46edc899 100644 --- a/src/main/resources/assets/create/models/block/rope_pulley/pulley_magnet.json +++ b/src/main/resources/assets/create/models/block/rope_pulley/pulley_magnet.json @@ -2,14 +2,15 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { + "1": "create:block/chute_large", "6": "create:block/pulley_magnet", "particle": "create:block/pulley_magnet" }, "elements": [ { "name": "rope", - "from": [6, 2, 6], - "to": [10, 16, 10], + "from": [5.95, 2, 5.95], + "to": [10.05, 16, 10.05], "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 0, 8]}, "faces": { "north": {"uv": [12, 0, 16, 14], "texture": "#6"}, @@ -22,16 +23,29 @@ { "name": "magnet", "from": [3, 0, 3], - "to": [13, 2, 13], + "to": [13, 3, 13], "rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 8]}, "faces": { - "north": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "east": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "south": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "west": {"uv": [0, 10, 10, 12], "texture": "#6"}, + "north": {"uv": [0, 10, 10, 13], "texture": "#6"}, + "east": {"uv": [0, 10, 10, 13], "texture": "#6"}, + "south": {"uv": [0, 10, 10, 13], "texture": "#6"}, + "west": {"uv": [0, 10, 10, 13], "texture": "#6"}, "up": {"uv": [0, 0, 10, 10], "texture": "#6"}, "down": {"uv": [0, 0, 10, 10], "texture": "#6"} } + }, + { + "name": "magnet", + "from": [4.95, 3, 4.95], + "to": [11.05, 5, 11.05], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 8]}, + "faces": { + "north": {"uv": [0, 13, 6, 15], "texture": "#6"}, + "east": {"uv": [0, 13, 6, 15], "texture": "#6"}, + "south": {"uv": [0, 13, 6, 15], "texture": "#6"}, + "west": {"uv": [0, 13, 6, 15], "texture": "#6"}, + "up": {"uv": [10.5, 11, 13.5, 14], "texture": "#1"} + } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/rope_pulley/rope.json b/src/main/resources/assets/create/models/block/rope_pulley/rope.json index 832617702..8282ada64 100644 --- a/src/main/resources/assets/create/models/block/rope_pulley/rope.json +++ b/src/main/resources/assets/create/models/block/rope_pulley/rope.json @@ -8,8 +8,8 @@ "elements": [ { "name": "rope", - "from": [6, 0, 6], - "to": [10, 16, 10], + "from": [5.95, 0, 5.95], + "to": [10.05, 16, 10.05], "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 0, 8]}, "faces": { "north": {"uv": [0, 0, 4, 16], "texture": "#5"}, diff --git a/src/main/resources/assets/create/models/block/rope_pulley/rope_half.json b/src/main/resources/assets/create/models/block/rope_pulley/rope_half.json index 522789073..15f25a8ea 100644 --- a/src/main/resources/assets/create/models/block/rope_pulley/rope_half.json +++ b/src/main/resources/assets/create/models/block/rope_pulley/rope_half.json @@ -8,8 +8,8 @@ "elements": [ { "name": "rope", - "from": [6, 0, 6], - "to": [10, 8, 10], + "from": [5.95, 0, 5.95], + "to": [10.05, 8, 10.05], "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 0, 8]}, "faces": { "north": {"uv": [0, 8, 4, 16], "texture": "#5"}, diff --git a/src/main/resources/assets/create/models/block/rope_pulley/rope_half_magnet.json b/src/main/resources/assets/create/models/block/rope_pulley/rope_half_magnet.json index f3f8f43c2..cc6348990 100644 --- a/src/main/resources/assets/create/models/block/rope_pulley/rope_half_magnet.json +++ b/src/main/resources/assets/create/models/block/rope_pulley/rope_half_magnet.json @@ -2,14 +2,15 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { + "1": "create:block/chute_large", "6": "create:block/pulley_magnet", "particle": "create:block/pulley_magnet" }, "elements": [ { "name": "rope", - "from": [6, 2, 6], - "to": [10, 8, 10], + "from": [5.95, 2, 5.95], + "to": [10.05, 8, 10.05], "rotation": {"angle": 0, "axis": "y", "origin": [7.75, 0, 8]}, "faces": { "north": {"uv": [12, 8, 16, 14], "texture": "#6"}, @@ -22,16 +23,29 @@ { "name": "magnet", "from": [3, 0, 3], - "to": [13, 2, 13], + "to": [13, 3, 13], "rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 8]}, "faces": { - "north": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "east": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "south": {"uv": [0, 10, 10, 12], "texture": "#6"}, - "west": {"uv": [0, 10, 10, 12], "texture": "#6"}, + "north": {"uv": [0, 10, 10, 13], "texture": "#6"}, + "east": {"uv": [0, 10, 10, 13], "texture": "#6"}, + "south": {"uv": [0, 10, 10, 13], "texture": "#6"}, + "west": {"uv": [0, 10, 10, 13], "texture": "#6"}, "up": {"uv": [0, 0, 10, 10], "texture": "#6"}, "down": {"uv": [0, 0, 10, 10], "texture": "#6"} } + }, + { + "name": "magnet", + "from": [4.95, 3, 4.95], + "to": [11.05, 5, 11.05], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 23, 8]}, + "faces": { + "north": {"uv": [0, 13, 6, 15], "texture": "#6"}, + "east": {"uv": [0, 13, 6, 15], "texture": "#6"}, + "south": {"uv": [0, 13, 6, 15], "texture": "#6"}, + "west": {"uv": [0, 13, 6, 15], "texture": "#6"}, + "up": {"uv": [10.5, 11, 13.5, 14], "texture": "#1"} + } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/sequenced_gearshift/idle.json b/src/main/resources/assets/create/models/block/sequenced_gearshift/idle.json index 90300e12b..2f7dc99a4 100644 --- a/src/main/resources/assets/create/models/block/sequenced_gearshift/idle.json +++ b/src/main/resources/assets/create/models/block/sequenced_gearshift/idle.json @@ -22,8 +22,8 @@ }, { "name": "Core", - "from": [1, 2, 1], - "to": [15, 14, 15], + "from": [1, 2, 0.95], + "to": [15, 14, 15.05], "faces": { "north": {"uv": [1, 2, 15, 14], "texture": "#1"}, "south": {"uv": [1, 2, 15, 14], "texture": "#1"} diff --git a/src/main/resources/assets/create/models/block/spout/block.json b/src/main/resources/assets/create/models/block/spout/block.json index 66ac7929e..6f42dc418 100644 --- a/src/main/resources/assets/create/models/block/spout/block.json +++ b/src/main/resources/assets/create/models/block/spout/block.json @@ -8,8 +8,8 @@ "elements": [ { "name": "Top 1", - "from": [2, 14, 2], - "to": [14, 16, 14], + "from": [1.95, 14, 1.95], + "to": [14.05, 16, 14.05], "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -23]}, "faces": { "north": {"uv": [1, 0, 7, 1], "texture": "#0"}, @@ -62,54 +62,42 @@ }, { "name": "Window", - "from": [2, 4, 6], - "to": [2, 12, 10], - "faces": { - "north": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "east": {"uv": [9, 0, 11, 4], "texture": "#0"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "west": {"uv": [9, 0, 11, 4], "texture": "#0"}, - "up": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "down": {"uv": [0, 0, 0, 0], "texture": "#0"} - } - }, - { - "name": "Window", - "from": [6, 4, 2], - "to": [10, 12, 2], + "from": [6, 4, 1.95], + "to": [10, 12, 1.95], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, "faces": { "north": {"uv": [9, 0, 11, 4], "texture": "#0"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "south": {"uv": [9, 0, 11, 4], "texture": "#0"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "up": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#0"}, - "down": {"uv": [0, 0, 0, 0], "rotation": 270, "texture": "#0"} + "south": {"uv": [9, 0, 11, 4], "texture": "#0"} } }, { "name": "Window", - "from": [14, 4, 6], - "to": [14, 12, 10], + "from": [14.05, 4, 6], + "to": [14.05, 12, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, "faces": { - "north": {"uv": [0, 0, 0, 0], "texture": "#0"}, "east": {"uv": [9, 0, 11, 4], "texture": "#0"}, - "south": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "west": {"uv": [9, 0, 11, 4], "texture": "#0"}, - "up": {"uv": [0, 0, 0, 0], "rotation": 180, "texture": "#0"}, - "down": {"uv": [0, 0, 0, 0], "rotation": 180, "texture": "#0"} + "west": {"uv": [9, 0, 11, 4], "texture": "#0"} } }, { "name": "Window", - "from": [6, 4, 14], - "to": [10, 12, 14], + "from": [6, 4, 14.05], + "to": [10, 12, 14.05], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, "faces": { "north": {"uv": [9, 0, 11, 4], "texture": "#0"}, - "east": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "south": {"uv": [9, 0, 11, 4], "texture": "#0"}, - "west": {"uv": [0, 0, 0, 0], "texture": "#0"}, - "up": {"uv": [0, 0, 0, 0], "rotation": 270, "texture": "#0"}, - "down": {"uv": [0, 0, 0, 0], "rotation": 90, "texture": "#0"} + "south": {"uv": [9, 0, 11, 4], "texture": "#0"} + } + }, + { + "name": "Window", + "from": [1.95, 4, 6], + "to": [1.95, 12, 10], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "faces": { + "east": {"uv": [9, 0, 11, 4], "texture": "#0"}, + "west": {"uv": [9, 0, 11, 4], "texture": "#0"} } }, { diff --git a/src/main/resources/assets/create/models/block/water_wheel/block.json b/src/main/resources/assets/create/models/block/water_wheel/block.json index 804e14f7a..287821445 100644 --- a/src/main/resources/assets/create/models/block/water_wheel/block.json +++ b/src/main/resources/assets/create/models/block/water_wheel/block.json @@ -7,9 +7,8 @@ }, "elements": [ { - "from": [2, 1, 2], - "to": [14, 0, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "from": [1.95, 1, 1.95], + "to": [14.05, 0, 14.05], "faces": { "north": {"uv": [2, 0, 14, 1], "rotation": 180, "texture": "#0"}, "east": {"uv": [0, 2, 1, 14], "rotation": 90, "texture": "#0"}, @@ -19,9 +18,8 @@ } }, { - "from": [2, 16, 2], - "to": [14, 15, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, + "from": [1.95, 16, 1.95], + "to": [14.05, 15, 14.05], "faces": { "north": {"uv": [2, 0, 14, 1], "texture": "#0"}, "east": {"uv": [15, 2, 16, 14], "rotation": 90, "texture": "#0"}, @@ -33,7 +31,6 @@ { "from": [2, 2, 2], "to": [14, 14, 14], - "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 16]}, "faces": { "north": {"uv": [6, 6, 10, 10], "rotation": 180, "texture": "#0"}, "east": {"uv": [6, 6, 10, 10], "rotation": 90, "texture": "#0"}, diff --git a/src/main/resources/assets/create/textures/block/fluid_tank_window.png b/src/main/resources/assets/create/textures/block/fluid_tank_window.png index 4fb70bbcca0dda18a112f59891857ebd3db49285..7b8574b13d04e956ba5dc077adf99d4ef661a1e3 100644 GIT binary patch delta 238 zcmZ3%_>XadL_G&H0|SGGE`KnPVk{1FcVbv~PUa<$!;&U>cv7h@-A}f%u7~m7) zI?v0s!p!<$qF?vHvlm{yTyf#%shq&-b=zMq&b?6_1yr@hR;~p|ahC-71^|E7 ZXZ$m^C7YQ-ZUc>G@O1TaS?83{1ORo1TG#*p delta 152 zcmeyzxPozlL_G^L0|Ud`yN`l^lw5#Mh%1o3@apA?3pd|vuI@f~wtC(6rO{r~g1nmC zoJ#HOIBq%>097!S1o;IsI6S+N2IN?Hx;TbZ+)CD%9XB)X&;f;W7c^H`FrQ%%T+tK4 z#GZx^prw85kH?(j9#r85lP9bN@+X1@g@Td_r6!BO=lh6Qj+A zr>E*w`^%*{io3YD*xNbz`}=!(c$5|vwzah_UApw_*|XMGcD6PSrY06ZtpW?Q@_>|3 zNswRge{{g`X#aj8pe$!Wy+>p*0|Vb-5N14{zaj-F+TiKp7@`sE+ZQQxSb@h`^;D8a z)T7_=W=4}sChY&>HjTHzyP^8m6Q(QMmT^sq5xUWHtk13dr_u$^g$%CN6D1@PL?dK3 zHYIY~$jW9pHf(2>`d$7eJ-E+)+ws27)mnBcd?n>Sna?UQMSNB*(KKROBE+q*M{m!e k{J86L`X^u6d-^Y%!&46aRbRI70Ug8O>FVdQ&MBb@0QV_)iU0rr delta 320 zcmV-G0l)ss0^0(RB!6{KOjJbx007O+&84NKhK7c4aByj9X<=buf>k_$R6BrEI$K*? zcuzTZPB?Z=H&j$qa7Z&yP*7|}GHXRKYDF??L@-TFO=(0iXhbkfOiX7(FJ?k6Nl8gZ zM@L3RMnptJLPA18K|wt|JvKHrH8nLfG&C|YGBGhRhR>~$0Dk}g0d!JMQvg8b*k%9# z0F+5YK~#9!OpXJB1VIc%Un;G&b^o)i?NT~p#Lkxs5NGf zo|%yYHp9WS$~i1ETj0>(t8X0v{&H!K;)eGO^nl`=1s;*b3=DjSL74G){)!Z!pq!_RV~E7%@KAHIiGEBl=o7`PZ1JYD@<);T3K0RTphCk+4q delta 191 zcmZ3;c%E^BL_G&H0|SGGE`KnPvI+1Bacv2=YYww*3bknrv2F;qstmBI@V6}Yvnca5 zFYqwVaWl$xHOz7~%5pKtbTQ0uG01Q>NO#sxchXOD(kq%~PyjT?&(p;*q~ey$(RR)Q z1`I44`>WUgelK;dVM3LOd(aMl*Q2`njxgN@xNAmVHJ0 From bb5d0fedee907c6b289e9e3ddf3e17f9315f2df4 Mon Sep 17 00:00:00 2001 From: PepperCode1 <44146161+PepperCode1@users.noreply.github.com> Date: Tue, 16 May 2023 06:08:10 -0700 Subject: [PATCH 4/4] Mixin scrubbing - Move all client mixins to separate package - Prefix all mixin injector callback methods and added fields - Remove unnecessary code from EntityContraptionInteractionMixin - Remove EnchantmentMixin and use IForgeItem#canApplyAtEnchantingTable instead - Do not sync fire immune tag to client - Bump network version to 3 - Remove 0.5.0j from Github issue template --- .github/ISSUE_TEMPLATE/bug_report.yml | 1 - .../ContraptionCollider.java | 41 ++-- .../structureMovement/ContraptionWorld.java | 16 +- .../curiosities/armor/DivingBootsItem.java | 9 +- .../curiosities/armor/DivingHelmetItem.java | 10 + .../armor/NetheriteDivingHandler.java | 72 +------ .../ClientboundMapItemDataPacketMixin.java | 19 +- .../mixin/ContraptionDriverInteractMixin.java | 2 - .../mixin/CustomItemUseEffectsMixin.java | 4 +- .../mixin/EnchantmentHelperMixin.java | 2 +- .../foundation/mixin/EnchantmentMixin.java | 22 -- .../EntityContraptionInteractionMixin.java | 194 ------------------ .../create/foundation/mixin/EntityMixin.java | 2 +- .../foundation/mixin/LavaSwimmingMixin.java | 6 +- .../create/foundation/mixin/MainMixin.java | 1 - .../mixin/MapItemSavedDataMixin.java | 21 +- .../mixin/WaterWheelFluidSpreadMixin.java | 6 +- .../BlockDestructionProgressMixin.java | 8 +- .../mixin/{ => client}/CameraMixin.java | 4 +- .../EntityContraptionInteractionMixin.java | 172 ++++++++++++++++ .../{ => client}/FixNormalScalingMixin.java | 6 +- .../mixin/{ => client}/GameRendererMixin.java | 9 +- .../{ => client}/HeavyBootsOnPlayerMixin.java | 9 +- .../{ => client}/HumanoidArmorLayerMixin.java | 4 +- .../{ => client}/LevelRendererMixin.java | 6 +- .../MapRendererMapInstanceMixin.java | 6 +- .../{ => client}/ModelDataRefreshMixin.java | 8 +- .../{ => client}/PlayerRendererMixin.java | 4 +- .../mixin/{ => client}/WindowResizeMixin.java | 15 +- .../foundation/networking/AllPackets.java | 7 +- src/main/resources/create.mixins.json | 25 ++- 31 files changed, 287 insertions(+), 424 deletions(-) delete mode 100644 src/main/java/com/simibubi/create/foundation/mixin/EnchantmentMixin.java delete mode 100644 src/main/java/com/simibubi/create/foundation/mixin/EntityContraptionInteractionMixin.java rename src/main/java/com/simibubi/create/foundation/mixin/{ => client}/BlockDestructionProgressMixin.java (77%) rename src/main/java/com/simibubi/create/foundation/mixin/{ => client}/CameraMixin.java (84%) create mode 100644 src/main/java/com/simibubi/create/foundation/mixin/client/EntityContraptionInteractionMixin.java rename src/main/java/com/simibubi/create/foundation/mixin/{ => client}/FixNormalScalingMixin.java (88%) rename src/main/java/com/simibubi/create/foundation/mixin/{ => client}/GameRendererMixin.java (67%) rename src/main/java/com/simibubi/create/foundation/mixin/{ => client}/HeavyBootsOnPlayerMixin.java (78%) rename src/main/java/com/simibubi/create/foundation/mixin/{ => client}/HumanoidArmorLayerMixin.java (85%) rename src/main/java/com/simibubi/create/foundation/mixin/{ => client}/LevelRendererMixin.java (90%) rename src/main/java/com/simibubi/create/foundation/mixin/{ => client}/MapRendererMapInstanceMixin.java (76%) rename src/main/java/com/simibubi/create/foundation/mixin/{ => client}/ModelDataRefreshMixin.java (84%) rename src/main/java/com/simibubi/create/foundation/mixin/{ => client}/PlayerRendererMixin.java (86%) rename src/main/java/com/simibubi/create/foundation/mixin/{ => client}/WindowResizeMixin.java (64%) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 2da08af81..ac2f4be3e 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -50,7 +50,6 @@ body: description: The version of the mod you were using when the bug occured options: - "0.5.1a" - - "0.5.0j" - "0.5.0i" - "0.5.0h" - "0.5.0g" diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java index 61c8b6c2e..d992b4219 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionCollider.java @@ -575,15 +575,6 @@ public class ContraptionCollider { return true; } - public static Vec3 getWorldToLocalTranslation(Entity entity, AbstractContraptionEntity contraptionEntity) { - return getWorldToLocalTranslation(entity, contraptionEntity.getAnchorVec(), - contraptionEntity.getRotationState()); - } - - public static Vec3 getWorldToLocalTranslation(Entity entity, Vec3 anchorVec, ContraptionRotationState rotation) { - return getWorldToLocalTranslation(entity, anchorVec, rotation.asMatrix(), rotation.getYawOffset()); - } - public static Vec3 getWorldToLocalTranslation(Entity entity, Vec3 anchorVec, Matrix3d rotationMatrix, float yawOffset) { Vec3 entityPosition = entity.position(); @@ -591,35 +582,29 @@ public class ContraptionCollider { .getYsize() / 2, 0); Vec3 position = entityPosition; position = position.add(centerY); - position = position.subtract(VecHelper.CENTER_OF_ORIGIN); - position = position.subtract(anchorVec); - position = VecHelper.rotate(position, -yawOffset, Axis.Y); - position = rotationMatrix.transform(position); - position = position.add(VecHelper.CENTER_OF_ORIGIN); + position = worldToLocalPos(position, anchorVec, rotationMatrix, yawOffset); position = position.subtract(centerY); position = position.subtract(entityPosition); return position; } - public static Vec3 getWorldToLocalTranslation(Vec3 entity, AbstractContraptionEntity contraptionEntity) { - return getWorldToLocalTranslation(entity, contraptionEntity.getAnchorVec(), + public static Vec3 worldToLocalPos(Vec3 worldPos, AbstractContraptionEntity contraptionEntity) { + return worldToLocalPos(worldPos, contraptionEntity.getAnchorVec(), contraptionEntity.getRotationState()); } - public static Vec3 getWorldToLocalTranslation(Vec3 inPos, Vec3 anchorVec, ContraptionRotationState rotation) { - return getWorldToLocalTranslation(inPos, anchorVec, rotation.asMatrix(), rotation.getYawOffset()); + public static Vec3 worldToLocalPos(Vec3 worldPos, Vec3 anchorVec, ContraptionRotationState rotation) { + return worldToLocalPos(worldPos, anchorVec, rotation.asMatrix(), rotation.getYawOffset()); } - public static Vec3 getWorldToLocalTranslation(Vec3 inPos, Vec3 anchorVec, Matrix3d rotationMatrix, - float yawOffset) { - Vec3 position = inPos; - position = position.subtract(VecHelper.CENTER_OF_ORIGIN); - position = position.subtract(anchorVec); - position = VecHelper.rotate(position, -yawOffset, Axis.Y); - position = rotationMatrix.transform(position); - position = position.add(VecHelper.CENTER_OF_ORIGIN); - position = position.subtract(inPos); - return position; + public static Vec3 worldToLocalPos(Vec3 worldPos, Vec3 anchorVec, Matrix3d rotationMatrix, float yawOffset) { + Vec3 localPos = worldPos; + localPos = localPos.subtract(anchorVec); + localPos = localPos.subtract(VecHelper.CENTER_OF_ORIGIN); + localPos = VecHelper.rotate(localPos, -yawOffset, Axis.Y); + localPos = rotationMatrix.transform(localPos); + localPos = localPos.add(VecHelper.CENTER_OF_ORIGIN); + return localPos; } /** From Entity#collide **/ diff --git a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java index c5e429949..5824028fe 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java +++ b/src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/ContraptionWorld.java @@ -6,12 +6,10 @@ import net.minecraft.core.BlockPos; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundSource; import net.minecraft.util.Mth; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; -import net.minecraft.world.phys.Vec3; public class ContraptionWorld extends WrappedWorld { final Contraption contraption; @@ -45,18 +43,8 @@ public class ContraptionWorld extends WrappedWorld { } @Override - public void playSound(Player player, double x, double y, double z, SoundEvent soundIn, SoundSource category, float volume, float pitch) { - - Vec3 worldPos = ContraptionCollider.getWorldToLocalTranslation(new Vec3(x, y, z), this.contraption.entity); - - worldPos = worldPos.add(x, y, z); - - world.playSound(player, worldPos.x, worldPos.y, worldPos.z, soundIn, category, volume, pitch); - } - - @Override - public void playLocalSound(double x, double y, double z, SoundEvent p_184134_7_, SoundSource p_184134_8_, float p_184134_9_, float p_184134_10_, boolean p_184134_11_) { - world.playLocalSound(x, y, z, p_184134_7_, p_184134_8_, p_184134_9_, p_184134_10_, p_184134_11_); + public void playLocalSound(double x, double y, double z, SoundEvent sound, SoundSource category, float volume, float pitch, boolean distanceDelay) { + world.playLocalSound(x, y, z, sound, category, volume, pitch, distanceDelay); } // Ensure that we provide accurate information about ContraptionWorld height to mods (such as Starlight) which diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java index 7fed409d3..91ae468ab 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java @@ -85,12 +85,12 @@ public class DivingBootsItem extends BaseArmorItem { return true; } - public static Vec3 getMovementMultiplier(Entity entity) { + public static Vec3 getMovementMultiplier(LivingEntity entity) { double yMotion = entity.getDeltaMovement().y; double vMultiplier = yMotion < 0 ? Math.max(0, 2.5 - Math.abs(yMotion) * 2) : 1; if (!entity.isOnGround()) { - if (entity instanceof LivingEntity le && le.jumping && entity.getPersistentData() + if (entity.jumping && entity.getPersistentData() .contains("LavaGrounded")) { vMultiplier = yMotion == 0 ? 0 : 1 / yMotion; } else if (yMotion > 0) @@ -101,9 +101,8 @@ public class DivingBootsItem extends BaseArmorItem { return new Vec3(1.75, vMultiplier, 1.75); } - if (entity instanceof LivingEntity) - entity.getPersistentData() - .putBoolean("LavaGrounded", true); + entity.getPersistentData() + .putBoolean("LavaGrounded", true); double hMultiplier = entity.isSprinting() ? 1.85 : 1.75; return new Vec3(hMultiplier, vMultiplier, hMultiplier); } diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java index f17c878e5..e53fb78b6 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java @@ -15,6 +15,8 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.Level; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -28,6 +30,14 @@ public class DivingHelmetItem extends BaseArmorItem { super(material, SLOT, properties, textureLoc); } + @Override + public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantment) { + if (enchantment == Enchantments.AQUA_AFFINITY) { + return false; + } + return super.canApplyAtEnchantingTable(stack, enchantment); + } + public static boolean isWornBy(Entity entity, boolean fireproof) { ItemStack stack = getWornItem(entity); if (stack == null) diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/NetheriteDivingHandler.java b/src/main/java/com/simibubi/create/content/curiosities/armor/NetheriteDivingHandler.java index 457938942..d8d0eac35 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/armor/NetheriteDivingHandler.java +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/NetheriteDivingHandler.java @@ -1,25 +1,16 @@ package com.simibubi.create.content.curiosities.armor; import com.simibubi.create.AllItems; -import com.simibubi.create.foundation.networking.AllPackets; -import com.simibubi.create.foundation.networking.SimplePacketBase; -import net.minecraft.client.Minecraft; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ArmorMaterials; import net.minecraft.world.item.ItemStack; import net.minecraftforge.event.entity.living.LivingEquipmentChangeEvent; -import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod.EventBusSubscriber; -import net.minecraftforge.network.NetworkEvent.Context; -import net.minecraftforge.network.PacketDistributor; @EventBusSubscriber public final class NetheriteDivingHandler { @@ -64,10 +55,14 @@ public final class NetheriteDivingHandler { public static void setBit(LivingEntity entity, EquipmentSlot slot) { CompoundTag nbt = entity.getPersistentData(); byte bits = nbt.getByte(NETHERITE_DIVING_BITS_KEY); + if ((bits & 0b1111) == 0b1111) { + return; + } + bits |= 1 << slot.getIndex(); nbt.putByte(NETHERITE_DIVING_BITS_KEY, bits); - if ((bits & 0xF) == 0xF) { + if ((bits & 0b1111) == 0b1111) { setFireImmune(entity, true); } } @@ -79,7 +74,7 @@ public final class NetheriteDivingHandler { } byte bits = nbt.getByte(NETHERITE_DIVING_BITS_KEY); - boolean prevFullSet = (bits & 0xF) == 0xF; + boolean prevFullSet = (bits & 0b1111) == 0b1111; bits &= ~(1 << slot.getIndex()); nbt.putByte(NETHERITE_DIVING_BITS_KEY, bits); @@ -88,59 +83,10 @@ public final class NetheriteDivingHandler { } } + // TODO: sync to the client + // The feature works without syncing because health and burning are calculated server-side and synced through vanilla code. + // This method will not be called when the entity is wearing a full diving set on creation because the NBT values are persistent. public static void setFireImmune(LivingEntity entity, boolean fireImmune) { entity.getPersistentData().putBoolean(FIRE_IMMUNE_KEY, fireImmune); - AllPackets.getChannel().send(PacketDistributor.TRACKING_ENTITY_AND_SELF.with(() -> entity), SetFireImmunePacket.create(entity)); - } - - @SubscribeEvent - public static void onStartTrackingEntity(PlayerEvent.StartTracking event) { - if (!(event.getPlayer() instanceof ServerPlayer player)) { - return; - } - - if (!(event.getTarget() instanceof LivingEntity entity)) { - return; - } - - AllPackets.getChannel().send(PacketDistributor.PLAYER.with(() -> player), SetFireImmunePacket.create(entity)); - } - - public static class SetFireImmunePacket extends SimplePacketBase { - private final int entityId; - private final boolean fireImmune; - - public SetFireImmunePacket(int entityId, boolean fireImmune) { - this.entityId = entityId; - this.fireImmune = fireImmune; - } - - public static SetFireImmunePacket create(Entity entity) { - int entityId = entity.getId(); - boolean fireImmune = entity.getPersistentData().getBoolean(FIRE_IMMUNE_KEY); - return new SetFireImmunePacket(entityId, fireImmune); - } - - public SetFireImmunePacket(FriendlyByteBuf buffer) { - entityId = buffer.readVarInt(); - fireImmune = buffer.readBoolean(); - } - - @Override - public void write(FriendlyByteBuf buffer) { - buffer.writeVarInt(entityId); - buffer.writeBoolean(fireImmune); - } - - @Override - public boolean handle(Context context) { - context.enqueueWork(() -> { - Entity entity = Minecraft.getInstance().level.getEntity(entityId); - if (entity != null) { - entity.getPersistentData().putBoolean(FIRE_IMMUNE_KEY, fireImmune); - } - }); - return true; - } } } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/ClientboundMapItemDataPacketMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/ClientboundMapItemDataPacketMixin.java index e1cfdeabd..95f162ef2 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/ClientboundMapItemDataPacketMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/ClientboundMapItemDataPacketMixin.java @@ -30,14 +30,15 @@ public class ClientboundMapItemDataPacketMixin { private List decorations; @Unique - private int[] stationIndices; + private int[] create$stationIndices; @Inject(method = "(IBZLjava/util/Collection;Lnet/minecraft/world/level/saveddata/maps/MapItemSavedData$MapPatch;)V", at = @At("RETURN")) - private void onInit(int mapId, byte scale, boolean locked, @Nullable Collection decorations, @Nullable MapItemSavedData.MapPatch colorPatch, CallbackInfo ci) { - stationIndices = getStationIndices(this.decorations); + private void create$onInit(int mapId, byte scale, boolean locked, @Nullable Collection decorations, @Nullable MapItemSavedData.MapPatch colorPatch, CallbackInfo ci) { + create$stationIndices = create$getStationIndices(this.decorations); } - private static int[] getStationIndices(List decorations) { + @Unique + private static int[] create$getStationIndices(List decorations) { if (decorations == null) { return new int[0]; } @@ -53,11 +54,11 @@ public class ClientboundMapItemDataPacketMixin { } @Inject(method = "(Lnet/minecraft/network/FriendlyByteBuf;)V", at = @At("RETURN")) - private void onInit(FriendlyByteBuf buf, CallbackInfo ci) { - stationIndices = buf.readVarIntArray(); + private void create$onInit(FriendlyByteBuf buf, CallbackInfo ci) { + create$stationIndices = buf.readVarIntArray(); if (decorations != null) { - for (int i : stationIndices) { + for (int i : create$stationIndices) { if (i >= 0 && i < decorations.size()) { MapDecoration decoration = decorations.get(i); decorations.set(i, StationMarker.Decoration.from(decoration)); @@ -67,7 +68,7 @@ public class ClientboundMapItemDataPacketMixin { } @Inject(method = "write(Lnet/minecraft/network/FriendlyByteBuf;)V", at = @At("RETURN")) - private void onWrite(FriendlyByteBuf buf, CallbackInfo ci) { - buf.writeVarIntArray(stationIndices); + private void create$onWrite(FriendlyByteBuf buf, CallbackInfo ci) { + buf.writeVarIntArray(create$stationIndices); } } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/ContraptionDriverInteractMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/ContraptionDriverInteractMixin.java index c377d9bd6..76b372e9b 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/ContraptionDriverInteractMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/ContraptionDriverInteractMixin.java @@ -17,7 +17,6 @@ import net.minecraftforge.common.extensions.IForgeEntity; @Mixin(Entity.class) @Implements(@Interface(iface = IForgeEntity.class, prefix = "iForgeEntity$")) public abstract class ContraptionDriverInteractMixin extends CapabilityProvider { - private ContraptionDriverInteractMixin(Class baseClass) { super(baseClass); } @@ -30,5 +29,4 @@ public abstract class ContraptionDriverInteractMixin extends CapabilityProvider< public boolean iForgeEntity$canRiderInteract() { return getRootVehicle() instanceof AbstractContraptionEntity; } - } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/CustomItemUseEffectsMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/CustomItemUseEffectsMixin.java index b1eb2c6f9..86a899299 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/CustomItemUseEffectsMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/CustomItemUseEffectsMixin.java @@ -26,7 +26,7 @@ public abstract class CustomItemUseEffectsMixin extends Entity { public abstract ItemStack getUseItem(); @Inject(method = "shouldTriggerItemUseEffects()Z", at = @At("HEAD"), cancellable = true) - private void onShouldTriggerUseEffects(CallbackInfoReturnable cir) { + private void create$onShouldTriggerUseEffects(CallbackInfoReturnable cir) { ItemStack using = getUseItem(); Item item = using.getItem(); if (item instanceof CustomUseEffectsItem handler) { @@ -38,7 +38,7 @@ public abstract class CustomItemUseEffectsMixin extends Entity { } @Inject(method = "triggerItemUseEffects(Lnet/minecraft/world/item/ItemStack;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;getUseAnimation()Lnet/minecraft/world/item/UseAnim;", ordinal = 0), cancellable = true) - private void onTriggerUseEffects(ItemStack stack, int count, CallbackInfo ci) { + private void create$onTriggerUseEffects(ItemStack stack, int count, CallbackInfo ci) { Item item = stack.getItem(); if (item instanceof CustomUseEffectsItem handler) { if (handler.triggerUseEffects(stack, (LivingEntity) (Object) this, count, random)) { diff --git a/src/main/java/com/simibubi/create/foundation/mixin/EnchantmentHelperMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/EnchantmentHelperMixin.java index d0aa55e15..46c6eb12f 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/EnchantmentHelperMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/EnchantmentHelperMixin.java @@ -15,7 +15,7 @@ import net.minecraft.world.item.enchantment.Enchantments; @Mixin(EnchantmentHelper.class) public class EnchantmentHelperMixin { @Inject(method = "getItemEnchantmentLevel(Lnet/minecraft/world/item/enchantment/Enchantment;Lnet/minecraft/world/item/ItemStack;)I", at = @At("HEAD"), cancellable = true) - private static void onGetItemEnchantmentLevel(Enchantment enchantment, ItemStack stack, CallbackInfoReturnable cir) { + private static void create$onGetItemEnchantmentLevel(Enchantment enchantment, ItemStack stack, CallbackInfoReturnable cir) { if (enchantment == Enchantments.AQUA_AFFINITY && stack.getItem() instanceof DivingHelmetItem) { cir.setReturnValue(1); } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/EnchantmentMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/EnchantmentMixin.java deleted file mode 100644 index 4c64707a8..000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/EnchantmentMixin.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.simibubi.create.foundation.mixin; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import com.simibubi.create.content.curiosities.armor.DivingHelmetItem; - -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.enchantment.Enchantment; -import net.minecraft.world.item.enchantment.Enchantments; - -@Mixin(Enchantment.class) -public class EnchantmentMixin { - @Inject(method = "canEnchant(Lnet/minecraft/world/item/ItemStack;)Z", at = @At("HEAD"), cancellable = true) - private void onCanEnchant(ItemStack stack, CallbackInfoReturnable cir) { - if ((Object) this == Enchantments.AQUA_AFFINITY && stack.getItem() instanceof DivingHelmetItem) { - cir.setReturnValue(false); - } - } -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/EntityContraptionInteractionMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/EntityContraptionInteractionMixin.java deleted file mode 100644 index f52baa2cb..000000000 --- a/src/main/java/com/simibubi/create/foundation/mixin/EntityContraptionInteractionMixin.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.simibubi.create.foundation.mixin; - -import java.lang.ref.Reference; -import java.util.Random; -import java.util.Set; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import org.apache.logging.log4j.util.TriConsumer; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; -import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider; -import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionHandler; - -import net.minecraft.core.BlockPos; -import net.minecraft.core.particles.BlockParticleOption; -import net.minecraft.core.particles.ParticleTypes; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.MoverType; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.block.RenderShape; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; -import net.minecraft.world.phys.Vec3; -import net.minecraftforge.common.capabilities.CapabilityProvider; - -@Mixin(Entity.class) -public abstract class EntityContraptionInteractionMixin extends CapabilityProvider { - private EntityContraptionInteractionMixin(Class baseClass) { - super(baseClass); - } - - private final Entity self = (Entity) (Object) this; - - private AbstractContraptionEntity contraption; - - @Final - @Shadow - protected Random random; - - @Shadow - private float nextStep; - - @Shadow - protected abstract float nextStep(); - - @Shadow - protected abstract void playStepSound(BlockPos p_180429_1_, BlockState p_180429_2_); - - private Set getIntersectingContraptions() { - Set contraptions = getIntersectionContraptionsStream().collect(Collectors.toSet()); - - contraptions.addAll(self.level.getEntitiesOfClass(AbstractContraptionEntity.class, self.getBoundingBox() - .inflate(1f))); - return contraptions; - } - - private Stream getIntersectionContraptionsStream() { - return ContraptionHandler.loadedContraptions.get(self.level) - .values() - .stream() - .map(Reference::get) - .filter(cEntity -> cEntity != null && cEntity.collidingEntities.containsKey(self)); - } - - private void forCollision(Vec3 anchorPos, TriConsumer action) { - getIntersectingContraptions().forEach(cEntity -> { - Vec3 localPos = ContraptionCollider.getWorldToLocalTranslation(anchorPos, cEntity); - - localPos = anchorPos.add(localPos); - - BlockPos blockPos = new BlockPos(localPos); - Contraption contraption = cEntity.getContraption(); - StructureTemplate.StructureBlockInfo info = contraption.getBlocks() - .get(blockPos); - - if (info != null) { - BlockState blockstate = info.state; - action.accept(contraption, blockstate, blockPos); - } - }); - } - - @Inject(at = @At(value = "JUMP", opcode = 154, // IFNE line 661 injecting before `!blockstate.isAir(this.world, blockpos)` - ordinal = 7), method = "move") - private void movementStepMixin(MoverType mover, Vec3 movement, CallbackInfo ci) { // involves block step sounds on contraptions - Vec3 worldPos = self.position() - .add(0, -0.2, 0); - AtomicBoolean stepped = new AtomicBoolean(false); - - forCollision(worldPos, (contraption, blockstate, blockPos) -> { - bindContraption(contraption); - playStepSound(blockPos, blockstate); - unbindContraption(); - stepped.set(true); - }); - - if (stepped.get()) - this.nextStep = this.nextStep(); - } - - @Inject(at = @At(value = "TAIL"), method = "move") - private void movementMixin(MoverType mover, Vec3 movement, CallbackInfo ci) { - // involves client-side view bobbing animation on contraptions - if (!self.level.isClientSide) - return; - if (self.isOnGround()) - return; - if (self.isPassenger()) - return; - - Vec3 worldPos = self.position() - .add(0, -0.2, 0); - boolean onAtLeastOneContraption = getIntersectionContraptionsStream().anyMatch(cEntity -> { - Vec3 localPos = ContraptionCollider.getWorldToLocalTranslation(worldPos, cEntity); - - localPos = worldPos.add(localPos); - - BlockPos blockPos = new BlockPos(localPos); - Contraption contraption = cEntity.getContraption(); - StructureTemplate.StructureBlockInfo info = contraption.getBlocks() - .get(blockPos); - - if (info == null) - return false; - - cEntity.registerColliding(self); - return true; - }); - - if (!onAtLeastOneContraption) - return; - - self.setOnGround(true); - self.getPersistentData() - .putBoolean("ContraptionGrounded", true); - } - - @Inject(method = { "spawnSprintParticle" }, at = @At(value = "TAIL")) - private void createRunningParticlesMixin(CallbackInfo ci) { - Vec3 worldPos = self.position() - .add(0, -0.2, 0); - BlockPos pos = new BlockPos(worldPos); // pos where particles are spawned - - forCollision(worldPos, (contraption, blockstate, blockpos) -> { - if (!blockstate.addRunningEffects(self.level, blockpos, self) - && blockstate.getRenderShape() != RenderShape.INVISIBLE) { - Vec3 vec3d = self.getDeltaMovement(); - self.level.addParticle(new BlockParticleOption(ParticleTypes.BLOCK, blockstate).setPos(pos), - self.getX() + ((double) random.nextFloat() - 0.5D) * (double) self.getBbWidth(), self.getY() + 0.1D, - self.getZ() + ((double) random.nextFloat() - 0.5D) * (double) self.getBbWidth(), vec3d.x * -4.0D, 1.5D, - vec3d.z * -4.0D); - } - }); - } - - @Inject(method = "playSound", at = @At("HEAD"), cancellable = true) - private void playSoundShifted(SoundEvent event, float pitch, float volume, CallbackInfo ci) { - if (this.contraption != null && (!self.isSilent() || self instanceof Player)) { - double x = self.getX(); - double y = self.getY(); - double z = self.getZ(); - Vec3 worldPos = ContraptionCollider.getWorldToLocalTranslation(new Vec3(x, y, z), this.contraption); - - worldPos = worldPos.add(x, y, z); - - self.level.playSound(null, worldPos.x + x, worldPos.y + y, worldPos.z + z, event, self.getSoundSource(), - pitch, volume); - - ci.cancel(); - } - } - - private void bindContraption(Contraption contraption) { - bindContraption(contraption.entity); - } - - private void bindContraption(AbstractContraptionEntity contraption) { - this.contraption = contraption; - } - - private void unbindContraption() { - this.contraption = null; - } -} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/EntityMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/EntityMixin.java index 18cfd4b6a..a191be82f 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/EntityMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/EntityMixin.java @@ -12,7 +12,7 @@ import net.minecraft.world.entity.Entity; @Mixin(Entity.class) public class EntityMixin { @Inject(method = "fireImmune()Z", at = @At("RETURN"), cancellable = true) - public void fireImmune(CallbackInfoReturnable cir) { + public void create$onFireImmune(CallbackInfoReturnable cir) { if (!cir.getReturnValueZ()) { Entity self = (Entity) (Object) this; boolean immune = self.getPersistentData().getBoolean(NetheriteDivingHandler.FIRE_IMMUNE_KEY); diff --git a/src/main/java/com/simibubi/create/foundation/mixin/LavaSwimmingMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/LavaSwimmingMixin.java index 3ab526b8c..921bdad48 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/LavaSwimmingMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/LavaSwimmingMixin.java @@ -19,14 +19,14 @@ import net.minecraft.world.phys.Vec3; @Mixin(LivingEntity.class) public abstract class LavaSwimmingMixin extends Entity { - public LavaSwimmingMixin(EntityType type, Level level) { + private LavaSwimmingMixin(EntityType type, Level level) { super(type, level); } @Inject(method = "travel(Lnet/minecraft/world/phys/Vec3;)V", slice = @Slice(from = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;isInLava()Z")), at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;move(Lnet/minecraft/world/entity/MoverType;Lnet/minecraft/world/phys/Vec3;)V", shift = Shift.AFTER, ordinal = 0)) - private void onLavaTravel(Vec3 travelVector, CallbackInfo ci) { + private void create$onLavaTravel(Vec3 travelVector, CallbackInfo ci) { ItemStack bootsStack = DivingBootsItem.getWornItem(this); if (bootsStack != null && AllItems.NETHERITE_DIVING_BOOTS.isIn(bootsStack)) - setDeltaMovement(getDeltaMovement().multiply(DivingBootsItem.getMovementMultiplier(this))); + setDeltaMovement(getDeltaMovement().multiply(DivingBootsItem.getMovementMultiplier((LivingEntity) (Object) this))); } } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/MainMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/MainMixin.java index da309104b..5bdcd354a 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/MainMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/MainMixin.java @@ -19,7 +19,6 @@ import java.util.Collection; @Mixin(Main.class) public class MainMixin { - /** * Forge completely bypasses vanilla's * {@link GameTestServer#create(Thread, LevelStorageAccess, PackRepository, Collection, BlockPos)}, diff --git a/src/main/java/com/simibubi/create/foundation/mixin/MapItemSavedDataMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/MapItemSavedDataMixin.java index 152434953..1e0c8386b 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/MapItemSavedDataMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/MapItemSavedDataMixin.java @@ -53,13 +53,13 @@ public class MapItemSavedDataMixin implements StationMapData { private int trackedDecorationCount; @Unique - private final Map stationMarkers = Maps.newHashMap(); + private final Map create$stationMarkers = Maps.newHashMap(); @Inject( method = "load(Lnet/minecraft/nbt/CompoundTag;)Lnet/minecraft/world/level/saveddata/maps/MapItemSavedData;", at = @At("RETURN") ) - private static void onLoad(CompoundTag compound, CallbackInfoReturnable cir) { + private static void create$onLoad(CompoundTag compound, CallbackInfoReturnable cir) { MapItemSavedData mapData = cir.getReturnValue(); StationMapData stationMapData = (StationMapData) mapData; @@ -74,9 +74,9 @@ public class MapItemSavedDataMixin implements StationMapData { method = "save(Lnet/minecraft/nbt/CompoundTag;)Lnet/minecraft/nbt/CompoundTag;", at = @At("RETURN") ) - public void onSave(CompoundTag compound, CallbackInfoReturnable cir) { + public void create$onSave(CompoundTag compound, CallbackInfoReturnable cir) { ListTag listTag = new ListTag(); - for (StationMarker stationMarker : stationMarkers.values()) { + for (StationMarker stationMarker : create$stationMarkers.values()) { listTag.add(stationMarker.save()); } compound.put(STATION_MARKERS_KEY, listTag); @@ -84,7 +84,7 @@ public class MapItemSavedDataMixin implements StationMapData { @Override public void addStationMarker(StationMarker marker) { - stationMarkers.put(marker.getId(), marker); + create$stationMarkers.put(marker.getId(), marker); int scaleMultiplier = 1 << scale; float localX = (marker.getTarget().getX() - x) / (float) scaleMultiplier; @@ -144,7 +144,7 @@ public class MapItemSavedDataMixin implements StationMapData { if (marker == null) return false; - if (stationMarkers.remove(marker.getId(), marker)) { + if (create$stationMarkers.remove(marker.getId(), marker)) { removeDecoration(marker.getId()); return true; } @@ -161,12 +161,13 @@ public class MapItemSavedDataMixin implements StationMapData { method = "checkBanners(Lnet/minecraft/world/level/BlockGetter;II)V", at = @At("RETURN") ) - public void checkBanners(BlockGetter blockGetter, int x, int z, CallbackInfo ci) { - checkStations(blockGetter, x, z); + public void create$onCheckBanners(BlockGetter blockGetter, int x, int z, CallbackInfo ci) { + create$checkStations(blockGetter, x, z); } - private void checkStations(BlockGetter blockGetter, int x, int z) { - Iterator iterator = stationMarkers.values().iterator(); + @Unique + private void create$checkStations(BlockGetter blockGetter, int x, int z) { + Iterator iterator = create$stationMarkers.values().iterator(); List newMarkers = new ArrayList<>(); while (iterator.hasNext()) { diff --git a/src/main/java/com/simibubi/create/foundation/mixin/WaterWheelFluidSpreadMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/WaterWheelFluidSpreadMixin.java index 3b124d539..80f386189 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/WaterWheelFluidSpreadMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/WaterWheelFluidSpreadMixin.java @@ -20,9 +20,8 @@ import net.minecraft.world.level.material.FluidState; @Mixin(FlowingFluid.class) public class WaterWheelFluidSpreadMixin { - - @Inject(at = @At("HEAD"), cancellable = true, method = "canPassThrough(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/world/level/material/Fluid;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/Direction;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/material/FluidState;)Z") - protected void canPassThroughOnWaterWheel(BlockGetter pLevel, Fluid pFluid, BlockPos pFromPos, BlockState p_75967_, + @Inject(method = "canPassThrough(Lnet/minecraft/world/level/BlockGetter;Lnet/minecraft/world/level/material/Fluid;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/Direction;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/material/FluidState;)Z", at = @At("HEAD"), cancellable = true) + protected void create$canPassThroughOnWaterWheel(BlockGetter pLevel, Fluid pFluid, BlockPos pFromPos, BlockState p_75967_, Direction pDirection, BlockPos p_75969_, BlockState p_75970_, FluidState p_75971_, CallbackInfoReturnable cir) { @@ -43,5 +42,4 @@ public class WaterWheelFluidSpreadMixin { && irotate.getRotationAxis(belowState) == pDirection.getAxis()) cir.setReturnValue(false); } - } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/BlockDestructionProgressMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/BlockDestructionProgressMixin.java similarity index 77% rename from src/main/java/com/simibubi/create/foundation/mixin/BlockDestructionProgressMixin.java rename to src/main/java/com/simibubi/create/foundation/mixin/client/BlockDestructionProgressMixin.java index 9d1fa6f41..61cefd23e 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/BlockDestructionProgressMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/BlockDestructionProgressMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin; +package com.simibubi.create.foundation.mixin.client; import java.util.Set; @@ -13,15 +13,15 @@ import net.minecraft.server.level.BlockDestructionProgress; @Mixin(BlockDestructionProgress.class) public class BlockDestructionProgressMixin implements BlockDestructionProgressExtension { @Unique - private Set extraPositions; + private Set create$extraPositions; @Override public Set getExtraPositions() { - return extraPositions; + return create$extraPositions; } @Override public void setExtraPositions(Set positions) { - extraPositions = positions; + create$extraPositions = positions; } } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/CameraMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/CameraMixin.java similarity index 84% rename from src/main/java/com/simibubi/create/foundation/mixin/CameraMixin.java rename to src/main/java/com/simibubi/create/foundation/mixin/client/CameraMixin.java index f6a4aff92..bd06cb404 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/CameraMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/CameraMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin; +package com.simibubi.create.foundation.mixin.client; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -15,7 +15,7 @@ public abstract class CameraMixin { at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Camera;getMaxZoom(D)D"), index = 0 ) - public double modifyCameraOffset(double originalValue) { + public double create$modifyCameraOffset(double originalValue) { return originalValue * CameraDistanceModifier.getMultiplier(); } } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/client/EntityContraptionInteractionMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/EntityContraptionInteractionMixin.java new file mode 100644 index 000000000..18ca205c7 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/EntityContraptionInteractionMixin.java @@ -0,0 +1,172 @@ +package com.simibubi.create.foundation.mixin.client; + +import java.lang.ref.Reference; +import java.util.Random; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.apache.commons.lang3.mutable.MutableBoolean; +import org.apache.logging.log4j.util.TriConsumer; +import org.objectweb.asm.Opcodes; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity; +import com.simibubi.create.content.contraptions.components.structureMovement.Contraption; +import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionCollider; +import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionHandler; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.BlockParticleOption; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityDimensions; +import net.minecraft.world.entity.MoverType; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.common.capabilities.CapabilityProvider; + +@Mixin(Entity.class) +public abstract class EntityContraptionInteractionMixin extends CapabilityProvider { + private EntityContraptionInteractionMixin(Class baseClass) { + super(baseClass); + } + + @Shadow + public Level level; + + @Shadow + private Vec3 position; + + @Shadow + private float nextStep; + + @Shadow + @Final + protected Random random; + + @Shadow + private EntityDimensions dimensions; + + @Shadow + protected abstract float nextStep(); + + @Shadow + protected abstract void playStepSound(BlockPos pos, BlockState state); + + @Unique + private Stream create$getIntersectionContraptionsStream() { + return ContraptionHandler.loadedContraptions.get(level) + .values() + .stream() + .map(Reference::get) + .filter(cEntity -> cEntity != null && cEntity.collidingEntities.containsKey((Entity) (Object) this)); + } + + @Unique + private Set create$getIntersectingContraptions() { + Set contraptions = create$getIntersectionContraptionsStream().collect(Collectors.toSet()); + + contraptions.addAll(level.getEntitiesOfClass(AbstractContraptionEntity.class, ((Entity) (Object) this).getBoundingBox() + .inflate(1f))); + return contraptions; + } + + @Unique + private void forCollision(Vec3 worldPos, TriConsumer action) { + create$getIntersectingContraptions().forEach(cEntity -> { + Vec3 localPos = ContraptionCollider.worldToLocalPos(worldPos, cEntity); + + BlockPos blockPos = new BlockPos(localPos); + Contraption contraption = cEntity.getContraption(); + StructureTemplate.StructureBlockInfo info = contraption.getBlocks() + .get(blockPos); + + if (info != null) { + BlockState blockstate = info.state; + action.accept(contraption, blockstate, blockPos); + } + }); + } + + // involves block step sounds on contraptions + // IFNE line 661 injecting before `!blockstate.isAir(this.world, blockpos)` + @Inject(method = "move", at = @At(value = "JUMP", opcode = Opcodes.IFNE, ordinal = 7)) + private void create$contraptionStepSounds(MoverType mover, Vec3 movement, CallbackInfo ci) { + Vec3 worldPos = position.add(0, -0.2, 0); + MutableBoolean stepped = new MutableBoolean(false); + + forCollision(worldPos, (contraption, state, pos) -> { + playStepSound(pos, state); + stepped.setTrue(); + }); + + if (stepped.booleanValue()) + nextStep = nextStep(); + } + + // involves client-side view bobbing animation on contraptions + @Inject(method = "move", at = @At(value = "TAIL")) + private void create$onMove(MoverType mover, Vec3 movement, CallbackInfo ci) { + if (!level.isClientSide) + return; + Entity self = (Entity) (Object) this; + if (self.isOnGround()) + return; + if (self.isPassenger()) + return; + + Vec3 worldPos = position.add(0, -0.2, 0); + boolean onAtLeastOneContraption = create$getIntersectionContraptionsStream().anyMatch(cEntity -> { + Vec3 localPos = ContraptionCollider.worldToLocalPos(worldPos, cEntity); + + BlockPos blockPos = new BlockPos(localPos); + Contraption contraption = cEntity.getContraption(); + StructureTemplate.StructureBlockInfo info = contraption.getBlocks() + .get(blockPos); + + if (info == null) + return false; + + cEntity.registerColliding(self); + return true; + }); + + if (!onAtLeastOneContraption) + return; + + self.setOnGround(true); + self.getPersistentData() + .putBoolean("ContraptionGrounded", true); + } + + @Inject(method = "spawnSprintParticle", at = @At(value = "TAIL")) + private void create$onSpawnSprintParticle(CallbackInfo ci) { + Entity self = (Entity) (Object) this; + Vec3 worldPos = position.add(0, -0.2, 0); + BlockPos particlePos = new BlockPos(worldPos); // pos where particles are spawned + + forCollision(worldPos, (contraption, state, pos) -> { + if (!state.addRunningEffects(level, pos, self) + && state.getRenderShape() != RenderShape.INVISIBLE) { + Vec3 speed = self.getDeltaMovement(); + level.addParticle( + new BlockParticleOption(ParticleTypes.BLOCK, state).setPos(particlePos), + self.getX() + ((double) random.nextFloat() - 0.5D) * (double) dimensions.width, + self.getY() + 0.1D, + self.getZ() + ((double) random.nextFloat() - 0.5D) * (double) dimensions.height, + speed.x * -4.0D, 1.5D, speed.z * -4.0D + ); + } + }); + } +} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/FixNormalScalingMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/FixNormalScalingMixin.java similarity index 88% rename from src/main/java/com/simibubi/create/foundation/mixin/FixNormalScalingMixin.java rename to src/main/java/com/simibubi/create/foundation/mixin/client/FixNormalScalingMixin.java index c50a52115..4eb81c31c 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/FixNormalScalingMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/FixNormalScalingMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin; +package com.simibubi.create.foundation.mixin.client; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -18,7 +18,7 @@ public class FixNormalScalingMixin { * same as in the beginning. */ @Inject(at = @At(value = "INVOKE", target = "Lcom/mojang/math/Matrix3f;mul(F)V", shift = Shift.AFTER), method = "scale(FFF)V", cancellable = true) - private void returnAfterNegate(float x, float y, float z, CallbackInfo ci) { + private void create$returnAfterNegate(float x, float y, float z, CallbackInfo ci) { ci.cancel(); } @@ -30,7 +30,7 @@ public class FixNormalScalingMixin { * does not work for negative numbers. */ @ModifyArg(at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Mth;fastInvCubeRoot(F)F"), method = "scale(FFF)V") - private float absInvCbrtInput(float input) { + private float create$absInvCbrtInput(float input) { return Math.abs(input); } } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/GameRendererMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/GameRendererMixin.java similarity index 67% rename from src/main/java/com/simibubi/create/foundation/mixin/GameRendererMixin.java rename to src/main/java/com/simibubi/create/foundation/mixin/client/GameRendererMixin.java index dcaa91b11..2e3766687 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/GameRendererMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/GameRendererMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin; +package com.simibubi.create.foundation.mixin.client; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -9,14 +9,11 @@ import com.simibubi.create.content.logistics.trains.track.TrackBlockOutline; import com.simibubi.create.foundation.block.BigOutlines; import net.minecraft.client.renderer.GameRenderer; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -@OnlyIn(Dist.CLIENT) @Mixin(GameRenderer.class) public class GameRendererMixin { - @Inject(at = @At("TAIL"), method = "pick") - private void bigShapePick(CallbackInfo ci) { + @Inject(method = "pick(F)V", at = @At("TAIL")) + private void create$bigShapePick(CallbackInfo ci) { BigOutlines.pick(); TrackBlockOutline.pickCurves(); } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnPlayerMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/HeavyBootsOnPlayerMixin.java similarity index 78% rename from src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnPlayerMixin.java rename to src/main/java/com/simibubi/create/foundation/mixin/client/HeavyBootsOnPlayerMixin.java index 1fea75f35..a20daa98a 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnPlayerMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/HeavyBootsOnPlayerMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin; +package com.simibubi.create.foundation.mixin.client; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -11,22 +11,17 @@ import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.player.AbstractClientPlayer; import net.minecraft.client.player.LocalPlayer; import net.minecraft.nbt.CompoundTag; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -@OnlyIn(Dist.CLIENT) @Mixin(LocalPlayer.class) public abstract class HeavyBootsOnPlayerMixin extends AbstractClientPlayer { - private HeavyBootsOnPlayerMixin(ClientLevel level, GameProfile profile) { super(level, profile); } @Inject(method = "isUnderWater()Z", at = @At("HEAD"), cancellable = true) - public void noSwimmingWithHeavyBootsOn(CallbackInfoReturnable cir) { + public void create$noSwimmingWithHeavyBootsOn(CallbackInfoReturnable cir) { CompoundTag persistentData = getPersistentData(); if (persistentData.contains("HeavyBoots")) cir.setReturnValue(false); } - } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/HumanoidArmorLayerMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/HumanoidArmorLayerMixin.java similarity index 85% rename from src/main/java/com/simibubi/create/foundation/mixin/HumanoidArmorLayerMixin.java rename to src/main/java/com/simibubi/create/foundation/mixin/client/HumanoidArmorLayerMixin.java index 36e41735f..e3f8b8d60 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/HumanoidArmorLayerMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/HumanoidArmorLayerMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin; +package com.simibubi.create.foundation.mixin.client; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -19,7 +19,7 @@ import net.minecraft.world.item.ItemStack; @Mixin(HumanoidArmorLayer.class) public class HumanoidArmorLayerMixin { @Inject(method = "renderArmorPiece(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/EquipmentSlot;ILnet/minecraft/client/model/HumanoidModel;)V", at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/world/entity/LivingEntity;getItemBySlot(Lnet/minecraft/world/entity/EquipmentSlot;)Lnet/minecraft/world/item/ItemStack;"), locals = LocalCapture.CAPTURE_FAILHARD, cancellable = true) - private void onRenderArmorPiece(PoseStack poseStack, MultiBufferSource bufferSource, LivingEntity entity, EquipmentSlot slot, int light, HumanoidModel model, CallbackInfo ci, ItemStack stack) { + private void create$onRenderArmorPiece(PoseStack poseStack, MultiBufferSource bufferSource, LivingEntity entity, EquipmentSlot slot, int light, HumanoidModel model, CallbackInfo ci, ItemStack stack) { if (stack.getItem() instanceof CustomRenderedArmorItem renderer) { renderer.renderArmorPiece((HumanoidArmorLayer) (Object) this, poseStack, bufferSource, entity, slot, light, model, stack); ci.cancel(); diff --git a/src/main/java/com/simibubi/create/foundation/mixin/LevelRendererMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/LevelRendererMixin.java similarity index 90% rename from src/main/java/com/simibubi/create/foundation/mixin/LevelRendererMixin.java rename to src/main/java/com/simibubi/create/foundation/mixin/client/LevelRendererMixin.java index 696240a80..f7f748bd8 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/LevelRendererMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/LevelRendererMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin; +package com.simibubi.create.foundation.mixin.client; import java.util.Set; import java.util.SortedSet; @@ -35,7 +35,7 @@ public class LevelRendererMixin { private Long2ObjectMap> destructionProgress; @Inject(method = "destroyBlockProgress(ILnet/minecraft/core/BlockPos;I)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/BlockDestructionProgress;updateTick(I)V", shift = Shift.AFTER), locals = LocalCapture.CAPTURE_FAILHARD) - private void onDestroyBlockProgress(int breakerId, BlockPos pos, int progress, CallbackInfo ci, BlockDestructionProgress progressObj) { + private void create$onDestroyBlockProgress(int breakerId, BlockPos pos, int progress, CallbackInfo ci, BlockDestructionProgress progressObj) { BlockState state = level.getBlockState(pos); IBlockRenderProperties properties = RenderProperties.get(state); if (properties instanceof MultiPosDestructionHandler handler) { @@ -51,7 +51,7 @@ public class LevelRendererMixin { } @Inject(method = "removeProgress(Lnet/minecraft/server/level/BlockDestructionProgress;)V", at = @At("RETURN")) - private void onRemoveProgress(BlockDestructionProgress progress, CallbackInfo ci) { + private void create$onRemoveProgress(BlockDestructionProgress progress, CallbackInfo ci) { Set extraPositions = ((BlockDestructionProgressExtension) progress).getExtraPositions(); if (extraPositions != null) { for (BlockPos extraPos : extraPositions) { diff --git a/src/main/java/com/simibubi/create/foundation/mixin/MapRendererMapInstanceMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/MapRendererMapInstanceMixin.java similarity index 76% rename from src/main/java/com/simibubi/create/foundation/mixin/MapRendererMapInstanceMixin.java rename to src/main/java/com/simibubi/create/foundation/mixin/client/MapRendererMapInstanceMixin.java index ed8f08cfa..1d7aba651 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/MapRendererMapInstanceMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/MapRendererMapInstanceMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin; +package com.simibubi.create.foundation.mixin.client; import java.util.Iterator; @@ -27,7 +27,7 @@ public class MapRendererMapInstanceMixin { @Group(name = "custom_decoration_rendering", min = 1, max = 1) @Inject(method = "draw(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ZI)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/saveddata/maps/MapDecoration;render(I)Z", remap = false), locals = LocalCapture.CAPTURE_FAILHARD) - private void onDraw(PoseStack poseStack, MultiBufferSource bufferSource, boolean active, int packedLight, CallbackInfo ci, int i, int j, float f, Matrix4f matrix4f, VertexConsumer vertexConsumer, int index, Iterator iterator, MapDecoration decoration) { + private void create$onDraw(PoseStack poseStack, MultiBufferSource bufferSource, boolean active, int packedLight, CallbackInfo ci, int i, int j, float f, Matrix4f matrix4f, VertexConsumer vertexConsumer, int index, Iterator iterator, MapDecoration decoration) { if (decoration instanceof CustomRenderedMapDecoration renderer) { renderer.render(poseStack, bufferSource, active, packedLight, data, index); } @@ -35,7 +35,7 @@ public class MapRendererMapInstanceMixin { @Group(name = "custom_decoration_rendering") @Inject(method = "draw(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;ZI)V", at = @At(value = "FIELD", target = "net/optifine/reflect/Reflector.ForgeMapDecoration_render:Lnet/optifine/reflect/ReflectorMethod;", opcode = Opcodes.GETSTATIC, ordinal = 1, remap = false), locals = LocalCapture.CAPTURE_FAILHARD) - private void onDrawOptifine(PoseStack poseStack, MultiBufferSource bufferSource, boolean active, int packedLight, CallbackInfo ci, int i, int j, float f, Matrix4f matrix4f, VertexConsumer vertexConsumer, int index, Iterator iterator, MapDecoration decoration) { + private void create$onDrawOptifine(PoseStack poseStack, MultiBufferSource bufferSource, boolean active, int packedLight, CallbackInfo ci, int i, int j, float f, Matrix4f matrix4f, VertexConsumer vertexConsumer, int index, Iterator iterator, MapDecoration decoration) { if (decoration instanceof CustomRenderedMapDecoration renderer) { renderer.render(poseStack, bufferSource, active, packedLight, data, index); } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/ModelDataRefreshMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/ModelDataRefreshMixin.java similarity index 84% rename from src/main/java/com/simibubi/create/foundation/mixin/ModelDataRefreshMixin.java rename to src/main/java/com/simibubi/create/foundation/mixin/client/ModelDataRefreshMixin.java index 516894522..3d90c58a7 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/ModelDataRefreshMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/ModelDataRefreshMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin; +package com.simibubi.create.foundation.mixin.client; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -17,20 +17,18 @@ import net.minecraftforge.client.model.ModelDataManager; @OnlyIn(Dist.CLIENT) @Mixin(ModelDataManager.class) public class ModelDataRefreshMixin { - /** * Normally ModelDataManager will throw an exception if a block entity tries * to refresh its model data from a world the client isn't currently in, * but we need that to not happen for block entities in fake schematic * worlds, so in those cases just do nothing instead. */ - @Inject(at = @At("HEAD"), method = "requestModelDataRefresh", cancellable = true, remap = false) - private static void requestModelDataRefresh(BlockEntity be, CallbackInfo ci) { + @Inject(method = "requestModelDataRefresh", at = @At("HEAD"), cancellable = true, remap = false) + private static void create$requestModelDataRefresh(BlockEntity be, CallbackInfo ci) { if (be != null) { Level world = be.getLevel(); if (world != Minecraft.getInstance().level && world instanceof SchematicWorld) ci.cancel(); } } - } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/PlayerRendererMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/PlayerRendererMixin.java similarity index 86% rename from src/main/java/com/simibubi/create/foundation/mixin/PlayerRendererMixin.java rename to src/main/java/com/simibubi/create/foundation/mixin/client/PlayerRendererMixin.java index 50c7dd23d..fb27d9f15 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/PlayerRendererMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/PlayerRendererMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin; +package com.simibubi.create.foundation.mixin.client; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -17,7 +17,7 @@ import net.minecraft.world.item.ItemStack; @Mixin(PlayerRenderer.class) public class PlayerRendererMixin { @Inject(method = "getArmPose(Lnet/minecraft/client/player/AbstractClientPlayer;Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/client/model/HumanoidModel$ArmPose;", at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/client/player/AbstractClientPlayer;getItemInHand(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack;"), locals = LocalCapture.CAPTURE_FAILHARD, cancellable = true) - private static void onGetArmPose(AbstractClientPlayer player, InteractionHand hand, CallbackInfoReturnable cir, ItemStack stack) { + private static void create$onGetArmPose(AbstractClientPlayer player, InteractionHand hand, CallbackInfoReturnable cir, ItemStack stack) { if (stack.getItem() instanceof CustomArmPoseItem armPoseProvider) { ArmPose pose = armPoseProvider.getArmPose(stack, player, hand); if (pose != null) { diff --git a/src/main/java/com/simibubi/create/foundation/mixin/WindowResizeMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/client/WindowResizeMixin.java similarity index 64% rename from src/main/java/com/simibubi/create/foundation/mixin/WindowResizeMixin.java rename to src/main/java/com/simibubi/create/foundation/mixin/client/WindowResizeMixin.java index 515cfea40..d79e8b831 100644 --- a/src/main/java/com/simibubi/create/foundation/mixin/WindowResizeMixin.java +++ b/src/main/java/com/simibubi/create/foundation/mixin/client/WindowResizeMixin.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.mixin; +package com.simibubi.create.foundation.mixin.client; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; @@ -11,18 +11,15 @@ import com.mojang.blaze3d.platform.Window; import com.simibubi.create.foundation.gui.UIRenderHelper; import net.minecraft.client.Minecraft; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -@OnlyIn(Dist.CLIENT) @Mixin(Minecraft.class) public class WindowResizeMixin { + @Shadow + @Final + private Window window; - @Shadow @Final private Window window; - - @Inject(at = @At("TAIL"), method = "resizeDisplay") - private void updateWindowSize(CallbackInfo ci) { + @Inject(method = "resizeDisplay()V", at = @At("TAIL")) + private void create$updateWindowSize(CallbackInfo ci) { UIRenderHelper.updateWindowSize(window); } - } diff --git a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java index 4220962fa..fa6722e1d 100644 --- a/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java +++ b/src/main/java/com/simibubi/create/foundation/networking/AllPackets.java @@ -38,7 +38,6 @@ import com.simibubi.create.content.contraptions.components.structureMovement.tra import com.simibubi.create.content.contraptions.fluids.actors.FluidSplashPacket; import com.simibubi.create.content.contraptions.relays.advanced.sequencer.ConfigureSequencedGearshiftPacket; import com.simibubi.create.content.contraptions.relays.gauge.GaugeObservedPacket; -import com.simibubi.create.content.curiosities.armor.NetheriteDivingHandler; import com.simibubi.create.content.curiosities.bell.SoulPulseEffectPacket; import com.simibubi.create.content.curiosities.clipboard.ClipboardEditPacket; import com.simibubi.create.content.curiosities.symmetry.ConfigureSymmetryWandPacket; @@ -200,15 +199,13 @@ public enum AllPackets { TRACK_GRAPH_ROLL_CALL(TrackGraphRollCallPacket.class, TrackGraphRollCallPacket::new, PLAY_TO_CLIENT), UPDATE_ELEVATOR_FLOORS(ElevatorFloorListPacket.class, ElevatorFloorListPacket::new, PLAY_TO_CLIENT), CONTRAPTION_ACTOR_TOGGLE(ContraptionDisableActorPacket.class, ContraptionDisableActorPacket::new, PLAY_TO_CLIENT), - SET_FIRE_IMMUNE(NetheriteDivingHandler.SetFireImmunePacket.class, NetheriteDivingHandler.SetFireImmunePacket::new, - PLAY_TO_CLIENT), CONTRAPTION_COLLIDER_LOCK(ContraptionColliderLockPacket.class, ContraptionColliderLockPacket::new, PLAY_TO_CLIENT), ATTACHED_COMPUTER(AttachedComputerPacket.class, AttachedComputerPacket::new, PLAY_TO_CLIENT), - + ; public static final ResourceLocation CHANNEL_NAME = Create.asResource("main"); - public static final int NETWORK_VERSION = 2; + public static final int NETWORK_VERSION = 3; public static final String NETWORK_VERSION_STR = String.valueOf(NETWORK_VERSION); private static SimpleChannel channel; diff --git a/src/main/resources/create.mixins.json b/src/main/resources/create.mixins.json index c36fcab35..774b68fcd 100644 --- a/src/main/resources/create.mixins.json +++ b/src/main/resources/create.mixins.json @@ -10,7 +10,6 @@ "WaterWheelFluidSpreadMixin", "CustomItemUseEffectsMixin", "EnchantmentHelperMixin", - "EnchantmentMixin", "EntityMixin", "LavaSwimmingMixin", "MainMixin", @@ -25,18 +24,18 @@ "accessor.ServerLevelAccessor" ], "client": [ - "BlockDestructionProgressMixin", - "CameraMixin", - "EntityContraptionInteractionMixin", - "FixNormalScalingMixin", - "GameRendererMixin", - "HeavyBootsOnPlayerMixin", - "HumanoidArmorLayerMixin", - "LevelRendererMixin", - "MapRendererMapInstanceMixin", - "ModelDataRefreshMixin", - "PlayerRendererMixin", - "WindowResizeMixin", + "client.BlockDestructionProgressMixin", + "client.CameraMixin", + "client.EntityContraptionInteractionMixin", + "client.FixNormalScalingMixin", + "client.GameRendererMixin", + "client.HeavyBootsOnPlayerMixin", + "client.HumanoidArmorLayerMixin", + "client.LevelRendererMixin", + "client.MapRendererMapInstanceMixin", + "client.ModelDataRefreshMixin", + "client.PlayerRendererMixin", + "client.WindowResizeMixin", "accessor.AgeableListModelAccessor", "accessor.GameRendererAccessor", "accessor.HumanoidArmorLayerAccessor",