Cogwheel Configuration

- Reintroduced fluid-lava interactions
- Fixed incorrect uvs on horizontally connected blocks
- Encased cogwheels can now have shaft outputs
This commit is contained in:
simibubi 2021-12-04 04:17:42 +01:00
parent 117b5a93a3
commit 210af91396
49 changed files with 1224 additions and 201 deletions

View file

@ -8,8 +8,8 @@ dd468657a73fc2ad6e1ac08ace2996b6997d33e0 assets/create/blockstates/andesite_belt
da63a8be3191d6d72afef6c79e3aea3f607631f9 assets/create/blockstates/andesite_bricks_stairs.json
57be934c5bc9b3a693e4eab018d8775681d8f0fa assets/create/blockstates/andesite_bricks_wall.json
9999a75c7766781eadb12510a09264600bc846e4 assets/create/blockstates/andesite_casing.json
b657c1b88620a6baf98a70f43d74e8b67edfa0e5 assets/create/blockstates/andesite_encased_cogwheel.json
fa2c7368f738ada9bd0e05c3c61b096e6dce61cc assets/create/blockstates/andesite_encased_large_cogwheel.json
96bd534d3d84336927fb6512f9848d837d557084 assets/create/blockstates/andesite_encased_cogwheel.json
1673172100317477ca559c32fd91d16b165e0085 assets/create/blockstates/andesite_encased_large_cogwheel.json
9639b901ffdd2ecccab5575c5c9e6c7b5c901e02 assets/create/blockstates/andesite_encased_shaft.json
ca9a629472625abf741f02b94ce4578292fb14a7 assets/create/blockstates/andesite_funnel.json
1d2d8081581e07d9be4b382aede4f2de4401cc6b assets/create/blockstates/andesite_tunnel.json
@ -36,8 +36,8 @@ dea175335c5db0abe758cd208dc984c22506a176 assets/create/blockstates/blue_toolbox.
ee1299a15fca849eb42bf81507f85a54c167bbfe assets/create/blockstates/brass_belt_funnel.json
8b1dd00adcc7e74c5a9feed069e2610b15a338cb assets/create/blockstates/brass_block.json
b8dd6e505943e06706d0718ece620ab3cf943650 assets/create/blockstates/brass_casing.json
5ae1af0842f3c5954cb40f232f642268d4fd6f08 assets/create/blockstates/brass_encased_cogwheel.json
9d74bfe4e343fec771197b4d575cccdbc7ec0fba assets/create/blockstates/brass_encased_large_cogwheel.json
577adb030af119fb980ededaa7fc2a3d3ed14220 assets/create/blockstates/brass_encased_cogwheel.json
e69a71fdeb5855b2a59a31598f25eaea589c1748 assets/create/blockstates/brass_encased_large_cogwheel.json
288bad07593a8a2c8efaf44bba0ffb0011d36cd3 assets/create/blockstates/brass_encased_shaft.json
adfbd6cc5e44a0f431180aedbe65a19428299d8e assets/create/blockstates/brass_funnel.json
672eedcd3520c6d39603449165a23be9c612c620 assets/create/blockstates/brass_tunnel.json
@ -534,8 +534,14 @@ c862af2b37ccfd0123e9e96a5400be82033bbdd3 assets/create/models/block/andesite_bel
5449675d9e2e659effc9198852ce74a6be76cd4c assets/create/models/block/andesite_bricks_wall_side.json
36e485aca4c7e5aa238d71861f6dcc2a710aef36 assets/create/models/block/andesite_bricks_wall_side_tall.json
4e44ccdc5e396c4380a7e59408db50553fa25226 assets/create/models/block/andesite_casing.json
a239719fd2b985b95e686bbd76acf04a6a08b714 assets/create/models/block/andesite_encased_cogwheel.json
d401506fda2771ac5696d65b747a5a570a003ad3 assets/create/models/block/andesite_encased_large_cogwheel.json
762509cfb8602c6d0d3f959c08ad4934c2b5d8fa assets/create/models/block/andesite_encased_cogwheel.json
314489582d1cde98bc5e4fd4d2f0c9ab3cb731d3 assets/create/models/block/andesite_encased_cogwheel_bottom.json
650fa63c126652c8501a657e1b89d0ef42a8b4be assets/create/models/block/andesite_encased_cogwheel_top.json
c8f215c191f46ff1ea6f098ab32c7d27d04cb017 assets/create/models/block/andesite_encased_cogwheel_top_bottom.json
41d4e8fd8ccdf915bd4d00b97cb87be87de33486 assets/create/models/block/andesite_encased_large_cogwheel.json
f8f131a53664faa5bd84b61e83d62ed5b367bf1d assets/create/models/block/andesite_encased_large_cogwheel_bottom.json
77b3bbcb47e83f985d68b0ed0344e9f79999e797 assets/create/models/block/andesite_encased_large_cogwheel_top.json
01189fb179863ce1ef524bd5ddd5b4bebd5bbc6b assets/create/models/block/andesite_encased_large_cogwheel_top_bottom.json
8d4e4a7c6ad6d45c7aa7ca3105a025511571ff26 assets/create/models/block/andesite_funnel_horizontal_pull.json
9841d6a09a09bf4d5d6a39bdc4904d86b3a825f8 assets/create/models/block/andesite_funnel_horizontal_pull_powered.json
86d5df6e365d9b2e9682f0839f61058360828ba2 assets/create/models/block/andesite_funnel_horizontal_push.json
@ -598,7 +604,13 @@ dfc6250e28e12ff193a45891978ec50c406fc0c2 assets/create/models/block/brass_belt_f
5adb8b446817eee3a31971d708320c7104d6bbd8 assets/create/models/block/brass_block.json
2e67c147d7c69aabd9ab9f7aa80f60671d5a03aa assets/create/models/block/brass_casing.json
8cb0039684377c27a7fe20bdcacf24f871221478 assets/create/models/block/brass_encased_cogwheel.json
c735917634c87b3d289bd912c7ceb465a3cc65b6 assets/create/models/block/brass_encased_cogwheel_bottom.json
c2199a633597a73a1c2d508e5dfe0a7589b02329 assets/create/models/block/brass_encased_cogwheel_top.json
69ea566328350c282878de2ef6aa197037c5e5de assets/create/models/block/brass_encased_cogwheel_top_bottom.json
7ab46e52da9ef474f38e5b9eefbed9ba9dc53b78 assets/create/models/block/brass_encased_large_cogwheel.json
ed150a9e18889217b7f010412e4317af04af7dc1 assets/create/models/block/brass_encased_large_cogwheel_bottom.json
bb4155627c1f189e2e3bc07822d227bb0fc64bc4 assets/create/models/block/brass_encased_large_cogwheel_top.json
421cbc9bcb6511c66ff7122d1800bcd8ab866b2b assets/create/models/block/brass_encased_large_cogwheel_top_bottom.json
f7fd1f49857eca94e4135e65c85127510d666e4f assets/create/models/block/brass_funnel_horizontal_pull.json
45a23298ad03fd3b5dc2757dcd7edc18b8cce222 assets/create/models/block/brass_funnel_horizontal_pull_powered.json
a9fc7210d44b47202438668f11b31099e82c9ebd assets/create/models/block/brass_funnel_horizontal_push.json
@ -1443,8 +1455,8 @@ a513af38f164a48fd44693b70a93012f3546caff assets/create/models/item/andesite_bric
d283f86cd05ed378efd82ce46cf49bc83783069b assets/create/models/item/andesite_bricks_stairs.json
aeee006db637fad3ef9e060cfbd66453915ef5f9 assets/create/models/item/andesite_bricks_wall.json
174c9705d25f149052835fdcf7c85626afead90b assets/create/models/item/andesite_casing.json
c8c65b126c2ff1284acedc69a2470a551431bd24 assets/create/models/item/andesite_encased_cogwheel.json
03122ac6e0823ebea9844f4d87fb73440f9e35c4 assets/create/models/item/andesite_encased_large_cogwheel.json
420020284d01c72a7fb3387750fe1dd2dcfb9550 assets/create/models/item/andesite_encased_cogwheel.json
6e246e91b4ebffd5c45311057feb5d26d1cb8aec assets/create/models/item/andesite_encased_large_cogwheel.json
bc6e7469744604e578200ea87690e4dd3b25e447 assets/create/models/item/andesite_encased_shaft.json
a3866ea9f44e80b64989f2b5f8a9f344da959c87 assets/create/models/item/andesite_funnel.json
795541cf7205d90531a23cd5b388f93a03bbf925 assets/create/models/item/andesite_tunnel.json
@ -1951,7 +1963,7 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear
a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json
b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json
5049f72c327a88f175f6f9425909e098fc711100 assets/create/sounds.json
0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json
5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json
613e64b44bed959da899fdd54c1cacb227fb33f2 data/create/advancements/andesite_alloy.json
81885c6bfb85792c88aaa7c9b70f58832945d31f data/create/advancements/andesite_casing.json
83c046bd200623933545c9e4326f782fb02c87fa data/create/advancements/arm_blaze_burner.json

