diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index 57f7d584f..345408e7c 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -17,7 +17,7 @@ a579c40c43dc2174afb66f42d00d0c4a0efaaeee assets\create\blockstates\andesite_bric 398922758a6219544e5b85c91c9cf8a543b437e5 assets\create\blockstates\andesite_pillar.json f9fa6aa530eb0891a74eadfbebc663172a57147a assets\create\blockstates\basin.json 96a4fae5883eda130f8ec1a57d34534f6d0793c4 assets\create\blockstates\belt.json -fe0278550e4795cc9757e726b88db12b599ec9ef assets\create\blockstates\belt_funnel.json +9bbc9a2dc2428175ae0cadf7537ed6815e3e241d assets\create\blockstates\belt_funnel.json 40d10934934ea142d71fc6ce598b1455c3ad47b4 assets\create\blockstates\belt_observer.json 4325605fbdea60d5f54286c309c825bebcd74b95 assets\create\blockstates\belt_tunnel.json cf9045eb16e5299a1d917c4cb536289f49411276 assets\create\blockstates\birch_window.json @@ -32,7 +32,7 @@ b8dd6e505943e06706d0718ece620ab3cf943650 assets\create\blockstates\brass_casing. cbcdab42d01f8085db9e5f8db884f8adf7f17625 assets\create\blockstates\chiseled_scoria.json 291952556c52fba2af5bbd793c71af81abd27e71 assets\create\blockstates\chiseled_weathered_limestone.json 99def0a786714a337e2b1b17db844e4d1aee6234 assets\create\blockstates\chute.json -9ca4713c8efed79da6ab11354a25e5f8fbd6341c assets\create\blockstates\chute_port.json +dabf21c320b6d33486478cb0e4b4bbd62a753c7a assets\create\blockstates\chute_funnel.json 4947c261310445fa55b92038326ac82967d192dd assets\create\blockstates\clockwork_bearing.json 1f33834c685e3243882acfe20183fe64dfa872be assets\create\blockstates\clutch.json e5e3757e99c139d67b2a70288466d8a74d818841 assets\create\blockstates\cogwheel.json @@ -335,8 +335,8 @@ c60c3115fd6eeaa3a696428a87a74d184ab7d62d assets\create\blockstates\weathered_lim c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets\create\blockstates\weathered_limestone_pillar.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets\create\blockstates\zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json -5753bc985f4c202fe16387c32fb8ad80c631c933 assets\create\lang\en_ud.json -0640b1b64ac1a1e337178f932f22b0b2aea61d46 assets\create\lang\en_us.json +d6d4eaadc6f2c86dd69b8a818ca7352b85be52cd assets\create\lang\en_ud.json +0cc26662a5c436a5703926fe3509f0a9536ee737 assets\create\lang\en_us.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json @@ -377,6 +377,12 @@ a033fbac3129bba9211c6c4a0e16c905643afa39 assets\create\models\block\andesite_cob 1c574ee47aeb6fcb305bfc95dd131e153b795a0e assets\create\models\block\andesite_cobblestone_wall_post.json 0ed983628e8868f77301bea1111570d3631f24fb assets\create\models\block\andesite_cobblestone_wall_side.json b1d0bb538fc8285b7d3fd77a977d78a104b83b62 assets\create\models\block\andesite_pillar.json +3928a75e18fc9fe02e3d72696e5dfddd40ef164c assets\create\models\block\belt_funnel_pull_off_extended.json +024fdab5f6bb0559bb18d2c3cffa1d5a7baf76e9 assets\create\models\block\belt_funnel_pull_off_retracted.json +eecd774d431bd9c30649e824421ead350b5333cd assets\create\models\block\belt_funnel_pull_on_extended.json +8e6e5caf8befa95d68280ecfaca9a07313570524 assets\create\models\block\belt_funnel_pull_on_retracted.json +5e93193368ebdf0fa4d53b19a306431e6d3ab099 assets\create\models\block\belt_funnel_push_on_extended.json +08f8ffc241e9a49a0981026602deb0230dd8258a assets\create\models\block\belt_funnel_push_on_retracted.json e8bfb63e0a4426f9d95cd111640169b218dead1b assets\create\models\block\belt_observer\detect.json a2e63810eceb028484b193ddf4315e1811950dc8 assets\create\models\block\belt_observer\detect_belt.json 034c308d46def892e6638ac0b3374849a6a88a26 assets\create\models\block\belt_observer\detect_belt_powered.json @@ -407,6 +413,9 @@ cd7751090cf3d55296b8e415d0af9b6f18d69770 assets\create\models\block\chiseled_gab d2e195aa2e90c712e51d855a9a4a334b52f62a69 assets\create\models\block\chiseled_limestone.json ac07568fa7b2d3fa84d0fe89a498514d30514291 assets\create\models\block\chiseled_scoria.json ecb2b85ee210dce329d2be66b98d0f0d4e6fc223 assets\create\models\block\chiseled_weathered_limestone.json +d3a156e746f890b8a0b92caa70b8eb6e690f0fb6 assets\create\models\block\chute_funnel_pull_off.json +5e4424fb63041a449ddffe143ee766018d064c8f assets\create\models\block\chute_funnel_pull_on.json +ac32d22841b5d37ef182869f605b9a97075f3d33 assets\create\models\block\chute_funnel_push_on.json f9a3f0939ea43b404eb2826b94211a25fca5ebc2 assets\create\models\block\clockwork_bearing.json 70406933cc4fa5471af6e562fd84a397347dba17 assets\create\models\block\copper_casing.json 1ef7060b0ca7e9c0bfc8151f98ca08da31862cda assets\create\models\block\crate\brass\bottom.json @@ -964,7 +973,6 @@ afd697168c9786eb80e54eccdc6a23afa6c7fb0e assets\create\models\item\chiseled_gabb a47fbe5f2da79080d99ef0975bfa8da4d08f8be4 assets\create\models\item\chiseled_scoria.json 70232ce9b88119fb383717e2c1ad113f7aad6a99 assets\create\models\item\chiseled_weathered_limestone.json fe67c3f380d17735a9436a4579a8be1a02b8e4a0 assets\create\models\item\chute.json -3b91cda68b823bf8d49a2e0cccd1b7f7c090e103 assets\create\models\item\chute_port.json b1531a7bd3f7f27b9587d13e818a93dc2d088bc8 assets\create\models\item\clockwork_bearing.json 0a2a0f0aafeab0088172f77afd40c1fa2cc1f2b8 assets\create\models\item\clutch.json dcb09deae110077bcddf090996b51cc66e9a7de3 assets\create\models\item\cogwheel.json @@ -1748,7 +1756,7 @@ ab820bbaaf67c6697dfbab33c05fb73b18c70bfb data\create\loot_tables\blocks\chiseled 43f446abd3c1c184a08645979edf620e59955a30 data\create\loot_tables\blocks\chiseled_scoria.json adde89e46b12de1eee6fd0c5cb98c5f45feefc15 data\create\loot_tables\blocks\chiseled_weathered_limestone.json 07ccc1576a71338cb73c4e06f8c28a2c86843877 data\create\loot_tables\blocks\chute.json -dcd45562a3459e5fd620727090d9c3c01c8ce0a4 data\create\loot_tables\blocks\chute_port.json +617f27876863dda6a16d6818231bc52de104fc70 data\create\loot_tables\blocks\chute_funnel.json 778b53c36d73b6e9c78fd6c091c9c3535c3c18f7 data\create\loot_tables\blocks\clockwork_bearing.json d76113310fc56eca6382d44df174096f2210d416 data\create\loot_tables\blocks\clutch.json 673ba3a5deae9133b917d16c9eb87fe4c2873c8a data\create\loot_tables\blocks\cogwheel.json diff --git a/src/generated/resources/assets/create/blockstates/belt_funnel.json b/src/generated/resources/assets/create/blockstates/belt_funnel.json index a692d1738..ebd56a413 100644 --- a/src/generated/resources/assets/create/blockstates/belt_funnel.json +++ b/src/generated/resources/assets/create/blockstates/belt_funnel.json @@ -1,63 +1,123 @@ { "variants": { - "facing=north,powered=false,shape=retracted": { + "facing=north,powered=false,pushing=false,shape=retracted": { + "model": "create:block/belt_funnel_pull_off_retracted" + }, + "facing=south,powered=false,pushing=false,shape=retracted": { + "model": "create:block/belt_funnel_pull_off_retracted", + "y": 180 + }, + "facing=west,powered=false,pushing=false,shape=retracted": { + "model": "create:block/belt_funnel_pull_off_retracted", + "y": 270 + }, + "facing=east,powered=false,pushing=false,shape=retracted": { + "model": "create:block/belt_funnel_pull_off_retracted", + "y": 90 + }, + "facing=north,powered=true,pushing=false,shape=retracted": { + "model": "create:block/belt_funnel_pull_on_retracted" + }, + "facing=south,powered=true,pushing=false,shape=retracted": { + "model": "create:block/belt_funnel_pull_on_retracted", + "y": 180 + }, + "facing=west,powered=true,pushing=false,shape=retracted": { + "model": "create:block/belt_funnel_pull_on_retracted", + "y": 270 + }, + "facing=east,powered=true,pushing=false,shape=retracted": { + "model": "create:block/belt_funnel_pull_on_retracted", + "y": 90 + }, + "facing=north,powered=false,pushing=true,shape=retracted": { "model": "create:block/belt_funnel/block_retracted" }, - "facing=south,powered=false,shape=retracted": { + "facing=south,powered=false,pushing=true,shape=retracted": { "model": "create:block/belt_funnel/block_retracted", "y": 180 }, - "facing=west,powered=false,shape=retracted": { + "facing=west,powered=false,pushing=true,shape=retracted": { "model": "create:block/belt_funnel/block_retracted", "y": 270 }, - "facing=east,powered=false,shape=retracted": { + "facing=east,powered=false,pushing=true,shape=retracted": { "model": "create:block/belt_funnel/block_retracted", "y": 90 }, - "facing=north,powered=true,shape=retracted": { - "model": "create:block/belt_funnel/block_retracted_powered" + "facing=north,powered=true,pushing=true,shape=retracted": { + "model": "create:block/belt_funnel_push_on_retracted" }, - "facing=south,powered=true,shape=retracted": { - "model": "create:block/belt_funnel/block_retracted_powered", + "facing=south,powered=true,pushing=true,shape=retracted": { + "model": "create:block/belt_funnel_push_on_retracted", "y": 180 }, - "facing=west,powered=true,shape=retracted": { - "model": "create:block/belt_funnel/block_retracted_powered", + "facing=west,powered=true,pushing=true,shape=retracted": { + "model": "create:block/belt_funnel_push_on_retracted", "y": 270 }, - "facing=east,powered=true,shape=retracted": { - "model": "create:block/belt_funnel/block_retracted_powered", + "facing=east,powered=true,pushing=true,shape=retracted": { + "model": "create:block/belt_funnel_push_on_retracted", "y": 90 }, - "facing=north,powered=false,shape=extended": { + "facing=north,powered=false,pushing=false,shape=extended": { + "model": "create:block/belt_funnel_pull_off_extended" + }, + "facing=south,powered=false,pushing=false,shape=extended": { + "model": "create:block/belt_funnel_pull_off_extended", + "y": 180 + }, + "facing=west,powered=false,pushing=false,shape=extended": { + "model": "create:block/belt_funnel_pull_off_extended", + "y": 270 + }, + "facing=east,powered=false,pushing=false,shape=extended": { + "model": "create:block/belt_funnel_pull_off_extended", + "y": 90 + }, + "facing=north,powered=true,pushing=false,shape=extended": { + "model": "create:block/belt_funnel_pull_on_extended" + }, + "facing=south,powered=true,pushing=false,shape=extended": { + "model": "create:block/belt_funnel_pull_on_extended", + "y": 180 + }, + "facing=west,powered=true,pushing=false,shape=extended": { + "model": "create:block/belt_funnel_pull_on_extended", + "y": 270 + }, + "facing=east,powered=true,pushing=false,shape=extended": { + "model": "create:block/belt_funnel_pull_on_extended", + "y": 90 + }, + "facing=north,powered=false,pushing=true,shape=extended": { "model": "create:block/belt_funnel/block_extended" }, - "facing=south,powered=false,shape=extended": { + "facing=south,powered=false,pushing=true,shape=extended": { "model": "create:block/belt_funnel/block_extended", "y": 180 }, - "facing=west,powered=false,shape=extended": { + "facing=west,powered=false,pushing=true,shape=extended": { "model": "create:block/belt_funnel/block_extended", "y": 270 }, - "facing=east,powered=false,shape=extended": { + "facing=east,powered=false,pushing=true,shape=extended": { "model": "create:block/belt_funnel/block_extended", "y": 90 }, - "facing=north,powered=true,shape=extended": { - "model": "create:block/belt_funnel/block_extended_powered" + "facing=north,powered=true,pushing=true,shape=extended": { + "model": "create:block/belt_funnel_push_on_extended" }, - "facing=south,powered=true,shape=extended": { - "model": "create:block/belt_funnel/block_extended_powered", + "facing=south,powered=true,pushing=true,shape=extended": { + "model": "create:block/belt_funnel_push_on_extended", "y": 180 }, - "facing=west,powered=true,shape=extended": { - "model": "create:block/belt_funnel/block_extended_powered", + "facing=west,powered=true,pushing=true,shape=extended": { + "model": "create:block/belt_funnel_push_on_extended", "y": 270 }, - "facing=east,powered=true,shape=extended": { - "model": "create:block/belt_funnel/block_extended_powered", + "facing=east,powered=true,pushing=true,shape=extended": { + "model": "create:block/belt_funnel_push_on_extended", "y": 90 } } diff --git a/src/generated/resources/assets/create/blockstates/chute_funnel.json b/src/generated/resources/assets/create/blockstates/chute_funnel.json new file mode 100644 index 000000000..59a0eda96 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/chute_funnel.json @@ -0,0 +1,64 @@ +{ + "variants": { + "facing=north,powered=false,pushing=false": { + "model": "create:block/chute_funnel_pull_off" + }, + "facing=south,powered=false,pushing=false": { + "model": "create:block/chute_funnel_pull_off", + "y": 180 + }, + "facing=west,powered=false,pushing=false": { + "model": "create:block/chute_funnel_pull_off", + "y": 270 + }, + "facing=east,powered=false,pushing=false": { + "model": "create:block/chute_funnel_pull_off", + "y": 90 + }, + "facing=north,powered=true,pushing=false": { + "model": "create:block/chute_funnel_pull_on" + }, + "facing=south,powered=true,pushing=false": { + "model": "create:block/chute_funnel_pull_on", + "y": 180 + }, + "facing=west,powered=true,pushing=false": { + "model": "create:block/chute_funnel_pull_on", + "y": 270 + }, + "facing=east,powered=true,pushing=false": { + "model": "create:block/chute_funnel_pull_on", + "y": 90 + }, + "facing=north,powered=false,pushing=true": { + "model": "create:block/chute_funnel/block" + }, + "facing=south,powered=false,pushing=true": { + "model": "create:block/chute_funnel/block", + "y": 180 + }, + "facing=west,powered=false,pushing=true": { + "model": "create:block/chute_funnel/block", + "y": 270 + }, + "facing=east,powered=false,pushing=true": { + "model": "create:block/chute_funnel/block", + "y": 90 + }, + "facing=north,powered=true,pushing=true": { + "model": "create:block/chute_funnel_push_on" + }, + "facing=south,powered=true,pushing=true": { + "model": "create:block/chute_funnel_push_on", + "y": 180 + }, + "facing=west,powered=true,pushing=true": { + "model": "create:block/chute_funnel_push_on", + "y": 270 + }, + "facing=east,powered=true,pushing=true": { + "model": "create:block/chute_funnel_push_on", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/blockstates/chute_port.json b/src/generated/resources/assets/create/blockstates/chute_port.json deleted file mode 100644 index dc926c2ca..000000000 --- a/src/generated/resources/assets/create/blockstates/chute_port.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "variants": { - "facing=north": { - "model": "create:block/chute_port" - }, - "facing=south": { - "model": "create:block/chute_port", - "y": 180 - }, - "facing=west": { - "model": "create:block/chute_port", - "y": 270 - }, - "facing=east": { - "model": "create:block/chute_port", - "y": 90 - } - } -} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index a35239349..f35699efa 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -33,7 +33,7 @@ "block.create.chiseled_scoria": "\u0250\u0131\u0279o\u0254S p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", "block.create.chiseled_weathered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u05DF\u01DDs\u0131\u0265\u0186", "block.create.chute": "\u01DD\u0287n\u0265\u0186", - "block.create.chute_port": "\u0287\u0279o\u0500 \u01DD\u0287n\u0265\u0186", + "block.create.chute_funnel": "\u05DF\u01DDuun\u2132 \u01DD\u0287n\u0265\u0186", "block.create.clockwork_bearing": "bu\u0131\u0279\u0250\u01DD\u15FA \u029E\u0279o\u028D\u029E\u0254o\u05DF\u0186", "block.create.clutch": "\u0265\u0254\u0287n\u05DF\u0186", "block.create.cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index fcc292fd4..6697c96bb 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -36,7 +36,7 @@ "block.create.chiseled_scoria": "Chiseled Scoria", "block.create.chiseled_weathered_limestone": "Chiseled Weathered Limestone", "block.create.chute": "Chute", - "block.create.chute_port": "Chute Port", + "block.create.chute_funnel": "Chute Funnel", "block.create.clockwork_bearing": "Clockwork Bearing", "block.create.clutch": "Clutch", "block.create.cogwheel": "Cogwheel", diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_extended.json b/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_extended.json new file mode 100644 index 000000000..d5b74c732 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_extended.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/belt_funnel/block_extended", + "textures": { + "2": "create:block/belt_funnel_pull_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_retracted.json b/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_retracted.json new file mode 100644 index 000000000..8139c8f3c --- /dev/null +++ b/src/generated/resources/assets/create/models/block/belt_funnel_pull_off_retracted.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/belt_funnel/block_retracted", + "textures": { + "2": "create:block/belt_funnel_pull_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_extended.json b/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_extended.json new file mode 100644 index 000000000..04c877bc1 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_extended.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/belt_funnel/block_extended", + "textures": { + "2": "create:block/belt_funnel_pull_on" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_retracted.json b/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_retracted.json new file mode 100644 index 000000000..a0e81c6cd --- /dev/null +++ b/src/generated/resources/assets/create/models/block/belt_funnel_pull_on_retracted.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/belt_funnel/block_retracted", + "textures": { + "2": "create:block/belt_funnel_pull_on" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_push_on_extended.json b/src/generated/resources/assets/create/models/block/belt_funnel_push_on_extended.json new file mode 100644 index 000000000..94272c53b --- /dev/null +++ b/src/generated/resources/assets/create/models/block/belt_funnel_push_on_extended.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/belt_funnel/block_extended", + "textures": { + "2": "create:block/belt_funnel_push_on" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/belt_funnel_push_on_retracted.json b/src/generated/resources/assets/create/models/block/belt_funnel_push_on_retracted.json new file mode 100644 index 000000000..a1800b8e0 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/belt_funnel_push_on_retracted.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/belt_funnel/block_retracted", + "textures": { + "2": "create:block/belt_funnel_push_on" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/chute_funnel_pull_off.json b/src/generated/resources/assets/create/models/block/chute_funnel_pull_off.json new file mode 100644 index 000000000..f506327e4 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/chute_funnel_pull_off.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/chute_funnel/block", + "textures": { + "3": "create:block/belt_funnel_pull_off" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/chute_funnel_pull_on.json b/src/generated/resources/assets/create/models/block/chute_funnel_pull_on.json new file mode 100644 index 000000000..2ae11c5a2 --- /dev/null +++ b/src/generated/resources/assets/create/models/block/chute_funnel_pull_on.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/chute_funnel/block", + "textures": { + "3": "create:block/belt_funnel_pull_on" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/block/chute_funnel_push_on.json b/src/generated/resources/assets/create/models/block/chute_funnel_push_on.json new file mode 100644 index 000000000..a41a5207c --- /dev/null +++ b/src/generated/resources/assets/create/models/block/chute_funnel_push_on.json @@ -0,0 +1,6 @@ +{ + "parent": "create:block/chute_funnel/block", + "textures": { + "3": "create:block/belt_funnel_push_on" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/chute_port.json b/src/generated/resources/assets/create/models/item/chute_port.json deleted file mode 100644 index 173b26be8..000000000 --- a/src/generated/resources/assets/create/models/item/chute_port.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "create:block/chute_port" -} \ No newline at end of file diff --git a/src/generated/resources/data/create/loot_tables/blocks/chute_port.json b/src/generated/resources/data/create/loot_tables/blocks/chute_funnel.json similarity index 86% rename from src/generated/resources/data/create/loot_tables/blocks/chute_port.json rename to src/generated/resources/data/create/loot_tables/blocks/chute_funnel.json index bd3837343..4f7095793 100644 --- a/src/generated/resources/data/create/loot_tables/blocks/chute_port.json +++ b/src/generated/resources/data/create/loot_tables/blocks/chute_funnel.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "create:chute_port" + "name": "create:reality_funnel" } ], "conditions": [ diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index ed2b72bbb..cbfd936ee 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -78,7 +78,6 @@ import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.chute.ChuteBlock; import com.simibubi.create.content.logistics.block.chute.ChuteGenerator; import com.simibubi.create.content.logistics.block.chute.ChuteItem; -import com.simibubi.create.content.logistics.block.chute.ChutePortBlock; import com.simibubi.create.content.logistics.block.depot.DepotBlock; import com.simibubi.create.content.logistics.block.diodes.AbstractDiodeGenerator; import com.simibubi.create.content.logistics.block.diodes.AdjustableRepeaterBlock; @@ -99,6 +98,9 @@ import com.simibubi.create.content.logistics.block.inventories.CreativeCrateBloc import com.simibubi.create.content.logistics.block.mechanicalArm.ArmBlock; import com.simibubi.create.content.logistics.block.packager.PackagerBlock; import com.simibubi.create.content.logistics.block.realityFunnel.BeltFunnelBlock; +import com.simibubi.create.content.logistics.block.realityFunnel.BeltFunnelGenerator; +import com.simibubi.create.content.logistics.block.realityFunnel.ChuteFunnelBlock; +import com.simibubi.create.content.logistics.block.realityFunnel.ChuteFunnelGenerator; import com.simibubi.create.content.logistics.block.realityFunnel.FunnelItem; import com.simibubi.create.content.logistics.block.realityFunnel.RealityFunnelBlock; import com.simibubi.create.content.logistics.block.redstone.AnalogLeverBlock; @@ -720,12 +722,6 @@ public class AllBlocks { .transform(customItemModel("_", "block")) .register(); - public static final BlockEntry CHUTE_PORT = REGISTRATE.block("chute_port", ChutePortBlock::new) - .initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> p.horizontalBlock(c.get(), AssetLookup.standardModel(c, p))) - .simpleItem() - .register(); - public static final BlockEntry PACKAGER = REGISTRATE.block("packager", PackagerBlock::new) .initialProperties(SharedProperties::softMetal) .transform(StressConfigDefaults.setImpact(4.0)) @@ -749,12 +745,13 @@ public class AllBlocks { public static final BlockEntry BELT_FUNNEL = REGISTRATE.block("belt_funnel", BeltFunnelBlock::new) .initialProperties(SharedProperties::softMetal) - .blockstate((c, p) -> p.horizontalBlock(c.get(), s -> { - String shape = s.get(BeltFunnelBlock.SHAPE) - .getName(); - return s.get(BeltFunnelBlock.POWERED) ? AssetLookup.partialBaseModel(c, p, shape, "powered") - : AssetLookup.partialBaseModel(c, p, shape); - })) + .blockstate(new BeltFunnelGenerator()::generate) + .loot((p, b) -> p.registerDropping(b, REALITY_FUNNEL.get())) + .register(); + + public static final BlockEntry CHUTE_FUNNEL = REGISTRATE.block("chute_funnel", ChuteFunnelBlock::new) + .initialProperties(SharedProperties::softMetal) + .blockstate(new ChuteFunnelGenerator()::generate) .loot((p, b) -> p.registerDropping(b, REALITY_FUNNEL.get())) .register(); diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index 9404ed41c..cb9a26925 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -69,6 +69,10 @@ public class AllShapes { .add(1, 6, 1, 15, 10, 15) .add(0, 10, 0, 16, 16, 16) .forDirectional(UP), + CHUTE_FUNNEL = shape(3, -2, 3, 13, 2, 13).add(2, 2, 2, 14, 6, 14) + .add(1, 5, 1, 15, 16, 15) + .add(0, 8, 0, 16, 14, 16) + .forDirectional(UP), BELT_FUNNEL_RETRACTED = shape(3, -5, 14, 13, 13, 19).add(0, -5, 8, 16, 16, 14) .forHorizontal(NORTH), BELT_FUNNEL_DEFAULT = shape(3, -5, 12, 13, 13, 17).add(0, -5, 6, 16, 16, 12) diff --git a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChutePortBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/chute/ChutePortBlock.java deleted file mode 100644 index 021d743ba..000000000 --- a/src/main/java/com/simibubi/create/content/logistics/block/chute/ChutePortBlock.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.simibubi.create.content.logistics.block.chute; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.HorizontalBlock; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.state.StateContainer.Builder; - -public class ChutePortBlock extends HorizontalBlock { - - public ChutePortBlock(Properties p_i48377_1_) { - super(p_i48377_1_); - } - - @Override - protected void fillStateContainer(Builder p_206840_1_) { - super.fillStateContainer(p_206840_1_.add(HORIZONTAL_FACING)); - } - - @Override - public BlockState getStateForPlacement(BlockItemUseContext p_196258_1_) { - return getDefaultState().with(HORIZONTAL_FACING, p_196258_1_.getPlacementHorizontalFacing()); - } - -} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java index fb7217329..14feeab13 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelBlock.java @@ -1,10 +1,8 @@ package com.simibubi.create.content.logistics.block.realityFunnel; -import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock; import com.simibubi.create.content.contraptions.relays.belt.BeltBlock.Slope; -import com.simibubi.create.content.contraptions.wrench.IWrenchable; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.depot.DepotBlock; import com.simibubi.create.foundation.utility.Lang; @@ -12,33 +10,22 @@ import com.simibubi.create.foundation.utility.VoxelShaper; import net.minecraft.block.Block; import net.minecraft.block.BlockState; -import net.minecraft.block.HorizontalBlock; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.BlockItemUseContext; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemUseContext; -import net.minecraft.state.BooleanProperty; import net.minecraft.state.EnumProperty; import net.minecraft.state.IProperty; import net.minecraft.state.StateContainer.Builder; -import net.minecraft.state.properties.BlockStateProperties; -import net.minecraft.util.ActionResultType; import net.minecraft.util.Direction; import net.minecraft.util.IStringSerializable; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.world.IBlockReader; import net.minecraft.world.ILightReader; import net.minecraft.world.IWorld; import net.minecraft.world.IWorldReader; -import net.minecraft.world.World; -public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { +public class BeltFunnelBlock extends HorizontalInteractionFunnelBlock { public static final IProperty SHAPE = EnumProperty.create("shape", Shape.class); - public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public enum Shape implements IStringSerializable { RETRACTED(AllShapes.BELT_FUNNEL_RETRACTED), EXTENDED(AllShapes.BELT_FUNNEL_EXTENDED); @@ -57,13 +44,12 @@ public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { public BeltFunnelBlock(Properties p_i48377_1_) { super(p_i48377_1_); - setDefaultState(getDefaultState().with(SHAPE, Shape.RETRACTED) - .with(POWERED, false)); + setDefaultState(getDefaultState().with(SHAPE, Shape.RETRACTED)); } @Override protected void fillStateContainer(Builder p_206840_1_) { - super.fillStateContainer(p_206840_1_.add(HORIZONTAL_FACING, SHAPE, POWERED)); + super.fillStateContainer(p_206840_1_.add(SHAPE)); } @Override @@ -72,35 +58,13 @@ public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { return state.get(SHAPE).shaper.get(state.get(HORIZONTAL_FACING)); } - @Override - public BlockState getStateForPlacement(BlockItemUseContext ctx) { - return updateShape(super.getStateForPlacement(ctx), ctx.getWorld(), ctx.getPos()).with(POWERED, ctx.getWorld() - .isBlockPowered(ctx.getPos())); - } - - @Override - public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, - PlayerEntity player) { - return AllBlocks.REALITY_FUNNEL.asStack(); - } - @Override public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbour, IWorld world, BlockPos pos, BlockPos p_196271_6_) { - if (direction == Direction.DOWN && !isOnValidBelt(state, world, pos)) - return AllBlocks.REALITY_FUNNEL.getDefaultState() - .with(RealityFunnelBlock.FACING, state.get(HORIZONTAL_FACING)); if (direction == state.get(HORIZONTAL_FACING)) return updateShape(state, world, pos); - return state; - } - - @Override - public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) { - return !world.getBlockState(pos.offset(state.get(HORIZONTAL_FACING) - .getOpposite())) - .getShape(world, pos) - .isEmpty(); + else + return super.updatePostPlacement(state, direction, neighbour, world, pos, p_196271_6_); } public static boolean isOnValidBelt(BlockState state, IWorldReader world, BlockPos pos) { @@ -118,24 +82,7 @@ public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { return true; } - @Override - public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, - boolean isMoving) { - if (worldIn.isRemote) - return; - - Direction blockFacing = state.get(HORIZONTAL_FACING) - .getOpposite(); - if (fromPos.equals(pos.offset(blockFacing))) - if (!isValidPosition(state, worldIn, pos)) - worldIn.destroyBlock(pos, true); - - boolean previouslyPowered = state.get(POWERED); - if (previouslyPowered != worldIn.isBlockPowered(pos)) - worldIn.setBlockState(pos, state.cycle(POWERED), 2); - } - - private BlockState updateShape(BlockState state, ILightReader world, BlockPos pos) { + public static BlockState updateShape(BlockState state, ILightReader world, BlockPos pos) { state = state.with(SHAPE, Shape.RETRACTED); BlockState neighbour = world.getBlockState(pos.offset(state.get(HORIZONTAL_FACING))); if (canConnectTo(state, neighbour)) @@ -143,21 +90,19 @@ public class BeltFunnelBlock extends HorizontalBlock implements IWrenchable { return state; } - private boolean canConnectTo(BlockState state, BlockState neighbour) { + private static boolean canConnectTo(BlockState state, BlockState neighbour) { if (neighbour.getBlock() instanceof BeltTunnelBlock) return true; - if (neighbour.getBlock() == this && neighbour.get(HORIZONTAL_FACING) == state.get(HORIZONTAL_FACING) - .getOpposite()) + if (neighbour.getBlock() instanceof BeltFunnelBlock + && neighbour.get(HORIZONTAL_FACING) == state.get(HORIZONTAL_FACING) + .getOpposite()) return true; return false; } @Override - public ActionResultType onWrenched(BlockState state, ItemUseContext context) { - if (!context.getWorld().isRemote) - context.getWorld() - .setBlockState(context.getPos(), state.cycle(SHAPE)); - return ActionResultType.SUCCESS; + protected boolean canStillInteract(BlockState state, IWorldReader world, BlockPos pos) { + return isOnValidBelt(state, world, pos); } } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelGenerator.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelGenerator.java new file mode 100644 index 000000000..0b74af3fe --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/BeltFunnelGenerator.java @@ -0,0 +1,39 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.foundation.data.AssetLookup; +import com.simibubi.create.foundation.data.SpecialBlockStateGen; +import com.tterrag.registrate.providers.DataGenContext; +import com.tterrag.registrate.providers.RegistrateBlockstateProvider; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraftforge.client.model.generators.ModelFile; + +public class BeltFunnelGenerator extends SpecialBlockStateGen { + + @Override + protected int getXRotation(BlockState state) { + return 0; + } + + @Override + protected int getYRotation(BlockState state) { + return horizontalAngle(state.get(BeltFunnelBlock.HORIZONTAL_FACING)) + 180; + } + + @Override + public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + BlockState state) { + boolean pushing = state.get(BeltFunnelBlock.PUSHING); + boolean powered = state.get(BeltFunnelBlock.POWERED); + String shapeName = state.get(BeltFunnelBlock.SHAPE) + .getName(); + if (pushing && !powered) + return AssetLookup.partialBaseModel(ctx, prov, shapeName); + String name = ctx.getName() + "_" + (pushing ? "push_" : "pull_") + (powered ? "on" : "off"); + return prov.models() + .withExistingParent(name + "_" + shapeName, prov.modLoc("block/" + ctx.getName() + "/block_" + shapeName)) + .texture("2", prov.modLoc("block/" + name)); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelBlock.java new file mode 100644 index 000000000..25f79c470 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelBlock.java @@ -0,0 +1,39 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.AllShapes; +import com.simibubi.create.content.logistics.block.chute.ChuteBlock; + +import net.minecraft.block.BlockState; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; + +public class ChuteFunnelBlock extends HorizontalInteractionFunnelBlock { + + public ChuteFunnelBlock(Properties p_i48377_1_) { + super(p_i48377_1_); + } + + public static boolean isOnValidChute(BlockState state, IWorldReader world, BlockPos pos) { + Direction direction = state.get(HORIZONTAL_FACING); + if (world.getBlockState(pos.offset(direction)) + .getBlock() instanceof ChuteBlock) + return true; + return false; + } + + @Override + public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, + ISelectionContext p_220053_4_) { + return AllShapes.CHUTE_FUNNEL.get(state.get(HORIZONTAL_FACING)); + } + + @Override + protected boolean canStillInteract(BlockState state, IWorldReader world, BlockPos pos) { + return isOnValidChute(state, world, pos); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelGenerator.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelGenerator.java new file mode 100644 index 000000000..98ce6320f --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/ChuteFunnelGenerator.java @@ -0,0 +1,39 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.foundation.data.AssetLookup; +import com.simibubi.create.foundation.data.SpecialBlockStateGen; +import com.tterrag.registrate.providers.DataGenContext; +import com.tterrag.registrate.providers.RegistrateBlockstateProvider; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraftforge.client.model.generators.ModelFile; + +public class ChuteFunnelGenerator extends SpecialBlockStateGen { + + @Override + protected int getXRotation(BlockState state) { + return 0; + } + + @Override + protected int getYRotation(BlockState state) { + return horizontalAngle(state.get(BeltFunnelBlock.HORIZONTAL_FACING)) + 180; + } + + @Override + public ModelFile getModel(DataGenContext ctx, RegistrateBlockstateProvider prov, + BlockState state) { + boolean pushing = state.get(ChuteFunnelBlock.PUSHING); + boolean powered = state.get(ChuteFunnelBlock.POWERED); + if (pushing && !powered) + return AssetLookup.partialBaseModel(ctx, prov); + String suffix = (pushing ? "push_" : "pull_") + (powered ? "on" : "off"); + String textureName = "belt_funnel_" + suffix; + String modelName = ctx.getName() + "_" + suffix; + return prov.models() + .withExistingParent(modelName, prov.modLoc("block/" + ctx.getName() + "/block")) + .texture("3", prov.modLoc("block/" + textureName)); + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java index a546eb1a9..5dd0d6ed8 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/FunnelItem.java @@ -7,6 +7,9 @@ import net.minecraft.block.BlockState; import net.minecraft.item.BlockItem; import net.minecraft.item.BlockItemUseContext; import net.minecraft.util.Direction; +import net.minecraft.util.Rotation; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; public class FunnelItem extends BlockItem { @@ -25,11 +28,25 @@ public class FunnelItem extends BlockItem { if (!direction.getAxis() .isHorizontal()) return state; + BlockState equivalentBeltFunnel = AllBlocks.BELT_FUNNEL.get() .getStateForPlacement(ctx) .with(BeltFunnelBlock.HORIZONTAL_FACING, direction); - if (BeltFunnelBlock.isOnValidBelt(equivalentBeltFunnel, ctx.getWorld(), ctx.getPos())) - return equivalentBeltFunnel; + BlockState equivalentChuteFunnel = AllBlocks.CHUTE_FUNNEL.get() + .getStateForPlacement(ctx) + .with(ChuteFunnelBlock.HORIZONTAL_FACING, direction); + BlockState reversedChuteFunnel = equivalentChuteFunnel.rotate(Rotation.CLOCKWISE_180) + .cycle(ChuteFunnelBlock.PUSHING); + + World world = ctx.getWorld(); + BlockPos pos = ctx.getPos(); + if (BeltFunnelBlock.isOnValidBelt(equivalentBeltFunnel, world, pos)) + return BeltFunnelBlock.updateShape(equivalentBeltFunnel, world, pos); + if (ChuteFunnelBlock.isOnValidChute(equivalentChuteFunnel, world, pos)) + return equivalentChuteFunnel; + if (ChuteFunnelBlock.isOnValidChute(reversedChuteFunnel, world, pos)) + return reversedChuteFunnel; + return state; } diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java new file mode 100644 index 000000000..57774d5c7 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/HorizontalInteractionFunnelBlock.java @@ -0,0 +1,90 @@ +package com.simibubi.create.content.logistics.block.realityFunnel; + +import com.simibubi.create.AllBlocks; +import com.simibubi.create.content.contraptions.wrench.IWrenchable; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.block.HorizontalBlock; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.BlockItemUseContext; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; +import net.minecraft.state.BooleanProperty; +import net.minecraft.state.StateContainer.Builder; +import net.minecraft.state.properties.BlockStateProperties; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.RayTraceResult; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorld; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; + +public abstract class HorizontalInteractionFunnelBlock extends HorizontalBlock implements IWrenchable { + + public static final BooleanProperty POWERED = BlockStateProperties.POWERED; + public static final BooleanProperty PUSHING = BooleanProperty.create("pushing"); + + public HorizontalInteractionFunnelBlock(Properties p_i48377_1_) { + super(p_i48377_1_); + setDefaultState(getDefaultState().with(PUSHING, true) + .with(POWERED, false)); + } + + @Override + protected void fillStateContainer(Builder p_206840_1_) { + super.fillStateContainer(p_206840_1_.add(HORIZONTAL_FACING, POWERED, PUSHING)); + } + + @Override + public BlockState getStateForPlacement(BlockItemUseContext ctx) { + return super.getStateForPlacement(ctx).with(POWERED, ctx.getWorld() + .isBlockPowered(ctx.getPos())); + } + + @Override + public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, + PlayerEntity player) { + return AllBlocks.REALITY_FUNNEL.asStack(); + } + + @Override + public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbour, IWorld world, + BlockPos pos, BlockPos p_196271_6_) { + if (!canStillInteract(state, world, pos)) + return AllBlocks.REALITY_FUNNEL.getDefaultState() + .with(RealityFunnelBlock.FACING, state.get(HORIZONTAL_FACING)); + return state; + } + + @Override + public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) { + return !world.getBlockState(pos.offset(state.get(HORIZONTAL_FACING) + .getOpposite())) + .getShape(world, pos) + .isEmpty(); + } + + protected abstract boolean canStillInteract(BlockState state, IWorldReader world, BlockPos pos); + + @Override + public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, + boolean isMoving) { + if (worldIn.isRemote) + return; + boolean previouslyPowered = state.get(POWERED); + if (previouslyPowered != worldIn.isBlockPowered(pos)) + worldIn.setBlockState(pos, state.cycle(POWERED), 2); + } + + @Override + public ActionResultType onWrenched(BlockState state, ItemUseContext context) { + if (!context.getWorld().isRemote) + context.getWorld() + .setBlockState(context.getPos(), state.cycle(PUSHING)); + return ActionResultType.SUCCESS; + } + +} diff --git a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java index e3873d576..54db37f47 100644 --- a/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java +++ b/src/main/java/com/simibubi/create/content/logistics/block/realityFunnel/RealityFunnelBlock.java @@ -2,6 +2,7 @@ package com.simibubi.create.content.logistics.block.realityFunnel; import com.simibubi.create.AllBlocks; import com.simibubi.create.AllShapes; +import com.simibubi.create.content.logistics.block.chute.ChuteBlock; import com.simibubi.create.foundation.block.ProperDirectionalBlock; import net.minecraft.block.Block; @@ -22,7 +23,7 @@ import net.minecraft.world.World; public class RealityFunnelBlock extends ProperDirectionalBlock { public static final BooleanProperty POWERED = BlockStateProperties.POWERED; - + public RealityFunnelBlock(Properties p_i48415_1_) { super(p_i48415_1_); setDefaultState(getDefaultState().with(POWERED, false)); @@ -30,16 +31,24 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { @Override public BlockState getStateForPlacement(BlockItemUseContext context) { - return getDefaultState().with(FACING, context.getFace()) + Direction facing = context.getFace(); + if (facing.getAxis() + .isVertical() + && context.getWorld() + .getBlockState(context.getPos() + .offset(facing.getOpposite())) + .getBlock() instanceof ChuteBlock) + facing = facing.getOpposite(); + return getDefaultState().with(FACING, facing) .with(POWERED, context.getWorld() .isBlockPowered(context.getPos())); } - + @Override protected void fillStateContainer(Builder builder) { super.fillStateContainer(builder.add(POWERED)); } - + @Override public VoxelShape getShape(BlockState state, IBlockReader p_220053_2_, BlockPos p_220053_3_, ISelectionContext p_220053_4_) { @@ -49,13 +58,31 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { @Override public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState p_196271_3_, IWorld world, BlockPos pos, BlockPos p_196271_6_) { - if (state.get(FACING) - .getAxis() - .isHorizontal() && direction == Direction.DOWN) { - BlockState equivalentFunnel = AllBlocks.BELT_FUNNEL.getDefaultState() - .with(BeltFunnelBlock.HORIZONTAL_FACING, state.get(FACING)); - if (BeltFunnelBlock.isOnValidBelt(equivalentFunnel, world, pos)) - return equivalentFunnel; + Direction facing = state.get(FACING); + if (facing.getAxis() + .isHorizontal()) { + if (direction == Direction.DOWN) { + BlockState equivalentFunnel = AllBlocks.BELT_FUNNEL.getDefaultState() + .with(BeltFunnelBlock.HORIZONTAL_FACING, facing) + .with(BeltFunnelBlock.POWERED, state.get(POWERED)); + if (BeltFunnelBlock.isOnValidBelt(equivalentFunnel, world, pos)) + return equivalentFunnel; + } + if (direction == facing) { + BlockState equivalentFunnel = AllBlocks.CHUTE_FUNNEL.getDefaultState() + .with(ChuteFunnelBlock.HORIZONTAL_FACING, facing) + .with(ChuteFunnelBlock.POWERED, state.get(POWERED)); + if (ChuteFunnelBlock.isOnValidChute(equivalentFunnel, world, pos)) + return equivalentFunnel; + } + if (direction == facing.getOpposite()) { + BlockState equivalentFunnel = AllBlocks.CHUTE_FUNNEL.getDefaultState() + .with(ChuteFunnelBlock.HORIZONTAL_FACING, facing.getOpposite()) + .cycle(ChuteFunnelBlock.PUSHING) + .with(ChuteFunnelBlock.POWERED, state.get(POWERED)); + if (ChuteFunnelBlock.isOnValidChute(equivalentFunnel, world, pos)) + return equivalentFunnel; + } } return state; } @@ -65,13 +92,6 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { boolean isMoving) { if (worldIn.isRemote) return; - - Direction blockFacing = state.get(FACING) - .getOpposite(); - if (fromPos.equals(pos.offset(blockFacing))) - if (!isValidPosition(state, worldIn, pos)) - worldIn.destroyBlock(pos, true); - boolean previouslyPowered = state.get(POWERED); if (previouslyPowered != worldIn.isBlockPowered(pos)) worldIn.setBlockState(pos, state.cycle(POWERED), 2); @@ -79,10 +99,10 @@ public class RealityFunnelBlock extends ProperDirectionalBlock { @Override public boolean isValidPosition(BlockState state, IWorldReader world, BlockPos pos) { - return !world.getBlockState(pos.offset(state.get(FACING) + Block block = world.getBlockState(pos.offset(state.get(FACING) .getOpposite())) - .getShape(world, pos) - .isEmpty(); + .getBlock(); + return !(block instanceof RealityFunnelBlock) && !(block instanceof HorizontalInteractionFunnelBlock); } } 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 5ada74bb1..bbdb5514d 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 @@ -2,7 +2,7 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "2": "create:block/funnel_off", + "2": "create:block/belt_funnel_push_off", "3": "create:block/funnel_back", "4": "create:block/funnel_plating", "particle": "create:block/brass_block" diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_extended_powered.json b/src/main/resources/assets/create/models/block/belt_funnel/block_extended_powered.json deleted file mode 100644 index a0fbb44b3..000000000 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_extended_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_extended", - "textures": { - "2": "create:block/funnel_on" - } -} \ No newline at end of file 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 7ff538d50..336419898 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 @@ -2,7 +2,7 @@ "credit": "Made with Blockbench", "parent": "block/block", "textures": { - "2": "create:block/funnel_off", + "2": "create:block/belt_funnel_push_off", "3": "create:block/funnel_back", "4": "create:block/funnel_plating", "particle": "create:block/brass_block" diff --git a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted_powered.json b/src/main/resources/assets/create/models/block/belt_funnel/block_retracted_powered.json deleted file mode 100644 index 65664520e..000000000 --- a/src/main/resources/assets/create/models/block/belt_funnel/block_retracted_powered.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "create:block/belt_funnel/block_retracted", - "textures": { - "2": "create:block/funnel_on" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute_funnel/block.json b/src/main/resources/assets/create/models/block/chute_funnel/block.json new file mode 100644 index 000000000..5a64bd828 --- /dev/null +++ b/src/main/resources/assets/create/models/block/chute_funnel/block.json @@ -0,0 +1,248 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "3": "create:block/belt_funnel_push_off", + "4": "create:block/funnel_plating", + "13": "create:block/chute", + "3_particle": "create:block/brass_block", + "particle": "create:block/brass_block", + "1_2": "create:block/funnel_back" + }, + "elements": [ + { + "name": "RightWall", + "from": [0, 0, 2], + "to": [2, 16, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 10]}, + "faces": { + "north": {"uv": [14, 0, 16, 16], "texture": "#3_particle"}, + "east": {"uv": [0, 0, 16, 6], "rotation": 90, "texture": "#3"}, + "south": {"uv": [0, 0, 2, 16], "texture": "#3_particle"}, + "west": {"uv": [0, 0, 16, 6], "rotation": 270, "texture": "#3"}, + "up": {"uv": [0, 0, 2, 6], "texture": "#3"}, + "down": {"uv": [14, 0, 16, 6], "rotation": 180, "texture": "#3"} + } + }, + { + "name": "LeftWall", + "from": [14, 0, 2], + "to": [16, 16, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 10]}, + "faces": { + "north": {"uv": [0, 0, 2, 16], "texture": "#3_particle"}, + "east": {"uv": [0, 0, 16, 6], "rotation": 90, "texture": "#3"}, + "south": {"uv": [14, 0, 16, 16], "texture": "#3_particle"}, + "west": {"uv": [0, 0, 16, 6], "rotation": 270, "texture": "#3"}, + "up": {"uv": [14, 0, 16, 6], "texture": "#3"}, + "down": {"uv": [0, 0, 2, 6], "rotation": 180, "texture": "#3"} + } + }, + { + "name": "Top", + "from": [2, 14, 2], + "to": [14, 16, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 10]}, + "faces": { + "north": {"uv": [2, 0, 14, 2], "texture": "#3_particle"}, + "south": {"uv": [2, 0, 14, 2], "texture": "#3_particle"}, + "up": {"uv": [2, 0, 14, 6], "texture": "#3"}, + "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#3"} + } + }, + { + "name": "Top", + "from": [2, 0, 2], + "to": [14, 2, 8], + "rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 10]}, + "faces": { + "north": {"uv": [2, 14, 14, 16], "texture": "#3_particle"}, + "south": {"uv": [2, 14, 14, 16], "texture": "#3_particle"}, + "up": {"uv": [2, 0, 14, 6], "texture": "#3"}, + "down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#3"} + } + }, + { + "name": "F5", + "from": [11, 1.5, 3], + "to": [14, 14.5, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [14, 8, 9.5]}, + "faces": { + "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"} + } + }, + { + "name": "F6", + "from": [5, 1.5, 3], + "to": [8, 14.5, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 9.5]}, + "faces": { + "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"} + } + }, + { + "name": "F6", + "from": [8, 1.5, 3], + "to": [11, 14.5, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [14, 8, 9.5]}, + "faces": { + "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"} + } + }, + { + "name": "F7", + "from": [2, 1.5, 3], + "to": [5, 14.5, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 9.5]}, + "faces": { + "north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"} + } + }, + { + "name": "BackExtension", + "from": [2, 2, 10], + "to": [14, 14, 14], + "faces": { + "east": {"uv": [13, 10, 15, 16], "texture": "#1_2"}, + "south": {"uv": [9, 0.5, 15, 6.5], "texture": "#1_2"}, + "west": {"uv": [13, 10, 15, 16], "rotation": 180, "texture": "#1_2"}, + "up": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#1_2"}, + "down": {"uv": [13, 10, 15, 16], "rotation": 90, "texture": "#1_2"} + } + }, + { + "name": "MidExtension", + "from": [1, 1, 7], + "to": [15, 15, 11], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 7]}, + "faces": { + "north": {"uv": [0, 9, 7, 16], "texture": "#1_2"}, + "east": {"uv": [11, 9, 13, 16], "rotation": 180, "texture": "#1_2"}, + "south": {"uv": [8.5, 0, 15.5, 7], "texture": "#1_2"}, + "west": {"uv": [11, 9, 13, 16], "texture": "#1_2"}, + "up": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#1_2"}, + "down": {"uv": [11, 9, 13, 16], "rotation": 270, "texture": "#1_2"} + } + }, + { + "name": "Back", + "from": [3, 3, 14], + "to": [13, 13, 18], + "faces": { + "east": {"uv": [9.5, 9, 14.5, 11], "rotation": 90, "texture": "#4"}, + "south": {"uv": [9.5, 11, 14.5, 16], "texture": "#4"}, + "west": {"uv": [9.5, 9, 14.5, 11], "rotation": 270, "texture": "#4"}, + "up": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"}, + "down": {"uv": [9.5, 9, 14.5, 11], "rotation": 180, "texture": "#4"} + } + }, + { + "name": "Back", + "from": [1.1, 1.1, -2.9], + "to": [14.9, 14.9, 2.1], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 6]}, + "faces": { + "north": {"uv": [8.5, 8.5, 15.5, 15.5], "texture": "#13"}, + "east": {"uv": [0, 13.5, 7, 16], "rotation": 90, "texture": "#13"}, + "west": {"uv": [0, 13.5, 7, 16], "rotation": 270, "texture": "#13"}, + "up": {"uv": [0, 13.5, 7, 16], "texture": "#13"}, + "down": {"uv": [0, 13.5, 7, 16], "rotation": 180, "texture": "#13"} + } + }, + { + "name": "Back", + "from": [2.1, 1.1, -6.7], + "to": [13.9, 4.9, -2.9], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, -54]}, + "faces": { + "north": {"uv": [9, 6, 15, 8], "texture": "#13"}, + "east": {"uv": [11, 6, 13, 8], "texture": "#13"}, + "south": {"uv": [0, 0, 7, 7], "texture": "#13"}, + "west": {"uv": [11, 6, 13, 8], "texture": "#13"}, + "up": {"uv": [8.5, 1, 15.5, 3], "rotation": 180, "texture": "#13"}, + "down": {"uv": [9, 4.5, 15, 6.5], "texture": "#13"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3.25, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 1, 0], + "scale": [0.5, 0.5, 0.5] + }, + "head": { + "rotation": [0, 90, 0] + }, + "fixed": { + "rotation": [0, 90, 0], + "translation": [0, 1.5, 0], + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "block", + "origin": [8, 8, 8], + "children": [ + { + "name": "BeltFunnel", + "origin": [9, -4, 8], + "children": [ + { + "name": "FrontSection", + "origin": [9, -4, 8], + "children": [0, 1, 2, 3, + { + "name": "Flap", + "origin": [8, 8, 8], + "children": [4, 5, 6, 7] + } + ] + }, + { + "name": "Extension", + "origin": [9, -4, 8], + "children": [8, 9] + }, + { + "name": "DELETABLEEXTENSION", + "origin": [9, -4, 8], + "children": [] + }, + { + "name": "DELETABLEEXTESNIONMID", + "origin": [35, 12, 4], + "children": [] + }, + { + "name": "Base", + "origin": [9, -4, 8], + "children": [10, 11] + } + ] + }, 12] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/chute_port.json b/src/main/resources/assets/create/models/block/chute_port.json deleted file mode 100644 index 631e2d653..000000000 --- a/src/main/resources/assets/create/models/block/chute_port.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "credit": "Made with Blockbench", - "parent": "block/block", - "textures": { - "14": "create:block/chute_port", - "particle": "create:block/zinc_block" - }, - "elements": [ - { - "name": "Port", - "from": [0, 0, 0], - "to": [16, 16, 16], - "faces": { - "north": {"uv": [12, 0, 16, 4], "texture": "#14"}, - "east": {"uv": [0, 0, 4, 4], "texture": "#14"}, - "south": {"uv": [0, 0, 4, 4], "texture": "#14"}, - "west": {"uv": [0, 0, 4, 4], "texture": "#14"}, - "up": {"uv": [4, 4, 8, 8], "texture": "#14"}, - "down": {"uv": [0, 4, 4, 8], "texture": "#14"} - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/belt_funnel_pull_off.png b/src/main/resources/assets/create/textures/block/belt_funnel_pull_off.png new file mode 100644 index 000000000..dbb3fab83 Binary files /dev/null and b/src/main/resources/assets/create/textures/block/belt_funnel_pull_off.png differ diff --git a/src/main/resources/assets/create/textures/block/belt_funnel_pull_on.png b/src/main/resources/assets/create/textures/block/belt_funnel_pull_on.png new file mode 100644 index 000000000..cb757e00f Binary files /dev/null and b/src/main/resources/assets/create/textures/block/belt_funnel_pull_on.png differ diff --git a/src/main/resources/assets/create/textures/block/belt_funnel_push_off.png b/src/main/resources/assets/create/textures/block/belt_funnel_push_off.png new file mode 100644 index 000000000..4e31e327f Binary files /dev/null and b/src/main/resources/assets/create/textures/block/belt_funnel_push_off.png differ diff --git a/src/main/resources/assets/create/textures/block/belt_funnel_push_on.png b/src/main/resources/assets/create/textures/block/belt_funnel_push_on.png new file mode 100644 index 000000000..203afe626 Binary files /dev/null and b/src/main/resources/assets/create/textures/block/belt_funnel_push_on.png differ diff --git a/src/main/resources/assets/create/textures/block/chute.png b/src/main/resources/assets/create/textures/block/chute.png index d7c1b0a50..a6d6bcf57 100644 Binary files a/src/main/resources/assets/create/textures/block/chute.png and b/src/main/resources/assets/create/textures/block/chute.png differ diff --git a/src/main/resources/assets/create/textures/block/chute_port.png b/src/main/resources/assets/create/textures/block/chute_port.png deleted file mode 100644 index 88fd5a3f1..000000000 Binary files a/src/main/resources/assets/create/textures/block/chute_port.png and /dev/null differ diff --git a/src/main/resources/assets/create/textures/block/funnel_off.png b/src/main/resources/assets/create/textures/block/funnel_off.png index de18a4a64..cd380a8b9 100644 Binary files a/src/main/resources/assets/create/textures/block/funnel_off.png and b/src/main/resources/assets/create/textures/block/funnel_off.png differ diff --git a/src/main/resources/assets/create/textures/block/funnel_on.png b/src/main/resources/assets/create/textures/block/funnel_on.png index ae8942722..eb51c22fe 100644 Binary files a/src/main/resources/assets/create/textures/block/funnel_on.png and b/src/main/resources/assets/create/textures/block/funnel_on.png differ