View file

@ -1,17 +1,56 @@
{
"variants": {
"axis=x": {
"axis=x,bottom_shaft=false,top_shaft=false": {
"model": "create:block/andesite_encased_cogwheel",
"x": 90,
"y": 90
},
"axis=y": {
"axis=y,bottom_shaft=false,top_shaft=false": {
"model": "create:block/andesite_encased_cogwheel"
},
"axis=z": {
"axis=z,bottom_shaft=false,top_shaft=false": {
"model": "create:block/andesite_encased_cogwheel",
"x": 90,
"y": 180
},
"axis=x,bottom_shaft=true,top_shaft=false": {
"model": "create:block/andesite_encased_cogwheel_bottom",
"x": 90,
"y": 90
},
"axis=y,bottom_shaft=true,top_shaft=false": {
"model": "create:block/andesite_encased_cogwheel_bottom"
},
"axis=z,bottom_shaft=true,top_shaft=false": {
"model": "create:block/andesite_encased_cogwheel_bottom",
"x": 90,
"y": 180
},
"axis=x,bottom_shaft=false,top_shaft=true": {
"model": "create:block/andesite_encased_cogwheel_top",
"x": 90,
"y": 90
},
"axis=y,bottom_shaft=false,top_shaft=true": {
"model": "create:block/andesite_encased_cogwheel_top"
},
"axis=z,bottom_shaft=false,top_shaft=true": {
"model": "create:block/andesite_encased_cogwheel_top",
"x": 90,
"y": 180
},
"axis=x,bottom_shaft=true,top_shaft=true": {
"model": "create:block/andesite_encased_cogwheel_top_bottom",
"x": 90,
"y": 90
},
"axis=y,bottom_shaft=true,top_shaft=true": {
"model": "create:block/andesite_encased_cogwheel_top_bottom"
},
"axis=z,bottom_shaft=true,top_shaft=true": {
"model": "create:block/andesite_encased_cogwheel_top_bottom",
"x": 90,
"y": 180
}
}
}

View file

@ -1,17 +1,56 @@
{
"variants": {
"axis=x": {
"axis=x,bottom_shaft=false,top_shaft=false": {
"model": "create:block/andesite_encased_large_cogwheel",
"x": 90,
"y": 90
},
"axis=y": {
"axis=y,bottom_shaft=false,top_shaft=false": {
"model": "create:block/andesite_encased_large_cogwheel"
},
"axis=z": {
"axis=z,bottom_shaft=false,top_shaft=false": {
"model": "create:block/andesite_encased_large_cogwheel",
"x": 90,
"y": 180
},
"axis=x,bottom_shaft=true,top_shaft=false": {
"model": "create:block/andesite_encased_large_cogwheel_bottom",
"x": 90,
"y": 90
},
"axis=y,bottom_shaft=true,top_shaft=false": {
"model": "create:block/andesite_encased_large_cogwheel_bottom"
},
"axis=z,bottom_shaft=true,top_shaft=false": {
"model": "create:block/andesite_encased_large_cogwheel_bottom",
"x": 90,
"y": 180
},
"axis=x,bottom_shaft=false,top_shaft=true": {
"model": "create:block/andesite_encased_large_cogwheel_top",
"x": 90,
"y": 90
},
"axis=y,bottom_shaft=false,top_shaft=true": {
"model": "create:block/andesite_encased_large_cogwheel_top"
},
"axis=z,bottom_shaft=false,top_shaft=true": {
"model": "create:block/andesite_encased_large_cogwheel_top",
"x": 90,
"y": 180
},
"axis=x,bottom_shaft=true,top_shaft=true": {
"model": "create:block/andesite_encased_large_cogwheel_top_bottom",
"x": 90,
"y": 90
},
"axis=y,bottom_shaft=true,top_shaft=true": {
"model": "create:block/andesite_encased_large_cogwheel_top_bottom"
},
"axis=z,bottom_shaft=true,top_shaft=true": {
"model": "create:block/andesite_encased_large_cogwheel_top_bottom",
"x": 90,
"y": 180
}
}
}

View file

@ -1,17 +1,56 @@
{
"variants": {
"axis=x": {
"axis=x,bottom_shaft=false,top_shaft=false": {
"model": "create:block/brass_encased_cogwheel",
"x": 90,
"y": 90
},
"axis=y": {
"axis=y,bottom_shaft=false,top_shaft=false": {
"model": "create:block/brass_encased_cogwheel"
},
"axis=z": {
"axis=z,bottom_shaft=false,top_shaft=false": {
"model": "create:block/brass_encased_cogwheel",
"x": 90,
"y": 180
},
"axis=x,bottom_shaft=true,top_shaft=false": {
"model": "create:block/brass_encased_cogwheel_bottom",
"x": 90,
"y": 90
},
"axis=y,bottom_shaft=true,top_shaft=false": {
"model": "create:block/brass_encased_cogwheel_bottom"
},
"axis=z,bottom_shaft=true,top_shaft=false": {
"model": "create:block/brass_encased_cogwheel_bottom",
"x": 90,
"y": 180
},
"axis=x,bottom_shaft=false,top_shaft=true": {
"model": "create:block/brass_encased_cogwheel_top",
"x": 90,
"y": 90
},
"axis=y,bottom_shaft=false,top_shaft=true": {
"model": "create:block/brass_encased_cogwheel_top"
},
"axis=z,bottom_shaft=false,top_shaft=true": {
"model": "create:block/brass_encased_cogwheel_top",
"x": 90,
"y": 180
},
"axis=x,bottom_shaft=true,top_shaft=true": {
"model": "create:block/brass_encased_cogwheel_top_bottom",
"x": 90,
"y": 90
},
"axis=y,bottom_shaft=true,top_shaft=true": {
"model": "create:block/brass_encased_cogwheel_top_bottom"
},
"axis=z,bottom_shaft=true,top_shaft=true": {
"model": "create:block/brass_encased_cogwheel_top_bottom",
"x": 90,
"y": 180
}
}
}

View file

@ -1,17 +1,56 @@
{
"variants": {
"axis=x": {
"axis=x,bottom_shaft=false,top_shaft=false": {
"model": "create:block/brass_encased_large_cogwheel",
"x": 90,
"y": 90
},
"axis=y": {
"axis=y,bottom_shaft=false,top_shaft=false": {
"model": "create:block/brass_encased_large_cogwheel"
},
"axis=z": {
"axis=z,bottom_shaft=false,top_shaft=false": {
"model": "create:block/brass_encased_large_cogwheel",
"x": 90,
"y": 180
},
"axis=x,bottom_shaft=true,top_shaft=false": {
"model": "create:block/brass_encased_large_cogwheel_bottom",
"x": 90,
"y": 90
},
"axis=y,bottom_shaft=true,top_shaft=false": {
"model": "create:block/brass_encased_large_cogwheel_bottom"
},
"axis=z,bottom_shaft=true,top_shaft=false": {
"model": "create:block/brass_encased_large_cogwheel_bottom",
"x": 90,
"y": 180
},
"axis=x,bottom_shaft=false,top_shaft=true": {
"model": "create:block/brass_encased_large_cogwheel_top",
"x": 90,
"y": 90
},
"axis=y,bottom_shaft=false,top_shaft=true": {
"model": "create:block/brass_encased_large_cogwheel_top"
},
"axis=z,bottom_shaft=false,top_shaft=true": {
"model": "create:block/brass_encased_large_cogwheel_top",
"x": 90,
"y": 180
},
"axis=x,bottom_shaft=true,top_shaft=true": {
"model": "create:block/brass_encased_large_cogwheel_top_bottom",
"x": 90,
"y": 90
},
"axis=y,bottom_shaft=true,top_shaft=true": {
"model": "create:block/brass_encased_large_cogwheel_top_bottom"
},
"axis=z,bottom_shaft=true,top_shaft=true": {
"model": "create:block/brass_encased_large_cogwheel_top_bottom",
"x": 90,
"y": 180
}
}
}

View file

@ -2,7 +2,7 @@
"parent": "create:block/encased_cogwheel/block",
"textures": {
"casing": "create:block/andesite_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"1": "minecraft:block/stripped_spruce_log_top",
"side": "create:block/andesite_encased_cogwheel_side"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_cogwheel/block_bottom",
"textures": {
"casing": "create:block/andesite_casing",
"1": "minecraft:block/stripped_spruce_log_top",
"side": "create:block/andesite_encased_cogwheel_side"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_cogwheel/block_top",
"textures": {
"casing": "create:block/andesite_casing",
"1": "minecraft:block/stripped_spruce_log_top",
"side": "create:block/andesite_encased_cogwheel_side"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_cogwheel/block_top_bottom",
"textures": {
"casing": "create:block/andesite_casing",
"1": "minecraft:block/stripped_spruce_log_top",
"side": "create:block/andesite_encased_cogwheel_side"
}
}

View file

@ -2,7 +2,7 @@
"parent": "create:block/encased_large_cogwheel/block",
"textures": {
"casing": "create:block/andesite_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"1": "minecraft:block/stripped_spruce_log_top",
"side": "create:block/andesite_encased_cogwheel_side_connected"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_large_cogwheel/block_bottom",
"textures": {
"casing": "create:block/andesite_casing",
"1": "minecraft:block/stripped_spruce_log_top",
"side": "create:block/andesite_encased_cogwheel_side_connected"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_large_cogwheel/block_top",
"textures": {
"casing": "create:block/andesite_casing",
"1": "minecraft:block/stripped_spruce_log_top",
"side": "create:block/andesite_encased_cogwheel_side_connected"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_large_cogwheel/block_top_bottom",
"textures": {
"casing": "create:block/andesite_casing",
"1": "minecraft:block/stripped_spruce_log_top",
"side": "create:block/andesite_encased_cogwheel_side_connected"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_cogwheel/block_bottom",
"textures": {
"casing": "create:block/brass_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"side": "create:block/brass_encased_cogwheel_side"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_cogwheel/block_top",
"textures": {
"casing": "create:block/brass_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"side": "create:block/brass_encased_cogwheel_side"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_cogwheel/block_top_bottom",
"textures": {
"casing": "create:block/brass_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"side": "create:block/brass_encased_cogwheel_side"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_large_cogwheel/block_bottom",
"textures": {
"casing": "create:block/brass_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"side": "create:block/brass_encased_cogwheel_side_connected"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_large_cogwheel/block_top",
"textures": {
"casing": "create:block/brass_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"side": "create:block/brass_encased_cogwheel_side_connected"
}
}

View file

@ -0,0 +1,8 @@
{
"parent": "create:block/encased_large_cogwheel/block_top_bottom",
"textures": {
"casing": "create:block/brass_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"side": "create:block/brass_encased_cogwheel_side_connected"
}
}

View file

@ -2,7 +2,7 @@
"parent": "create:block/encased_cogwheel/item",
"textures": {
"casing": "create:block/andesite_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"1": "minecraft:block/stripped_spruce_log_top",
"side": "create:block/andesite_encased_cogwheel_side"
}
}

View file

@ -2,7 +2,7 @@
"parent": "create:block/encased_large_cogwheel/item",
"textures": {
"casing": "create:block/andesite_casing",
"1": "minecraft:block/stripped_dark_oak_log_top",
"1": "minecraft:block/stripped_spruce_log_top",
"side": "create:block/andesite_encased_cogwheel_side_connected"
}
}

View file

@ -28,8 +28,8 @@
"trigger": "create:bracket_apply",
"conditions": {
"accepted_entries": [
"create:cogwheel",
"create:large_cogwheel"
"create:large_cogwheel",
"create:cogwheel"
]
}
},

View file

@ -6,7 +6,7 @@ import com.simibubi.create.AllTags.AllFluidTags;
import com.simibubi.create.content.contraptions.fluids.VirtualFluid;
import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid;
import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid.PotionFluidAttributes;
import com.simibubi.create.content.palettes.AllPaletteBlocks;
import com.simibubi.create.content.palettes.AllPaletteStoneTypes;
import com.simibubi.create.foundation.data.CreateRegistrate;
import com.tterrag.registrate.util.entry.FluidEntry;
@ -81,14 +81,14 @@ public class AllFluids {
@Nullable
public static BlockState getLavaInteraction(FluidState fluidState) {
Fluid fluid = fluidState.getType();
// if (fluid.isSame(HONEY.get())) TODO when fluid blocks return
// return fluidState.isSource() ? AllPaletteBlocks.LIMESTONE.getDefaultState()
// : AllPaletteBlocks.LIMESTONE_VARIANTS.registeredBlocks.get(0)
// .getDefaultState();
// if (fluid.isSame(CHOCOLATE.get()))
// return fluidState.isSource() ? AllPaletteBlocks.SCORIA.getDefaultState()
// : AllPaletteBlocks.SCORIA_VARIANTS.registeredBlocks.get(0)
// .getDefaultState();
if (fluid.isSame(HONEY.get()))
return AllPaletteStoneTypes.LIMESTONE.getBaseBlock()
.get()
.defaultBlockState();
if (fluid.isSame(CHOCOLATE.get()))
return AllPaletteStoneTypes.SCORIA.getBaseBlock()
.get()
.defaultBlockState();
return null;
}

View file

@ -28,7 +28,7 @@ public class AllSpriteShifts {
public static final CTSpriteShiftEntry FRAMED_GLASS =
getCT(OMNIDIRECTIONAL, "palettes/framed_glass", "palettes/framed_glass"),
HORIZONTAL_FRAMED_GLASS = getCT(HORIZONTAL, "palettes/framed_glass", "palettes/horizontal_framed_glass"),
HORIZONTAL_FRAMED_GLASS = getCT(CTType.HORIZONTAL_KRYPPERS, "palettes/framed_glass", "palettes/horizontal_framed_glass"),
VERTICAL_FRAMED_GLASS = getCT(VERTICAL, "palettes/framed_glass", "palettes/vertical_framed_glass"),
ORNATE_IRON_WINDOW = vertical("palettes/ornate_iron_window");

View file

@ -5,7 +5,6 @@ import com.simibubi.create.content.contraptions.base.HalfShaftInstance;
import com.simibubi.create.content.contraptions.base.HorizontalHalfShaftInstance;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
import com.simibubi.create.content.contraptions.base.ShaftlessCogInstance;
import com.simibubi.create.content.contraptions.base.SingleRotatingInstance;
import com.simibubi.create.content.contraptions.components.actors.DrillInstance;
import com.simibubi.create.content.contraptions.components.actors.DrillRenderer;
@ -109,9 +108,10 @@ import com.simibubi.create.content.contraptions.relays.elementary.BracketedKinet
import com.simibubi.create.content.contraptions.relays.elementary.SimpleKineticTileEntity;
import com.simibubi.create.content.contraptions.relays.encased.AdjustablePulleyTileEntity;
import com.simibubi.create.content.contraptions.relays.encased.ClutchTileEntity;
import com.simibubi.create.content.contraptions.relays.encased.EncasedCogInstance;
import com.simibubi.create.content.contraptions.relays.encased.ShaftInstance;
import com.simibubi.create.content.contraptions.relays.encased.ShaftRenderer;
import com.simibubi.create.content.contraptions.relays.encased.ShaftlessCogRenderer;
import com.simibubi.create.content.contraptions.relays.encased.EncasedCogRenderer;
import com.simibubi.create.content.contraptions.relays.encased.SplitShaftInstance;
import com.simibubi.create.content.contraptions.relays.encased.SplitShaftRenderer;
import com.simibubi.create.content.contraptions.relays.gauge.GaugeInstance;
@ -219,16 +219,16 @@ public class AllTileEntities {
public static final TileEntityEntry<SimpleKineticTileEntity> ENCASED_COGWHEEL = Create.registrate()
.tileEntity("encased_cogwheel", SimpleKineticTileEntity::new)
.instance(() -> ShaftlessCogInstance::small)
.instance(() -> EncasedCogInstance::small)
.validBlocks(AllBlocks.ANDESITE_ENCASED_COGWHEEL, AllBlocks.BRASS_ENCASED_COGWHEEL)
.renderer(() -> ShaftlessCogRenderer::small)
.renderer(() -> EncasedCogRenderer::small)
.register();
public static final TileEntityEntry<SimpleKineticTileEntity> ENCASED_LARGE_COGWHEEL = Create.registrate()
.tileEntity("encased_large_cogwheel", SimpleKineticTileEntity::new)
.instance(() -> ShaftlessCogInstance::large)
.instance(() -> EncasedCogInstance::large)
.validBlocks(AllBlocks.ANDESITE_ENCASED_LARGE_COGWHEEL, AllBlocks.BRASS_ENCASED_LARGE_COGWHEEL)
.renderer(() -> ShaftlessCogRenderer::large)
.renderer(() -> EncasedCogRenderer::large)
.register();
public static final TileEntityEntry<AdjustablePulleyTileEntity> ADJUSTABLE_PULLEY = Create.registrate()

View file

@ -1,51 +0,0 @@
package com.simibubi.create.content.contraptions.base;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.flwdata.RotatingData;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
public class ShaftlessCogInstance extends SingleRotatingInstance {
private boolean large;
public static ShaftlessCogInstance small(MaterialManager modelManager, KineticTileEntity tile) {
return new ShaftlessCogInstance(modelManager, tile, false);
}
public static ShaftlessCogInstance large(MaterialManager modelManager, KineticTileEntity tile) {
return new ShaftlessCogInstance(modelManager, tile, true);
}
public ShaftlessCogInstance(MaterialManager modelManager, KineticTileEntity tile, boolean large) {
super(modelManager, tile);
this.large = large;
}
@Override
protected Instancer<RotatingData> getModel() {
BlockState referenceState = tile.getBlockState();
Direction facing =
Direction.fromAxisAndDirection(referenceState.getValue(BlockStateProperties.AXIS), AxisDirection.POSITIVE);
PartialModel partial = large ? AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL : AllBlockPartials.SHAFTLESS_COGWHEEL;
return getRotatingMaterial().getModel(partial, referenceState, facing, () -> {
PoseStack poseStack = new PoseStack();
TransformStack.cast(poseStack).centre()
.rotateToFace(facing)
.multiply(Vector3f.XN.rotationDegrees(90))
.unCentre();
return poseStack;
});
}
}

View file

@ -1,21 +0,0 @@
package com.simibubi.create.content.contraptions.base;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.flwdata.RotatingData;
import com.simibubi.create.foundation.render.AllMaterialSpecs;
public class ShaftlessLargeCogInstance extends SingleRotatingInstance {
public ShaftlessLargeCogInstance(MaterialManager modelManager, KineticTileEntity tile) {
super(modelManager, tile);
}
@Override
protected Instancer<RotatingData> getModel() {
return materialManager.defaultSolid()
.material(AllMaterialSpecs.ROTATING)
.getModel(AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL, tile.getBlockState());
}
}

View file

@ -6,13 +6,13 @@ import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.materials.oriented.OrientedData;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.flwdata.RotatingData;
import com.simibubi.create.content.contraptions.base.ShaftlessCogInstance;
import com.simibubi.create.content.contraptions.relays.encased.EncasedCogInstance;
import com.simibubi.create.foundation.render.AllMaterialSpecs;
import com.simibubi.create.foundation.utility.AnimationTickHolder;
import net.minecraft.core.Direction;
public class MixerInstance extends ShaftlessCogInstance implements IDynamicInstance {
public class MixerInstance extends EncasedCogInstance implements IDynamicInstance {
private final RotatingData mixerHead;
private final OrientedData mixerPole;
@ -39,7 +39,7 @@ public class MixerInstance extends ShaftlessCogInstance implements IDynamicInsta
}
@Override
protected Instancer<RotatingData> getModel() {
protected Instancer<RotatingData> getCogModel() {
return materialManager.defaultSolid()
.material(AllMaterialSpecs.ROTATING)
.getModel(AllBlockPartials.SHAFTLESS_COGWHEEL, tile.getBlockState());

View file

@ -14,6 +14,7 @@ import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player;
@ -90,8 +91,22 @@ public class CogWheelBlock extends AbstractShaftBlock implements ICogWheel {
if (world.isClientSide)
return InteractionResult.SUCCESS;
KineticTileEntity.switchToBlockState(world, pos, encasedCog.defaultBlockState()
.setValue(AXIS, state.getValue(AXIS)));
BlockState encasedState = encasedCog.defaultBlockState()
.setValue(AXIS, state.getValue(AXIS));
for (Direction d : Iterate.directionsInAxis(state.getValue(AXIS))) {
BlockState adjacentState = world.getBlockState(pos.relative(d));
if (!(adjacentState.getBlock() instanceof IRotate))
continue;
IRotate def = (IRotate) adjacentState.getBlock();
if (!def.hasShaftTowards(world, pos.relative(d), adjacentState, d.getOpposite()))
continue;
encasedState =
encasedState.cycle(d.getAxisDirection() == AxisDirection.POSITIVE ? EncasedCogwheelBlock.TOP_SHAFT
: EncasedCogwheelBlock.BOTTOM_SHAFT);
}
KineticTileEntity.switchToBlockState(world, pos, encasedState);
return InteractionResult.SUCCESS;
}

View file

@ -36,7 +36,7 @@ public class EncasedCogCTBehaviour extends EncasedCTBehaviour {
if (large || axis == face.getAxis())
return super.connectsTo(state, other, reader, pos, otherPos, face);
if (other == state)
if (other.getBlock() == state.getBlock() && other.getValue(AXIS) == state.getValue(AXIS))
return true;
BlockState blockState = reader.getBlockState(otherPos.relative(face));
@ -82,8 +82,13 @@ public class EncasedCogCTBehaviour extends EncasedCTBehaviour {
@Override
public CTSpriteShiftEntry get(BlockState state, Direction direction) {
Axis axis = state.getValue(AXIS);
if (large || axis == direction.getAxis())
if (large || axis == direction.getAxis()) {
if (axis == direction.getAxis() && state
.getValue(direction.getAxisDirection() == AxisDirection.POSITIVE ? EncasedCogwheelBlock.TOP_SHAFT
: EncasedCogwheelBlock.BOTTOM_SHAFT))
return null;
return super.get(state, direction);
}
return sideShifts.get(axis == Axis.X || axis == Axis.Z && direction.getAxis() == Axis.X);
}

View file

@ -0,0 +1,108 @@
package com.simibubi.create.content.contraptions.relays.encased;
import java.util.Optional;
import com.jozufozu.flywheel.backend.instancing.InstanceData;
import com.jozufozu.flywheel.backend.instancing.Instancer;
import com.jozufozu.flywheel.backend.material.MaterialManager;
import com.jozufozu.flywheel.core.PartialModel;
import com.jozufozu.flywheel.util.transform.TransformStack;
import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.math.Vector3f;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.IRotate;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.KineticTileInstance;
import com.simibubi.create.content.contraptions.base.flwdata.RotatingData;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
public class EncasedCogInstance extends KineticTileInstance<KineticTileEntity> {
private boolean large;
protected RotatingData rotatingModel;
protected Optional<RotatingData> rotatingTopShaft;
protected Optional<RotatingData> rotatingBottomShaft;
public static EncasedCogInstance small(MaterialManager modelManager, KineticTileEntity tile) {
return new EncasedCogInstance(modelManager, tile, false);
}
public static EncasedCogInstance large(MaterialManager modelManager, KineticTileEntity tile) {
return new EncasedCogInstance(modelManager, tile, true);
}
public EncasedCogInstance(MaterialManager modelManager, KineticTileEntity tile, boolean large) {
super(modelManager, tile);
this.large = large;
}
@Override
public void init() {
rotatingModel = setup(getCogModel().createInstance());
Block block = blockState.getBlock();
if (!(block instanceof IRotate))
return;
IRotate def = (IRotate) block;
rotatingTopShaft = Optional.empty();
rotatingBottomShaft = Optional.empty();
for (Direction d : Iterate.directionsInAxis(axis)) {
if (!def.hasShaftTowards(tile.getLevel(), tile.getBlockPos(), blockState, d))
continue;
RotatingData data = setup(getRotatingMaterial().getModel(AllBlockPartials.SHAFT_HALF, blockState, d)
.createInstance());
if (d.getAxisDirection() == AxisDirection.POSITIVE)
rotatingTopShaft = Optional.of(data);
else
rotatingBottomShaft = Optional.of(data);
}
}
@Override
public void update() {
updateRotation(rotatingModel);
rotatingTopShaft.ifPresent(this::updateRotation);
rotatingBottomShaft.ifPresent(this::updateRotation);
}
@Override
public void updateLight() {
relight(pos, rotatingModel);
rotatingTopShaft.ifPresent(d -> relight(pos, d));
rotatingBottomShaft.ifPresent(d -> relight(pos, d));
}
@Override
public void remove() {
rotatingModel.delete();
rotatingTopShaft.ifPresent(InstanceData::delete);
rotatingBottomShaft.ifPresent(InstanceData::delete);
}
protected Instancer<RotatingData> getCogModel() {
BlockState referenceState = tile.getBlockState();
Direction facing =
Direction.fromAxisAndDirection(referenceState.getValue(BlockStateProperties.AXIS), AxisDirection.POSITIVE);
PartialModel partial = large ? AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL : AllBlockPartials.SHAFTLESS_COGWHEEL;
return getRotatingMaterial().getModel(partial, referenceState, facing, () -> {
PoseStack poseStack = new PoseStack();
TransformStack.cast(poseStack)
.centre()
.rotateToFace(facing)
.multiply(Vector3f.XN.rotationDegrees(90))
.unCentre();
return poseStack;
});
}
}

View file

@ -0,0 +1,68 @@
package com.simibubi.create.content.contraptions.relays.encased;
import com.jozufozu.flywheel.backend.Backend;
import com.mojang.blaze3d.vertex.PoseStack;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.IRotate;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
import com.simibubi.create.foundation.render.CachedBufferer;
import com.simibubi.create.foundation.render.SuperByteBuffer;
import com.simibubi.create.foundation.utility.Iterate;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.state.BlockState;
public class EncasedCogRenderer extends KineticTileEntityRenderer {
private boolean large;
public static EncasedCogRenderer small(BlockEntityRendererProvider.Context context) {
return new EncasedCogRenderer(context, false);
}
public static EncasedCogRenderer large(BlockEntityRendererProvider.Context context) {
return new EncasedCogRenderer(context, true);
}
public EncasedCogRenderer(BlockEntityRendererProvider.Context context, boolean large) {
super(context);
this.large = large;
}
@Override
protected void renderSafe(KineticTileEntity te, float partialTicks, PoseStack ms, MultiBufferSource buffer,
int light, int overlay) {
super.renderSafe(te, partialTicks, ms, buffer, light, overlay);
if (Backend.getInstance()
.canUseInstancing(te.getLevel()))
return;
BlockState blockState = te.getBlockState();
Block block = blockState.getBlock();
if (!(block instanceof IRotate))
return;
IRotate def = (IRotate) block;
for (Direction d : Iterate.directionsInAxis(getRotationAxisOf(te))) {
if (!def.hasShaftTowards(te.getLevel(), te.getBlockPos(), blockState, d))
continue;
renderRotatingBuffer(te, CachedBufferer.partialFacing(AllBlockPartials.SHAFT_HALF, te.getBlockState(), d),
ms, buffer.getBuffer(RenderType.solid()), light);
}
}
@Override
protected SuperByteBuffer getRotatedModel(KineticTileEntity te) {
return CachedBufferer.partialFacingVertical(
large ? AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL : AllBlockPartials.SHAFTLESS_COGWHEEL, te.getBlockState(),
Direction.fromAxisAndDirection(te.getBlockState()
.getValue(EncasedCogwheelBlock.AXIS), AxisDirection.POSITIVE));
}
}

View file

@ -17,21 +17,28 @@ import com.tterrag.registrate.util.entry.BlockEntry;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.core.NonNullList;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition.Builder;
import net.minecraft.world.level.block.state.properties.BooleanProperty;
public class EncasedCogwheelBlock extends RotatedPillarKineticBlock
implements ICogWheel, ITE<SimpleKineticTileEntity>, ISpecialBlockItemRequirement {
public static final BooleanProperty TOP_SHAFT = BooleanProperty.create("top_shaft");
public static final BooleanProperty BOTTOM_SHAFT = BooleanProperty.create("bottom_shaft");
boolean isLarge;
private BlockEntry<CasingBlock> casing;
@ -47,6 +54,13 @@ public class EncasedCogwheelBlock extends RotatedPillarKineticBlock
super(properties);
isLarge = large;
this.casing = casing;
registerDefaultState(defaultBlockState().setValue(TOP_SHAFT, false)
.setValue(BOTTOM_SHAFT, false));
}
@Override
protected void createBlockStateDefinition(Builder<Block, BlockState> builder) {
super.createBlockStateDefinition(builder.add(TOP_SHAFT, BOTTOM_SHAFT));
}
@Override
@ -71,7 +85,25 @@ public class EncasedCogwheelBlock extends RotatedPillarKineticBlock
@Override
public boolean skipRendering(BlockState pState, BlockState pAdjacentBlockState, Direction pDirection) {
return pState == pAdjacentBlockState;
return pState.getBlock() == pAdjacentBlockState.getBlock()
&& pState.getValue(AXIS) == pAdjacentBlockState.getValue(AXIS);
}
@Override
public InteractionResult onWrenched(BlockState state, UseOnContext context) {
if (context.getClickedFace()
.getAxis() != state.getValue(AXIS))
return super.onWrenched(state, context);
Level level = context.getLevel();
if (level.isClientSide)
return InteractionResult.SUCCESS;
BlockPos pos = context.getClickedPos();
KineticTileEntity.switchToBlockState(level, pos, state.cycle(context.getClickedFace()
.getAxisDirection() == AxisDirection.POSITIVE ? TOP_SHAFT : BOTTOM_SHAFT));
playRotateSound(level, pos);
return InteractionResult.SUCCESS;
}
@Override
@ -88,7 +120,20 @@ public class EncasedCogwheelBlock extends RotatedPillarKineticBlock
@Override
public boolean hasShaftTowards(LevelReader world, BlockPos pos, BlockState state, Direction face) {
return face.getAxis() == state.getValue(AXIS)
&& state.getValue(face.getAxisDirection() == AxisDirection.POSITIVE ? TOP_SHAFT : BOTTOM_SHAFT);
}
@Override
protected boolean areStatesKineticallyEquivalent(BlockState oldState, BlockState newState) {
if (newState.getBlock() instanceof EncasedCogwheelBlock
&& oldState.getBlock() instanceof EncasedCogwheelBlock) {
if (newState.getValue(TOP_SHAFT) != oldState.getValue(TOP_SHAFT))
return false;
if (newState.getValue(BOTTOM_SHAFT) != oldState.getValue(BOTTOM_SHAFT))
return false;
}
return super.areStatesKineticallyEquivalent(oldState, newState);
}
@Override

View file

@ -1,38 +0,0 @@
package com.simibubi.create.content.contraptions.relays.encased;
import com.simibubi.create.AllBlockPartials;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
import com.simibubi.create.foundation.render.CachedBufferer;
import com.simibubi.create.foundation.render.SuperByteBuffer;
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraft.core.Direction;
import net.minecraft.core.Direction.AxisDirection;
public class ShaftlessCogRenderer extends KineticTileEntityRenderer {
private boolean large;
public static ShaftlessCogRenderer small(BlockEntityRendererProvider.Context context) {
return new ShaftlessCogRenderer(context, false);
}
public static ShaftlessCogRenderer large(BlockEntityRendererProvider.Context context) {
return new ShaftlessCogRenderer(context, true);
}
public ShaftlessCogRenderer(BlockEntityRendererProvider.Context context, boolean large) {
super(context);
this.large = large;
}
@Override
protected SuperByteBuffer getRotatedModel(KineticTileEntity te) {
return CachedBufferer.partialFacingVertical(
large ? AllBlockPartials.SHAFTLESS_LARGE_COGWHEEL : AllBlockPartials.SHAFTLESS_COGWHEEL, te.getBlockState(),
Direction.fromAxisAndDirection(te.getBlockState()
.getValue(EncasedCogwheelBlock.AXIS), AxisDirection.POSITIVE));
}
}

View file

@ -267,7 +267,7 @@ public class PaletteBlockPattern {
PILLAR(CTType.RECTANGLE, s -> toLocation(s, "pillar")),
CAP(CTType.OMNIDIRECTIONAL, s -> toLocation(s, "cap")),
LAYERED(CTType.HORIZONTAL, s -> toLocation(s, "layered"))
LAYERED(CTType.HORIZONTAL_KRYPPERS, s -> toLocation(s, "layered"))
;

View file

@ -31,13 +31,19 @@ public abstract class CTSpriteShiftEntry extends SpriteShiftEntry {
public static class Horizontal extends CTSpriteShiftEntry {
public Horizontal() {
// Different sheet arrangement
private boolean kryppers;
public Horizontal(boolean kryppers) {
super(2);
this.kryppers = kryppers;
}
@Override
public int getTextureIndex(CTContext context) {
if (kryppers)
return !context.right && !context.left ? 0 : !context.right ? 3 : !context.left ? 2 : 1;
return (context.right ? 1 : 0) + (context.left ? 2 : 0);
}
@Override

View file

@ -29,7 +29,9 @@ public class CTSpriteShifter extends SpriteShifter {
private static CTSpriteShiftEntry create(CTType type) {
switch (type) {
case HORIZONTAL:
return new CTSpriteShiftEntry.Horizontal();
return new CTSpriteShiftEntry.Horizontal(false);
case HORIZONTAL_KRYPPERS:
return new CTSpriteShiftEntry.Horizontal(true);
case OMNIDIRECTIONAL:
return new CTSpriteShiftEntry.Omnidirectional();
case VERTICAL:
@ -44,7 +46,7 @@ public class CTSpriteShifter extends SpriteShifter {
}
public enum CTType {
OMNIDIRECTIONAL, HORIZONTAL, VERTICAL, CROSS, RECTANGLE;
OMNIDIRECTIONAL, HORIZONTAL, VERTICAL, CROSS, RECTANGLE, HORIZONTAL_KRYPPERS;
}
}

View file

@ -34,6 +34,7 @@ import com.tterrag.registrate.util.nullness.NonNullUnaryOperator;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.core.Direction.Axis;
import net.minecraft.core.Direction.AxisDirection;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.Rarity;
@ -76,46 +77,45 @@ public class BuilderTransformers {
public static <B extends EncasedCogwheelBlock, P> NonNullUnaryOperator<BlockBuilder<B, P>> encasedCogwheel(
String casing, CTSpriteShiftEntry casingShift) {
return b -> encasedCogwheelBase(b, casing, casingShift, () -> AllBlocks.COGWHEEL.get())
.blockstate((c, p) -> axisBlock(c, p, blockState -> p.models()
.withExistingParent(c.getName(), p.modLoc("block/encased_cogwheel/block"))
.texture("casing", Create.asResource("block/" + casing + "_casing"))
.texture("1", new ResourceLocation("block/stripped_dark_oak_log_top"))
.texture("side", Create.asResource("block/" + casing + "_encased_cogwheel_side")), false))
.item()
.model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/encased_cogwheel/item"))
.texture("casing", Create.asResource("block/" + casing + "_casing"))
.texture("1", new ResourceLocation("block/stripped_dark_oak_log_top"))
.texture("side", Create.asResource("block/" + casing + "_encased_cogwheel_side")))
.build();
return b -> encasedCogwheelBase(b, casing, casingShift, () -> AllBlocks.COGWHEEL.get(), false);
}
public static <B extends EncasedCogwheelBlock, P> NonNullUnaryOperator<BlockBuilder<B, P>> encasedLargeCogwheel(
String casing, CTSpriteShiftEntry casingShift) {
return b -> encasedCogwheelBase(b, casing, casingShift, () -> AllBlocks.LARGE_COGWHEEL.get())
.onRegister(CreateRegistrate.connectedTextures(new EncasedCogCTBehaviour(casingShift)))
.blockstate((c, p) -> axisBlock(c, p, blockState -> p.models()
.withExistingParent(c.getName(), p.modLoc("block/encased_large_cogwheel/block"))
.texture("casing", Create.asResource("block/" + casing + "_casing"))
.texture("1", new ResourceLocation("block/stripped_dark_oak_log_top"))
.texture("side", Create.asResource("block/" + casing + "_encased_cogwheel_side_connected")), false))
.item()
.model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/encased_large_cogwheel/item"))
.texture("casing", Create.asResource("block/" + casing + "_casing"))
.texture("1", new ResourceLocation("block/stripped_dark_oak_log_top"))
.texture("side", Create.asResource("block/" + casing + "_encased_cogwheel_side_connected")))
.build();
return b -> encasedCogwheelBase(b, casing, casingShift, () -> AllBlocks.LARGE_COGWHEEL.get(), true)
.onRegister(CreateRegistrate.connectedTextures(new EncasedCogCTBehaviour(casingShift)));
}
private static <B extends EncasedCogwheelBlock, P> BlockBuilder<B, P> encasedCogwheelBase(BlockBuilder<B, P> b,
String casing, CTSpriteShiftEntry casingShift, Supplier<ItemLike> drop) {
String casing, CTSpriteShiftEntry casingShift, Supplier<ItemLike> drop, boolean large) {
String encasedSuffix = "_encased_cogwheel_side" + (large ? "_connected" : "");
String blockFolder = large ? "encased_large_cogwheel" : "encased_cogwheel";
String wood = casing.equals("brass") ? "dark_oak" : "spruce";
return b.initialProperties(SharedProperties::stone)
.addLayer(() -> RenderType::cutoutMipped)
.properties(BlockBehaviour.Properties::noOcclusion)
.transform(BlockStressDefaults.setNoImpact())
.loot((p, lb) -> p.dropOther(lb, drop.get()))
.onRegister(CreateRegistrate.casingConnectivity((block, cc) -> cc.make(block, casingShift,
(s, f) -> f.getAxis() == s.getValue(EncasedCogwheelBlock.AXIS))));
(s, f) -> f.getAxis() == s.getValue(EncasedCogwheelBlock.AXIS)
&& !s.getValue(f.getAxisDirection() == AxisDirection.POSITIVE ? EncasedCogwheelBlock.TOP_SHAFT
: EncasedCogwheelBlock.BOTTOM_SHAFT))))
.blockstate((c, p) -> axisBlock(c, p, blockState -> {
String suffix = (blockState.getValue(EncasedCogwheelBlock.TOP_SHAFT) ? "_top" : "")
+ (blockState.getValue(EncasedCogwheelBlock.BOTTOM_SHAFT) ? "_bottom" : "");
String modelName = c.getName() + suffix;
return p.models()
.withExistingParent(modelName, p.modLoc("block/" + blockFolder + "/block" + suffix))
.texture("casing", Create.asResource("block/" + casing + "_casing"))
.texture("1", new ResourceLocation("block/stripped_" + wood + "_log_top"))
.texture("side", Create.asResource("block/" + casing + encasedSuffix));
}, false))
.item()
.model((c, p) -> p.withExistingParent(c.getName(), p.modLoc("block/" + blockFolder + "/item"))
.texture("casing", Create.asResource("block/" + casing + "_casing"))
.texture("1", new ResourceLocation("block/stripped_" + wood + "_log_top"))
.texture("side", Create.asResource("block/" + casing + encasedSuffix)))
.build();
}

View file

@ -1,10 +1,10 @@
{
"credit": "Made with Blockbench",
"textures": {
"casing": "create:block/andesite_casing",
"1": "block/stripped_spruce_log_top",
"side": "create:block/andesite_encased_cogwheel_side",
"particle": "#casing"
"particle": "create:block/andesite_casing",
"casing": "create:block/andesite_casing",
"side": "create:block/andesite_encased_cogwheel_side"
},
"elements": [
{

View file

@ -0,0 +1,96 @@
{
"credit": "Made with Blockbench",
"textures": {
"1": "block/stripped_spruce_log_top",
"4": "create:block/gearbox",
"particle": "create:block/andesite_casing",
"casing": "create:block/andesite_casing",
"side": "create:block/andesite_encased_cogwheel_side"
},
"elements": [
{
"from": [0, 1, 0],
"to": [16, 6, 16],
"faces": {
"north": {"uv": [0, 10, 16, 15], "texture": "#side"},
"east": {"uv": [0, 10, 16, 15], "texture": "#side"},
"south": {"uv": [0, 10, 16, 15], "texture": "#side"},
"west": {"uv": [0, 10, 16, 15], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#4"}
}
},
{
"from": [0, 6, 0],
"to": [16, 10, 16],
"faces": {
"north": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "north"},
"east": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "east"},
"south": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "south"},
"west": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "west"}
}
},
{
"from": [15.95, 6, 0.05],
"to": [0.05, 10, 15.95],
"faces": {
"north": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "north"},
"east": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "west"},
"south": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "south"},
"west": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "east"}
}
},
{
"from": [0, 10, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 6], "texture": "#side"},
"east": {"uv": [0, 0, 16, 6], "texture": "#side"},
"south": {"uv": [0, 0, 16, 6], "texture": "#side"},
"west": {"uv": [0, 0, 16, 6], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#casing"},
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
}
},
{
"from": [0, 0, 0],
"to": [16, 1, 2],
"faces": {
"north": {"uv": [0, 15, 16, 16], "texture": "#side"},
"east": {"uv": [14, 15, 16, 16], "texture": "#side"},
"south": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"west": {"uv": [0, 15, 2, 16], "texture": "#side"},
"down": {"uv": [0, 14, 16, 16], "texture": "#casing"}
}
},
{
"from": [14, 0, 2],
"to": [16, 1, 14],
"faces": {
"east": {"uv": [2, 15, 14, 16], "texture": "#side"},
"west": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"down": {"uv": [14, 2, 16, 14], "texture": "#casing"}
}
},
{
"from": [0, 0, 14],
"to": [16, 1, 16],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"east": {"uv": [0, 15, 2, 16], "texture": "#side"},
"south": {"uv": [0, 15, 16, 16], "texture": "#side"},
"west": {"uv": [14, 15, 16, 16], "texture": "#side"},
"down": {"uv": [0, 0, 16, 2], "texture": "#casing"}
}
},
{
"from": [0, 0, 2],
"to": [2, 1, 14],
"faces": {
"east": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"west": {"uv": [2, 15, 14, 16], "texture": "#side"},
"down": {"uv": [0, 2, 2, 14], "texture": "#casing"}
}
}
]
}

View file

@ -0,0 +1,96 @@
{
"credit": "Made with Blockbench",
"textures": {
"1": "block/stripped_spruce_log_top",
"4": "create:block/gearbox",
"particle": "create:block/andesite_casing",
"casing": "create:block/andesite_casing",
"side": "create:block/andesite_encased_cogwheel_side"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 6, 16],
"faces": {
"north": {"uv": [0, 10, 16, 16], "texture": "#side"},
"east": {"uv": [0, 10, 16, 16], "texture": "#side"},
"south": {"uv": [0, 10, 16, 16], "texture": "#side"},
"west": {"uv": [0, 10, 16, 16], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#casing"}
}
},
{
"from": [0, 6, 0],
"to": [16, 10, 16],
"faces": {
"north": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "north"},
"east": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "east"},
"south": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "south"},
"west": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "west"}
}
},
{
"from": [15.95, 6, 0.05],
"to": [0.05, 10, 15.95],
"faces": {
"north": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "north"},
"east": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "west"},
"south": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "south"},
"west": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "east"}
}
},
{
"from": [0, 10, 0],
"to": [16, 15, 16],
"faces": {
"north": {"uv": [0, 1, 16, 6], "texture": "#side"},
"east": {"uv": [0, 1, 16, 6], "texture": "#side"},
"south": {"uv": [0, 1, 16, 6], "texture": "#side"},
"west": {"uv": [0, 1, 16, 6], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
}
},
{
"from": [0, 15, 0],
"to": [16, 16, 2],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#side"},
"east": {"uv": [14, 0, 16, 1], "texture": "#side"},
"south": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"west": {"uv": [0, 0, 2, 1], "texture": "#side"},
"up": {"uv": [0, 0, 16, 2], "texture": "#casing"}
}
},
{
"from": [0, 15, 14],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"east": {"uv": [0, 0, 2, 1], "texture": "#side"},
"south": {"uv": [0, 0, 16, 1], "texture": "#side"},
"west": {"uv": [14, 0, 16, 1], "texture": "#side"},
"up": {"uv": [0, 14, 16, 16], "texture": "#casing"}
}
},
{
"from": [0, 15, 2],
"to": [2, 16, 14],
"faces": {
"east": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"west": {"uv": [2, 0, 14, 1], "texture": "#side"},
"up": {"uv": [0, 2, 2, 14], "texture": "#casing"}
}
},
{
"from": [14, 15, 2],
"to": [16, 16, 14],
"faces": {
"east": {"uv": [2, 0, 14, 1], "texture": "#side"},
"west": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"up": {"uv": [14, 2, 16, 14], "texture": "#casing"}
}
}
]
}

View file

@ -0,0 +1,136 @@
{
"credit": "Made with Blockbench",
"textures": {
"1": "block/stripped_spruce_log_top",
"4": "create:block/gearbox",
"particle": "create:block/andesite_casing",
"casing": "create:block/andesite_casing",
"side": "create:block/andesite_encased_cogwheel_side"
},
"elements": [
{
"from": [0, 1, 0],
"to": [16, 6, 16],
"faces": {
"north": {"uv": [0, 10, 16, 15], "texture": "#side"},
"east": {"uv": [0, 10, 16, 15], "texture": "#side"},
"south": {"uv": [0, 10, 16, 15], "texture": "#side"},
"west": {"uv": [0, 10, 16, 15], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#4"}
}
},
{
"from": [0, 6, 0],
"to": [16, 10, 16],
"faces": {
"north": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "north"},
"east": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "east"},
"south": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "south"},
"west": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "west"}
}
},
{
"from": [15.95, 6, 0.05],
"to": [0.05, 10, 15.95],
"faces": {
"north": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "north"},
"east": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "west"},
"south": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "south"},
"west": {"uv": [0, 6, 16, 10], "texture": "#side", "cullface": "east"}
}
},
{
"from": [0, 10, 0],
"to": [16, 15, 16],
"faces": {
"north": {"uv": [0, 1, 16, 6], "texture": "#side"},
"east": {"uv": [0, 1, 16, 6], "texture": "#side"},
"south": {"uv": [0, 1, 16, 6], "texture": "#side"},
"west": {"uv": [0, 1, 16, 6], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#4"},
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
}
},
{
"from": [0, 15, 0],
"to": [16, 16, 2],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#side"},
"east": {"uv": [14, 0, 16, 1], "texture": "#side"},
"south": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"west": {"uv": [0, 0, 2, 1], "texture": "#side"},
"up": {"uv": [0, 0, 16, 2], "texture": "#casing"}
}
},
{
"from": [0, 15, 14],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"east": {"uv": [0, 0, 2, 1], "texture": "#side"},
"south": {"uv": [0, 0, 16, 1], "texture": "#side"},
"west": {"uv": [14, 0, 16, 1], "texture": "#side"},
"up": {"uv": [0, 14, 16, 16], "texture": "#casing"}
}
},
{
"from": [0, 15, 2],
"to": [2, 16, 14],
"faces": {
"east": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"west": {"uv": [2, 0, 14, 1], "texture": "#side"},
"up": {"uv": [0, 2, 2, 14], "texture": "#casing"}
}
},
{
"from": [14, 15, 2],
"to": [16, 16, 14],
"faces": {
"east": {"uv": [2, 0, 14, 1], "texture": "#side"},
"west": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"up": {"uv": [14, 2, 16, 14], "texture": "#casing"}
}
},
{
"from": [0, 0, 0],
"to": [16, 1, 2],
"faces": {
"north": {"uv": [0, 15, 16, 16], "texture": "#side"},
"east": {"uv": [14, 15, 16, 16], "texture": "#side"},
"south": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"west": {"uv": [0, 15, 2, 16], "texture": "#side"},
"down": {"uv": [0, 14, 16, 16], "texture": "#casing"}
}
},
{
"from": [14, 0, 2],
"to": [16, 1, 14],
"faces": {
"east": {"uv": [2, 15, 14, 16], "texture": "#side"},
"west": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"down": {"uv": [14, 2, 16, 14], "texture": "#casing"}
}
},
{
"from": [0, 0, 14],
"to": [16, 1, 16],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"east": {"uv": [0, 15, 2, 16], "texture": "#side"},
"south": {"uv": [0, 15, 16, 16], "texture": "#side"},
"west": {"uv": [14, 15, 16, 16], "texture": "#side"},
"down": {"uv": [0, 0, 16, 2], "texture": "#casing"}
}
},
{
"from": [0, 0, 2],
"to": [2, 1, 14],
"faces": {
"east": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"west": {"uv": [2, 15, 14, 16], "texture": "#side"},
"down": {"uv": [0, 2, 2, 14], "texture": "#casing"}
}
}
]
}

View file

@ -1,10 +1,10 @@
{
"credit": "Made with Blockbench",
"textures": {
"casing": "create:block/andesite_casing",
"1": "block/stripped_spruce_log_top",
"side": "create:block/andesite_encased_cogwheel_side_connected",
"particle": "#casing"
"particle": "create:block/andesite_casing",
"casing": "create:block/andesite_casing",
"side": "create:block/andesite_encased_cogwheel_side_connected"
},
"elements": [
{

View file

@ -0,0 +1,84 @@
{
"credit": "Made with Blockbench",
"textures": {
"1": "block/stripped_spruce_log_top",
"3": "create:block/gearbox",
"particle": "create:block/andesite_casing",
"casing": "create:block/andesite_casing",
"side": "create:block/andesite_encased_cogwheel_side_connected"
},
"elements": [
{
"from": [0, 1, 0],
"to": [16, 6, 16],
"faces": {
"north": {"uv": [8, 13, 16, 15.5], "texture": "#side"},
"east": {"uv": [8, 13, 16, 15.5], "texture": "#side"},
"south": {"uv": [8, 13, 16, 15.5], "texture": "#side"},
"west": {"uv": [8, 13, 16, 15.5], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#3"}
}
},
{
"from": [0, 10, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [8, 8, 16, 11], "texture": "#side"},
"east": {"uv": [8, 8, 16, 11], "texture": "#side"},
"south": {"uv": [8, 8, 16, 11], "texture": "#side"},
"west": {"uv": [8, 8, 16, 11], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#casing"},
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
}
},
{
"from": [0, 0, 0],
"to": [16, 1, 2],
"faces": {
"north": {"uv": [0, 15, 16, 16], "texture": "#casing"},
"east": {"uv": [14, 15, 16, 16], "texture": "#casing"},
"south": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"west": {"uv": [0, 15, 2, 16], "texture": "#casing"},
"up": {"uv": [0, 0, 0, 0], "texture": "#casing"},
"down": {"uv": [0, 14, 16, 16], "texture": "#casing"}
}
},
{
"from": [14, 0, 2],
"to": [16, 1, 14],
"faces": {
"north": {"uv": [0, 0, 0, 0], "texture": "#casing"},
"east": {"uv": [2, 15, 14, 16], "texture": "#casing"},
"south": {"uv": [0, 0, 0, 0], "texture": "#casing"},
"west": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"up": {"uv": [0, 0, 0, 0], "texture": "#casing"},
"down": {"uv": [14, 2, 16, 14], "texture": "#casing"}
}
},
{
"from": [0, 0, 2],
"to": [2, 1, 14],
"faces": {
"north": {"uv": [0, 0, 0, 0], "texture": "#casing"},
"east": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"south": {"uv": [0, 0, 0, 0], "texture": "#casing"},
"west": {"uv": [2, 15, 14, 16], "texture": "#casing"},
"up": {"uv": [0, 0, 0, 0], "texture": "#casing"},
"down": {"uv": [0, 2, 2, 14], "texture": "#casing"}
}
},
{
"from": [0, 0, 14],
"to": [16, 1, 16],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"east": {"uv": [0, 15, 2, 16], "texture": "#casing"},
"south": {"uv": [0, 15, 16, 16], "texture": "#casing"},
"west": {"uv": [14, 15, 16, 16], "texture": "#casing"},
"up": {"uv": [0, 0, 0, 0], "texture": "#casing"},
"down": {"uv": [0, 0, 16, 2], "texture": "#casing"}
}
}
]
}

View file

@ -0,0 +1,84 @@
{
"credit": "Made with Blockbench",
"textures": {
"1": "block/stripped_spruce_log_top",
"3": "create:block/gearbox",
"particle": "create:block/andesite_casing",
"casing": "create:block/andesite_casing",
"side": "create:block/andesite_encased_cogwheel_side_connected"
},
"elements": [
{
"from": [0, 0, 0],
"to": [16, 6, 16],
"faces": {
"north": {"uv": [8, 13, 16, 16], "texture": "#side"},
"east": {"uv": [8, 13, 16, 16], "texture": "#side"},
"south": {"uv": [8, 13, 16, 16], "texture": "#side"},
"west": {"uv": [8, 13, 16, 16], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#casing"}
}
},
{
"from": [0, 10, 0],
"to": [16, 15, 16],
"faces": {
"north": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
"east": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
"south": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
"west": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#3"},
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
}
},
{
"from": [14, 15, 2],
"to": [16, 16, 14],
"faces": {
"north": {"uv": [0, 0, 0, 0], "texture": "#casing"},
"east": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"south": {"uv": [0, 0, 0, 0], "texture": "#casing"},
"west": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"up": {"uv": [14, 2, 16, 14], "texture": "#casing"},
"down": {"uv": [0, 0, 0, 0], "texture": "#casing"}
}
},
{
"from": [0, 15, 0],
"to": [16, 16, 2],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"east": {"uv": [14, 0, 16, 1], "texture": "#casing"},
"south": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"west": {"uv": [0, 0, 2, 1], "texture": "#casing"},
"up": {"uv": [0, 0, 16, 2], "texture": "#casing"},
"down": {"uv": [0, 0, 0, 0], "texture": "#casing"}
}
},
{
"from": [0, 15, 2],
"to": [2, 16, 14],
"faces": {
"north": {"uv": [0, 0, 0, 0], "texture": "#casing"},
"east": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"south": {"uv": [0, 0, 0, 0], "texture": "#casing"},
"west": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"up": {"uv": [0, 2, 2, 14], "texture": "#casing"},
"down": {"uv": [0, 0, 0, 0], "texture": "#casing"}
}
},
{
"from": [0, 15, 14],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"east": {"uv": [0, 0, 2, 1], "texture": "#casing"},
"south": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"west": {"uv": [14, 0, 16, 1], "texture": "#casing"},
"up": {"uv": [0, 14, 16, 16], "texture": "#casing"},
"down": {"uv": [0, 0, 0, 0], "texture": "#casing"}
}
}
]
}

View file

@ -0,0 +1,124 @@
{
"credit": "Made with Blockbench",
"textures": {
"1": "block/stripped_spruce_log_top",
"3": "create:block/gearbox",
"particle": "create:block/andesite_casing",
"casing": "create:block/andesite_casing",
"side": "create:block/andesite_encased_cogwheel_side_connected"
},
"elements": [
{
"from": [0, 1, 0],
"to": [16, 6, 16],
"faces": {
"north": {"uv": [8, 13, 16, 15.5], "texture": "#side"},
"east": {"uv": [8, 13, 16, 15.5], "texture": "#side"},
"south": {"uv": [8, 13, 16, 15.5], "texture": "#side"},
"west": {"uv": [8, 13, 16, 15.5], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#1"},
"down": {"uv": [0, 0, 16, 16], "texture": "#3"}
}
},
{
"from": [0, 10, 0],
"to": [16, 15, 16],
"faces": {
"north": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
"east": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
"south": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
"west": {"uv": [8, 8.5, 16, 11], "texture": "#side"},
"up": {"uv": [0, 0, 16, 16], "texture": "#3"},
"down": {"uv": [0, 0, 16, 16], "texture": "#1"}
}
},
{
"from": [14, 15, 2],
"to": [16, 16, 14],
"faces": {
"north": {"uv": [0, 0, 0, 0], "texture": "#casing"},
"east": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"south": {"uv": [0, 0, 0, 0], "texture": "#casing"},
"west": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"up": {"uv": [14, 2, 16, 14], "texture": "#casing"},
"down": {"uv": [0, 0, 0, 0], "texture": "#casing"}
}
},
{
"from": [0, 15, 0],
"to": [16, 16, 2],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"east": {"uv": [14, 0, 16, 1], "texture": "#casing"},
"south": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"west": {"uv": [0, 0, 2, 1], "texture": "#casing"},
"up": {"uv": [0, 0, 16, 2], "texture": "#casing"},
"down": {"uv": [0, 0, 0, 0], "texture": "#casing"}
}
},
{
"from": [0, 15, 2],
"to": [2, 16, 14],
"faces": {
"north": {"uv": [0, 0, 0, 0], "texture": "#casing"},
"east": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"south": {"uv": [0, 0, 0, 0], "texture": "#casing"},
"west": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"up": {"uv": [0, 2, 2, 14], "texture": "#casing"},
"down": {"uv": [0, 0, 0, 0], "texture": "#casing"}
}
},
{
"from": [0, 15, 14],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"east": {"uv": [0, 0, 2, 1], "texture": "#casing"},
"south": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"west": {"uv": [14, 0, 16, 1], "texture": "#casing"},
"up": {"uv": [0, 14, 16, 16], "texture": "#casing"},
"down": {"uv": [0, 0, 0, 0], "texture": "#casing"}
}
},
{
"from": [0, 0, 0],
"to": [16, 1, 2],
"faces": {
"north": {"uv": [0, 15, 16, 16], "texture": "#casing"},
"east": {"uv": [14, 15, 16, 16], "texture": "#casing"},
"south": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"west": {"uv": [0, 15, 2, 16], "texture": "#casing"},
"down": {"uv": [0, 14, 16, 16], "texture": "#casing"}
}
},
{
"from": [14, 0, 2],
"to": [16, 1, 14],
"faces": {
"east": {"uv": [2, 15, 14, 16], "texture": "#casing"},
"west": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"down": {"uv": [14, 2, 16, 14], "texture": "#casing"}
}
},
{
"from": [0, 0, 2],
"to": [2, 1, 14],
"faces": {
"east": {"uv": [2, 0, 14, 1], "texture": "#casing"},
"west": {"uv": [2, 15, 14, 16], "texture": "#casing"},
"down": {"uv": [0, 2, 2, 14], "texture": "#casing"}
}
},
{
"from": [0, 0, 14],
"to": [16, 1, 16],
"faces": {
"north": {"uv": [0, 0, 16, 1], "texture": "#casing"},
"east": {"uv": [0, 15, 2, 16], "texture": "#casing"},
"south": {"uv": [0, 15, 16, 16], "texture": "#casing"},
"west": {"uv": [14, 15, 16, 16], "texture": "#casing"},
"down": {"uv": [0, 0, 16, 2], "texture": "#casing"}
}
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 901 B

After

Width:  |  Height:  |  Size: 899 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 484 B

After

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 500 B

After

Width:  |  Height:  |  Size: 481 B