Fun with funnels

- Reworked funnel assets
- Andesite funnels can now be controlled via redstone input
- Re-introduced creative mounted storage
This commit is contained in:
simibubi 2020-09-14 21:10:38 +02:00
parent 2061072f8c
commit f58a7c8482
70 changed files with 755 additions and 805 deletions

View file

@ -5,7 +5,7 @@ f0d6baaabda94151134f569246d61a6e710c35a9 assets/create/blockstates/acacia_window
79c50afcea3a360783a5b3c73de9823511e9aed9 assets/create/blockstates/adjustable_pulse_repeater.json
1d730df54c9eae94063e37396d224fb3c87517e0 assets/create/blockstates/adjustable_repeater.json
9dd79bf5430f674e7d3e3fc7d59edee3d66e241e assets/create/blockstates/analog_lever.json
aaad1fc11aae17e209b0c3fbc9977c724c50c1ef assets/create/blockstates/andesite_belt_funnel.json
0a172dea0746027be3676e87271615f1307245a6 assets/create/blockstates/andesite_belt_funnel.json
585481e97c5066af63ea12fa5dd658798844d64c assets/create/blockstates/andesite_bricks.json
4e8d61aa2c8490301317ef747f67f0169ebfc2ed assets/create/blockstates/andesite_bricks_slab.json
da63a8be3191d6d72afef6c79e3aea3f607631f9 assets/create/blockstates/andesite_bricks_stairs.json
@ -15,7 +15,7 @@ a579c40c43dc2174afb66f42d00d0c4a0efaaeee assets/create/blockstates/andesite_bric
97adf53a7cb99d7652fb39adc957e9e34cbaca47 assets/create/blockstates/andesite_cobblestone_slab.json
96b5284693da168ab8e0809d86515b5f1a7e763f assets/create/blockstates/andesite_cobblestone_stairs.json
82bd82270aff7d51e9239680ef4dd7b5c899ceb0 assets/create/blockstates/andesite_cobblestone_wall.json
2be950008c00513dfe39021b65c26eea8554ee20 assets/create/blockstates/andesite_funnel.json
11908c2f8603e61bec88010bc6d0890e6339c6b1 assets/create/blockstates/andesite_funnel.json
398922758a6219544e5b85c91c9cf8a543b437e5 assets/create/blockstates/andesite_pillar.json
1d2d8081581e07d9be4b382aede4f2de4401cc6b assets/create/blockstates/andesite_tunnel.json
f9fa6aa530eb0891a74eadfbebc663172a57147a assets/create/blockstates/basin.json
@ -382,10 +382,14 @@ cda6f9761431c5b8538f746db2dc55e5fb57bf01 assets/create/models/block/adjustable_p
ce5e0cd1598cf2228bb77a68c304dd210f3848f8 assets/create/models/block/adjustable_repeater_powered.json
c82a31943f5adb4a64c6db4c48c94cbce5d95bc4 assets/create/models/block/adjustable_repeater_powered_powering.json
51cf61f8bc25cf62b0e0c0705c75512809358ff0 assets/create/models/block/adjustable_repeater_powering.json
e4af27010c74bb5b1e79b6fccf1669526e1bb5e3 assets/create/models/block/andesite_belt_funnel_pull_extended.json
502916dc860e5ba971af51c640192b5ac02e574f assets/create/models/block/andesite_belt_funnel_pull_retracted.json
f1ba5c40d5e580d3c46d2eeab37b59263d0b0904 assets/create/models/block/andesite_belt_funnel_push_extended.json
5689f01354dcb8bf1547467c7c5b86468f962bce assets/create/models/block/andesite_belt_funnel_push_retracted.json
4b8c1db868de612ae6a49d9133db700ac6a3d688 assets/create/models/block/andesite_belt_funnel_pull_extended.json
eb7f1bfcd856bf302cb24dda09994ceef280fca2 assets/create/models/block/andesite_belt_funnel_pull_powered_extended.json
d5d7c62b16aa3cfb279b4e3100f910c1782b5846 assets/create/models/block/andesite_belt_funnel_pull_powered_retracted.json
2d228eae550d573f4cad06ed6f6d51e4975fdde6 assets/create/models/block/andesite_belt_funnel_pull_retracted.json
2a3b929e3c24f70a0842b9ce56c175c4383e2598 assets/create/models/block/andesite_belt_funnel_push_extended.json
56a4d2e099fb285fd04ef095ced3bd7046835711 assets/create/models/block/andesite_belt_funnel_push_powered_extended.json
8a73d43517d64f873896631fbe7fccd085e1603a assets/create/models/block/andesite_belt_funnel_push_powered_retracted.json
aff112cb4ca73f3b1f71e98ccd984ee286da2930 assets/create/models/block/andesite_belt_funnel_push_retracted.json
4d412de3eb98dfee548a0dcdbae5d0168ac67123 assets/create/models/block/andesite_bricks.json
054ef3fff7f146dbf8adc92dc2b6d169c2bdb7a5 assets/create/models/block/andesite_bricks_slab.json
8784414839f6a5786bf43d6a7dff6c27bdf7fe46 assets/create/models/block/andesite_bricks_slab_top.json
@ -403,7 +407,8 @@ ad255a62a5f54b578db06e89fd7160001f905675 assets/create/models/block/andesite_cob
a033fbac3129bba9211c6c4a0e16c905643afa39 assets/create/models/block/andesite_cobblestone_stairs_outer.json
1c574ee47aeb6fcb305bfc95dd131e153b795a0e assets/create/models/block/andesite_cobblestone_wall_post.json
0ed983628e8868f77301bea1111570d3631f24fb assets/create/models/block/andesite_cobblestone_wall_side.json
9febbf6fb88e726a89573c3788bd8348ba805b6d assets/create/models/block/andesite_funnel.json
51e851b15870c0922cfbe911ef1a2f22062969f3 assets/create/models/block/andesite_funnel.json
f28da6703691f1b08cfb49208f0f7bb0c5ca816d assets/create/models/block/andesite_funnel_powered.json
b1d0bb538fc8285b7d3fd77a977d78a104b83b62 assets/create/models/block/andesite_pillar.json
aaf2e4259bcfcedd3400e9acb2d64c0cf06f7fb1 assets/create/models/block/andesite_tunnel/cross.json
75f628178fa21a2bd301eea8d1cebf7e94f7d5cc assets/create/models/block/andesite_tunnel/straight.json
@ -434,18 +439,18 @@ fa79580db6187c864bc8148a41987ecdd1eb03b7 assets/create/models/block/belt_observe
95d4230eb366f5e7684820c9337e3956ed34042a assets/create/models/block/birch_window_pane_side_alt.json
97d79ab99c0fb278a9b5dc54e1c6563868f87b76 assets/create/models/block/black_seat.json
e58b00a7222152d7facbe0e82f00933b974df747 assets/create/models/block/blue_seat.json
7f2ed408fb662a23a75c29398e75bb9deff4c2b5 assets/create/models/block/brass_belt_funnel_pull_extended.json
242c9972e2dc70671ffef4de15a31a74b800fcb4 assets/create/models/block/brass_belt_funnel_pull_powered_extended.json
3f88752bbf2d4d635cfadb9c7217035a74ff78e3 assets/create/models/block/brass_belt_funnel_pull_powered_retracted.json
da2ae304a1b1e02b1ce03cd0205be66d824e16d6 assets/create/models/block/brass_belt_funnel_pull_retracted.json
91ba57aded6f4a99208a8812650f454b1a44fe8b assets/create/models/block/brass_belt_funnel_push_extended.json
ee79efc65b05d953784b00e573d37602629eb9e8 assets/create/models/block/brass_belt_funnel_push_powered_extended.json
1231141717d6609f0e3c282996b1739a2c790e0c assets/create/models/block/brass_belt_funnel_push_powered_retracted.json
253e88f2c11006abdc87156dd409ed3944bb7295 assets/create/models/block/brass_belt_funnel_push_retracted.json
24dff9a8d22c9a88286d2b7d08384ac9f281a512 assets/create/models/block/brass_belt_funnel_pull_extended.json
c9c5f53c9d4f6cf6f509452e91cab1ba5b57f807 assets/create/models/block/brass_belt_funnel_pull_powered_extended.json
addcf821a2348c0985bf9a72229355cfab818069 assets/create/models/block/brass_belt_funnel_pull_powered_retracted.json
332c7b8bf2feb635290b05788b61ead0b2cc813a assets/create/models/block/brass_belt_funnel_pull_retracted.json
094a5aedd53295aaa9b78deedf7899f9875dc5d8 assets/create/models/block/brass_belt_funnel_push_extended.json
44d2cf63398e5e4c39f43412a00d7f0213d8703c assets/create/models/block/brass_belt_funnel_push_powered_extended.json
07eb19291e5c6108e9e25f57f512747bc48352dd assets/create/models/block/brass_belt_funnel_push_powered_retracted.json
6ff63956c71363f198588aca3fd849ad4e0c8863 assets/create/models/block/brass_belt_funnel_push_retracted.json
0934933df6bfbb19a1b14cd0e3cab2c18d5a3ebc assets/create/models/block/brass_block.json
166a5c053a81e6aadc24509ed24dc144a7255969 assets/create/models/block/brass_casing.json
6c617fc504cb2259263d24fc56c4735e455aac6d assets/create/models/block/brass_funnel.json
2f152b82291b7fc994191b1ffb8ec6d65aec748b assets/create/models/block/brass_funnel_powered.json
838e7ab4c0c9d89eacfa078daf64995e505db896 assets/create/models/block/brass_funnel.json
6099ba0366065d15d3b2821474850a1ae85485ea assets/create/models/block/brass_funnel_powered.json
520087db8d479c66f85f3483af813fb668f27503 assets/create/models/block/brass_tunnel/cross.json
347ed67bf3426e323354e2d959fc9563dc7eeecd assets/create/models/block/brass_tunnel/straight.json
a959e03ca339badb49fe58ba53d86a84352e91f3 assets/create/models/block/brass_tunnel/t_left.json
@ -1018,7 +1023,7 @@ d283f86cd05ed378efd82ce46cf49bc83783069b assets/create/models/item/andesite_bric
1ceb0e49f2c46f1d5414d5fd6edfc2bdd3afa6f7 assets/create/models/item/andesite_cobblestone_slab.json
b0f664dd6de3d0ee9afcb6223fbcd53b97fa0d65 assets/create/models/item/andesite_cobblestone_stairs.json
4856d13a72ec0af9f10226b4a4bf0567eb580b9a assets/create/models/item/andesite_cobblestone_wall.json
0a9f5f6d552813029474dbbfa31e8443ed91adcd assets/create/models/item/andesite_funnel.json
7490819e7e5445019b6b8cb2538f12a5b6717a46 assets/create/models/item/andesite_funnel.json
75b8b00c2418b9660d35a7fabd0774925cf1c02f assets/create/models/item/andesite_pillar.json
c0e35daccfb398947532e9499d6bda963387cd9c assets/create/models/item/andesite_tunnel.json
bf1fc6bdf7fca6f1958a2d3e96202c1cecb50669 assets/create/models/item/basin.json
@ -1031,7 +1036,7 @@ bf1fc6bdf7fca6f1958a2d3e96202c1cecb50669 assets/create/models/item/basin.json
0e1977585128fc0ecef640f72e5fc5e9fb47ef92 assets/create/models/item/blue_seat.json
17d340c3678bd24cb085ba49490b2b4cb341a9e7 assets/create/models/item/brass_block.json
f5a18f4279c2e845a5967b1c2f9e807c2bb77afb assets/create/models/item/brass_casing.json
ab045c951352806c3f632dda7b71573f93f60ac4 assets/create/models/item/brass_funnel.json
099961ca4a75b6ecfddd1db6dd29909276759f3b assets/create/models/item/brass_funnel.json
361f75a79de5007d7a99ad0a38103c9aa8c3017c assets/create/models/item/brass_hand.json
1786bdffa2ab5a07c88d2797db3d7b54461323c4 assets/create/models/item/brass_ingot.json
a37be4a0ec9bf6c381527403c57ced4f81abd67c assets/create/models/item/brass_nugget.json

View file

@ -1,64 +1,124 @@
{
"variants": {
"facing=north,pushing=false,shape=retracted": {
"facing=north,powered=false,pushing=false,shape=retracted": {
"model": "create:block/andesite_belt_funnel_pull_retracted"
},
"facing=south,pushing=false,shape=retracted": {
"facing=south,powered=false,pushing=false,shape=retracted": {
"model": "create:block/andesite_belt_funnel_pull_retracted",
"y": 180
},
"facing=west,pushing=false,shape=retracted": {
"facing=west,powered=false,pushing=false,shape=retracted": {
"model": "create:block/andesite_belt_funnel_pull_retracted",
"y": 270
},
"facing=east,pushing=false,shape=retracted": {
"facing=east,powered=false,pushing=false,shape=retracted": {
"model": "create:block/andesite_belt_funnel_pull_retracted",
"y": 90
},
"facing=north,pushing=true,shape=retracted": {
"facing=north,powered=true,pushing=false,shape=retracted": {
"model": "create:block/andesite_belt_funnel_pull_powered_retracted"
},
"facing=south,powered=true,pushing=false,shape=retracted": {
"model": "create:block/andesite_belt_funnel_pull_powered_retracted",
"y": 180
},
"facing=west,powered=true,pushing=false,shape=retracted": {
"model": "create:block/andesite_belt_funnel_pull_powered_retracted",
"y": 270
},
"facing=east,powered=true,pushing=false,shape=retracted": {
"model": "create:block/andesite_belt_funnel_pull_powered_retracted",
"y": 90
},
"facing=north,powered=false,pushing=true,shape=retracted": {
"model": "create:block/andesite_belt_funnel_push_retracted"
},
"facing=south,pushing=true,shape=retracted": {
"facing=south,powered=false,pushing=true,shape=retracted": {
"model": "create:block/andesite_belt_funnel_push_retracted",
"y": 180
},
"facing=west,pushing=true,shape=retracted": {
"facing=west,powered=false,pushing=true,shape=retracted": {
"model": "create:block/andesite_belt_funnel_push_retracted",
"y": 270
},
"facing=east,pushing=true,shape=retracted": {
"facing=east,powered=false,pushing=true,shape=retracted": {
"model": "create:block/andesite_belt_funnel_push_retracted",
"y": 90
},
"facing=north,pushing=false,shape=extended": {
"facing=north,powered=true,pushing=true,shape=retracted": {
"model": "create:block/andesite_belt_funnel_push_powered_retracted"
},
"facing=south,powered=true,pushing=true,shape=retracted": {
"model": "create:block/andesite_belt_funnel_push_powered_retracted",
"y": 180
},
"facing=west,powered=true,pushing=true,shape=retracted": {
"model": "create:block/andesite_belt_funnel_push_powered_retracted",
"y": 270
},
"facing=east,powered=true,pushing=true,shape=retracted": {
"model": "create:block/andesite_belt_funnel_push_powered_retracted",
"y": 90
},
"facing=north,powered=false,pushing=false,shape=extended": {
"model": "create:block/andesite_belt_funnel_pull_extended"
},
"facing=south,pushing=false,shape=extended": {
"facing=south,powered=false,pushing=false,shape=extended": {
"model": "create:block/andesite_belt_funnel_pull_extended",
"y": 180
},
"facing=west,pushing=false,shape=extended": {
"facing=west,powered=false,pushing=false,shape=extended": {
"model": "create:block/andesite_belt_funnel_pull_extended",
"y": 270
},
"facing=east,pushing=false,shape=extended": {
"facing=east,powered=false,pushing=false,shape=extended": {
"model": "create:block/andesite_belt_funnel_pull_extended",
"y": 90
},
"facing=north,pushing=true,shape=extended": {
"facing=north,powered=true,pushing=false,shape=extended": {
"model": "create:block/andesite_belt_funnel_pull_powered_extended"
},
"facing=south,powered=true,pushing=false,shape=extended": {
"model": "create:block/andesite_belt_funnel_pull_powered_extended",
"y": 180
},
"facing=west,powered=true,pushing=false,shape=extended": {
"model": "create:block/andesite_belt_funnel_pull_powered_extended",
"y": 270
},
"facing=east,powered=true,pushing=false,shape=extended": {
"model": "create:block/andesite_belt_funnel_pull_powered_extended",
"y": 90
},
"facing=north,powered=false,pushing=true,shape=extended": {
"model": "create:block/andesite_belt_funnel_push_extended"
},
"facing=south,pushing=true,shape=extended": {
"facing=south,powered=false,pushing=true,shape=extended": {
"model": "create:block/andesite_belt_funnel_push_extended",
"y": 180
},
"facing=west,pushing=true,shape=extended": {
"facing=west,powered=false,pushing=true,shape=extended": {
"model": "create:block/andesite_belt_funnel_push_extended",
"y": 270
},
"facing=east,pushing=true,shape=extended": {
"facing=east,powered=false,pushing=true,shape=extended": {
"model": "create:block/andesite_belt_funnel_push_extended",
"y": 90
},
"facing=north,powered=true,pushing=true,shape=extended": {
"model": "create:block/andesite_belt_funnel_push_powered_extended"
},
"facing=south,powered=true,pushing=true,shape=extended": {
"model": "create:block/andesite_belt_funnel_push_powered_extended",
"y": 180
},
"facing=west,powered=true,pushing=true,shape=extended": {
"model": "create:block/andesite_belt_funnel_push_powered_extended",
"y": 270
},
"facing=east,powered=true,pushing=true,shape=extended": {
"model": "create:block/andesite_belt_funnel_push_powered_extended",
"y": 90
}
}
}

View file

@ -1,30 +1,56 @@
{
"variants": {
"facing=down": {
"facing=down,powered=false": {
"model": "create:block/andesite_funnel",
"x": 180
},
"facing=up": {
"facing=up,powered=false": {
"model": "create:block/andesite_funnel"
},
"facing=north": {
"facing=north,powered=false": {
"model": "create:block/andesite_funnel",
"x": 90
},
"facing=south": {
"facing=south,powered=false": {
"model": "create:block/andesite_funnel",
"x": 90,
"y": 180
},
"facing=west": {
"facing=west,powered=false": {
"model": "create:block/andesite_funnel",
"x": 90,
"y": 270
},
"facing=east": {
"facing=east,powered=false": {
"model": "create:block/andesite_funnel",
"x": 90,
"y": 90
},
"facing=down,powered=true": {
"model": "create:block/andesite_funnel_powered",
"x": 180
},
"facing=up,powered=true": {
"model": "create:block/andesite_funnel_powered"
},
"facing=north,powered=true": {
"model": "create:block/andesite_funnel_powered",
"x": 90
},
"facing=south,powered=true": {
"model": "create:block/andesite_funnel_powered",
"x": 90,
"y": 180
},
"facing=west,powered=true": {
"model": "create:block/andesite_funnel_powered",
"x": 90,
"y": 270
},
"facing=east,powered=true": {
"model": "create:block/andesite_funnel_powered",
"x": 90,
"y": 90
}
}
}

View file

@ -1,9 +1,11 @@
{
"parent": "create:block/belt_funnel/block_extended",
"textures": {
"particle": "create:block/andesite_casing",
"particle": "block/polished_andesite",
"2": "create:block/andesite_funnel_pull",
"3": "create:block/andesite_funnel_back",
"4": "create:block/andesite_funnel_plating"
"5": "create:block/andesite_funnel_tall",
"6": "create:block/andesite_funnel",
"7": "create:block/andesite_funnel_plating"
}
}

View file

@ -0,0 +1,11 @@
{
"parent": "create:block/belt_funnel/block_extended",
"textures": {
"particle": "block/polished_andesite",
"2": "create:block/andesite_funnel_pull",
"3": "create:block/andesite_funnel_back",
"5": "create:block/andesite_funnel_tall_powered",
"6": "create:block/andesite_funnel_powered",
"7": "create:block/andesite_funnel_plating"
}
}

View file

@ -0,0 +1,11 @@
{
"parent": "create:block/belt_funnel/block_retracted",
"textures": {
"particle": "block/polished_andesite",
"2": "create:block/andesite_funnel_pull",
"3": "create:block/andesite_funnel_back",
"5": "create:block/andesite_funnel_tall_powered",
"6": "create:block/andesite_funnel_powered",
"7": "create:block/andesite_funnel_plating"
}
}

View file

@ -1,9 +1,11 @@
{
"parent": "create:block/belt_funnel/block_retracted",
"textures": {
"particle": "create:block/andesite_casing",
"particle": "block/polished_andesite",
"2": "create:block/andesite_funnel_pull",
"3": "create:block/andesite_funnel_back",
"4": "create:block/andesite_funnel_plating"
"5": "create:block/andesite_funnel_tall",
"6": "create:block/andesite_funnel",
"7": "create:block/andesite_funnel_plating"
}
}

View file

@ -1,9 +1,11 @@
{
"parent": "create:block/belt_funnel/block_extended",
"textures": {
"particle": "create:block/andesite_casing",
"particle": "block/polished_andesite",
"2": "create:block/andesite_funnel_push",
"3": "create:block/andesite_funnel_back",
"4": "create:block/andesite_funnel_plating"
"5": "create:block/andesite_funnel_tall",
"6": "create:block/andesite_funnel",
"7": "create:block/andesite_funnel_plating"
}
}

View file

@ -0,0 +1,11 @@
{
"parent": "create:block/belt_funnel/block_extended",
"textures": {
"particle": "block/polished_andesite",
"2": "create:block/andesite_funnel_push",
"3": "create:block/andesite_funnel_back",
"5": "create:block/andesite_funnel_tall_powered",
"6": "create:block/andesite_funnel_powered",
"7": "create:block/andesite_funnel_plating"
}
}

View file

@ -0,0 +1,11 @@
{
"parent": "create:block/belt_funnel/block_retracted",
"textures": {
"particle": "block/polished_andesite",
"2": "create:block/andesite_funnel_push",
"3": "create:block/andesite_funnel_back",
"5": "create:block/andesite_funnel_tall_powered",
"6": "create:block/andesite_funnel_powered",
"7": "create:block/andesite_funnel_plating"
}
}

View file

@ -1,9 +1,11 @@
{
"parent": "create:block/belt_funnel/block_retracted",
"textures": {
"particle": "create:block/andesite_casing",
"particle": "block/polished_andesite",
"2": "create:block/andesite_funnel_push",
"3": "create:block/andesite_funnel_back",
"4": "create:block/andesite_funnel_plating"
"5": "create:block/andesite_funnel_tall",
"6": "create:block/andesite_funnel",
"7": "create:block/andesite_funnel_plating"
}
}

View file

@ -1,9 +1,9 @@
{
"parent": "create:block/funnel/block",
"textures": {
"2": "create:block/andesite_funnel_back",
"3": "create:block/andesite_funnel",
"4": "create:block/andesite_funnel_plating",
"particle": "create:block/andesite_casing"
"0": "create:block/andesite_funnel_plating",
"1": "create:block/andesite_casing",
"2": "create:block/andesite_funnel",
"3": "create:block/andesite_funnel_back"
}
}

View file

@ -0,0 +1,9 @@
{
"parent": "create:block/funnel/block",
"textures": {
"0": "create:block/andesite_funnel_plating",
"1": "create:block/andesite_casing",
"2": "create:block/andesite_funnel_powered",
"3": "create:block/andesite_funnel_back"
}
}

View file

@ -1,9 +1,11 @@
{
"parent": "create:block/belt_funnel/block_extended",
"textures": {
"particle": "create:block/brass_casing",
"particle": "create:block/brass_block",
"2": "create:block/brass_funnel_pull",
"3": "create:block/brass_funnel_back",
"4": "create:block/brass_funnel_plating"
"5": "create:block/brass_funnel_tall",
"6": "create:block/brass_funnel",
"7": "create:block/brass_funnel_plating"
}
}

View file

@ -1,9 +1,11 @@
{
"parent": "create:block/belt_funnel/block_extended",
"textures": {
"particle": "create:block/brass_casing",
"2": "create:block/brass_funnel_pull_powered",
"particle": "create:block/brass_block",
"2": "create:block/brass_funnel_pull",
"3": "create:block/brass_funnel_back",
"4": "create:block/brass_funnel_plating"
"5": "create:block/brass_funnel_tall_powered",
"6": "create:block/brass_funnel_powered",
"7": "create:block/brass_funnel_plating"
}
}

View file

@ -1,9 +1,11 @@
{
"parent": "create:block/belt_funnel/block_retracted",
"textures": {
"particle": "create:block/brass_casing",
"2": "create:block/brass_funnel_pull_powered",
"particle": "create:block/brass_block",
"2": "create:block/brass_funnel_pull",
"3": "create:block/brass_funnel_back",
"4": "create:block/brass_funnel_plating"
"5": "create:block/brass_funnel_tall_powered",
"6": "create:block/brass_funnel_powered",
"7": "create:block/brass_funnel_plating"
}
}

View file

@ -1,9 +1,11 @@
{
"parent": "create:block/belt_funnel/block_retracted",
"textures": {
"particle": "create:block/brass_casing",
"particle": "create:block/brass_block",
"2": "create:block/brass_funnel_pull",
"3": "create:block/brass_funnel_back",
"4": "create:block/brass_funnel_plating"
"5": "create:block/brass_funnel_tall",
"6": "create:block/brass_funnel",
"7": "create:block/brass_funnel_plating"
}
}

View file

@ -1,9 +1,11 @@
{
"parent": "create:block/belt_funnel/block_extended",
"textures": {
"particle": "create:block/brass_casing",
"particle": "create:block/brass_block",
"2": "create:block/brass_funnel_push",
"3": "create:block/brass_funnel_back",
"4": "create:block/brass_funnel_plating"
"5": "create:block/brass_funnel_tall",
"6": "create:block/brass_funnel",
"7": "create:block/brass_funnel_plating"
}
}

View file

@ -1,9 +1,11 @@
{
"parent": "create:block/belt_funnel/block_extended",
"textures": {
"particle": "create:block/brass_casing",
"2": "create:block/brass_funnel_push_powered",
"particle": "create:block/brass_block",
"2": "create:block/brass_funnel_push",
"3": "create:block/brass_funnel_back",
"4": "create:block/brass_funnel_plating"
"5": "create:block/brass_funnel_tall_powered",
"6": "create:block/brass_funnel_powered",
"7": "create:block/brass_funnel_plating"
}
}

View file

@ -1,9 +1,11 @@
{
"parent": "create:block/belt_funnel/block_retracted",
"textures": {
"particle": "create:block/brass_casing",
"2": "create:block/brass_funnel_push_powered",
"particle": "create:block/brass_block",
"2": "create:block/brass_funnel_push",
"3": "create:block/brass_funnel_back",
"4": "create:block/brass_funnel_plating"
"5": "create:block/brass_funnel_tall_powered",
"6": "create:block/brass_funnel_powered",
"7": "create:block/brass_funnel_plating"
}
}

View file

@ -1,9 +1,11 @@
{
"parent": "create:block/belt_funnel/block_retracted",
"textures": {
"particle": "create:block/brass_casing",
"particle": "create:block/brass_block",
"2": "create:block/brass_funnel_push",
"3": "create:block/brass_funnel_back",
"4": "create:block/brass_funnel_plating"
"5": "create:block/brass_funnel_tall",
"6": "create:block/brass_funnel",
"7": "create:block/brass_funnel_plating"
}
}

View file

@ -1,9 +1,9 @@
{
"parent": "create:block/funnel/block",
"textures": {
"2": "create:block/brass_funnel_back",
"3": "create:block/brass_funnel",
"4": "create:block/brass_funnel_plating",
"particle": "create:block/brass_casing"
"0": "create:block/brass_funnel_plating",
"1": "create:block/brass_casing",
"2": "create:block/brass_funnel",
"3": "create:block/brass_funnel_back"
}
}

View file

@ -1,9 +1,9 @@
{
"parent": "create:block/funnel/block",
"textures": {
"2": "create:block/brass_funnel_back",
"3": "create:block/brass_funnel_powered",
"4": "create:block/brass_funnel_plating",
"particle": "create:block/brass_casing"
"0": "create:block/brass_funnel_plating",
"1": "create:block/brass_casing",
"2": "create:block/brass_funnel_powered",
"3": "create:block/brass_funnel_back"
}
}

View file

@ -1,9 +1,9 @@
{
"parent": "create:block/funnel/item",
"textures": {
"2": "create:block/andesite_funnel_back",
"3": "create:block/andesite_funnel",
"4": "create:block/andesite_funnel_plating",
"particle": "create:block/andesite_casing"
"0": "create:block/andesite_funnel_plating",
"1": "create:block/andesite_casing",
"2": "create:block/andesite_funnel",
"3": "create:block/andesite_funnel_back"
}
}

View file

@ -1,9 +1,9 @@
{
"parent": "create:block/funnel/item",
"textures": {
"2": "create:block/brass_funnel_back",
"3": "create:block/brass_funnel",
"4": "create:block/brass_funnel_plating",
"particle": "create:block/brass_casing"
"0": "create:block/brass_funnel_plating",
"1": "create:block/brass_casing",
"2": "create:block/brass_funnel",
"3": "create:block/brass_funnel_back"
}
}

View file

@ -64,7 +64,7 @@ public class AllBlockPartials {
CUCKOO_RIGHT_DOOR = get("cuckoo_clock/right_door"), CUCKOO_PIG = get("cuckoo_clock/pig"),
CUCKOO_CREEPER = get("cuckoo_clock/creeper"), ROPE_COIL = get("rope_pulley/rope_coil"),
ROPE_HALF = get("rope_pulley/rope_half"), ROPE_HALF_MAGNET = get("rope_pulley/rope_half_magnet"),
MILLSTONE_COG = get("millstone/inner"), PACKAGER_SEALER = get("packager/sealer"),
MILLSTONE_COG = get("millstone/inner"),
SYMMETRY_PLANE = get("symmetry_effect/plane"), SYMMETRY_CROSSPLANE = get("symmetry_effect/crossplane"),
SYMMETRY_TRIPLEPLANE = get("symmetry_effect/tripleplane"),
@ -80,9 +80,7 @@ public class AllBlockPartials {
MECHANICAL_PUMP_ARROW = get("mechanical_pump/arrow"), MECHANICAL_PUMP_COG = get("mechanical_pump/cog"),
FLUID_PIPE_CASING = get("fluid_pipe/casing"),
SPOUT_TOP = get("spout/top"),
SPOUT_MIDDLE = get("spout/middle"),
SPOUT_BOTTOM = get("spout/bottom"),
SPOUT_TOP = get("spout/top"), SPOUT_MIDDLE = get("spout/middle"), SPOUT_BOTTOM = get("spout/bottom"),
COUPLING_ATTACHMENT = getEntity("minecart_coupling/attachment"),
COUPLING_RING = getEntity("minecart_coupling/ring"),

View file

@ -843,7 +843,7 @@ public class AllBlocks {
public static final BlockEntry<AndesiteBeltFunnelBlock> ANDESITE_BELT_FUNNEL =
REGISTRATE.block("andesite_belt_funnel", AndesiteBeltFunnelBlock::new)
.initialProperties(SharedProperties::stone)
.blockstate(new BeltFunnelGenerator("andesite")::generate)
.blockstate(new BeltFunnelGenerator("andesite", new ResourceLocation("block/polished_andesite"))::generate)
.loot((p, b) -> p.registerDropping(b, ANDESITE_FUNNEL.get()))
.register();
@ -857,7 +857,7 @@ public class AllBlocks {
public static final BlockEntry<BrassBeltFunnelBlock> BRASS_BELT_FUNNEL =
REGISTRATE.block("brass_belt_funnel", BrassBeltFunnelBlock::new)
.initialProperties(SharedProperties::softMetal)
.blockstate(new BeltFunnelGenerator("brass")::generate)
.blockstate(new BeltFunnelGenerator("brass", Create.asResource("block/brass_block"))::generate)
.loot((p, b) -> p.registerDropping(b, BRASS_FUNNEL.get()))
.register();

View file

@ -60,18 +60,22 @@ public class AllShapes {
NIXIE_TUBE_CEILING = shape(0, 12, 0, 16, 16, 16).add(9, 1, 5, 15, 16, 11)
.add(1, 1, 5, 7, 16, 11)
.forHorizontalAxis(),
FUNNEL = shape(3, -2, 3, 13, 2, 13).add(2, 2, 2, 14, 6, 14)
.add(1, 6, 1, 15, 10, 15)
FUNNEL = shape(2, -2, 2, 14, 2, 14).add(3, 2, 3, 13, 6, 13)
.add(2, 6, 2, 14, 10, 14)
.add(0, 10, 0, 16, 16, 16)
.forDirectional(UP),
FUNNEL_COLLISION = shape(3, -2, 3, 13, 2, 13).add(2, 2, 2, 14, 6, 14)
.add(1, 6, 1, 15, 10, 15)
FUNNEL_COLLISION = shape(2, -2, 2, 14, 2, 14).add(3, 2, 3, 13, 6, 13)
.add(2, 6, 2, 14, 10, 14)
.add(0, 10, 0, 16, 13, 16)
.forDirectional(UP),
BELT_FUNNEL_RETRACTED = shape(3, -5, 14, 13, 13, 19).add(0, -5, 8, 16, 16, 14)
BELT_FUNNEL_RETRACTED =
shape(2, -5, 14, 12, 14, 18)
.add(0, -5, 8, 16, 16, 14)
.forHorizontal(NORTH),
BELT_FUNNEL_EXTENDED = shape(3, -4, 6, 13, 13, 17).add(2, -4, 10, 14, 14, 14)
.add(1, -4, 6, 15, 15, 10)
BELT_FUNNEL_EXTENDED =
shape(2, -4, 14, 14, 14, 18)
.add(3, -4, 10, 13, 13, 14)
.add(2, -4, 6, 14, 14, 10)
.add(0, -5, 0, 16, 16, 6)
.forHorizontal(NORTH),
PUMP = shape(2, 0, 2, 14, 5, 14).add(4, 0, 4, 12, 16, 12)

View file

@ -22,7 +22,7 @@ public abstract class MovedProjectileDispenserBehaviour extends MovedDefaultDisp
double x = pos.getX() + facing.x * .7 + .5;
double y = pos.getY() + facing.y * .7 + .5;
double z = pos.getZ() + facing.z * .7 + .5;
IProjectile iprojectile = this.getProjectileEntity(context.world, x, y, z, itemStack);
IProjectile iprojectile = this.getProjectileEntity(context.world, x, y, z, itemStack.copy());
if (iprojectile == null)
return itemStack;
Vec3d effectiveMovementVec = facing.scale(getProjectileVelocity()).add(context.motion);

View file

@ -17,11 +17,11 @@ import java.util.stream.Collectors;
import javax.annotation.Nullable;
import com.simibubi.create.AllMovementBehaviours;
import org.apache.commons.lang3.tuple.MutablePair;
import org.apache.commons.lang3.tuple.Pair;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllMovementBehaviours;
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
import com.simibubi.create.content.contraptions.components.actors.SeatBlock;
import com.simibubi.create.content.contraptions.components.actors.SeatEntity;
@ -503,36 +503,29 @@ public abstract class Contraption {
});
superglue.clear();
nbt.getList("Superglue", 10)
.forEach(c -> {
CompoundNBT comp = (CompoundNBT) c;
superglue.add(Pair.of(NBTUtil.readBlockPos(comp.getCompound("Pos")),
Direction.byIndex(comp.getByte("Direction"))));
});
NBTHelper.iterateCompoundList(nbt.getList("Superglue", NBT.TAG_COMPOUND), c -> superglue
.add(Pair.of(NBTUtil.readBlockPos(c.getCompound("Pos")), Direction.byIndex(c.getByte("Direction")))));
seats.clear();
NBTHelper.iterateCompoundList(nbt.getList("Seats", NBT.TAG_COMPOUND), c -> seats.add(NBTUtil.readBlockPos(c)));
seatMapping.clear();
NBTHelper.iterateCompoundList(nbt.getList("Passengers", NBT.TAG_COMPOUND),
c -> seatMapping.put(NBTUtil.readUniqueId(c.getCompound("Id")), c.getInt("Seat")));
storage.clear();
nbt.getList("Storage", 10)
.forEach(c -> {
CompoundNBT comp = (CompoundNBT) c;
storage.put(NBTUtil.readBlockPos(comp.getCompound("Pos")),
new MountedStorage(comp.getCompound("Data")));
});
List<IItemHandlerModifiable> list = storage.values()
.stream()
.map(MountedStorage::getItemHandler)
.collect(Collectors.toList());
inventory = new CombinedInvWrapper(Arrays.copyOf(list.toArray(), list.size(), IItemHandlerModifiable[].class));
NBTHelper.iterateCompoundList(nbt.getList("Storage", NBT.TAG_COMPOUND), c -> storage
.put(NBTUtil.readBlockPos(c.getCompound("Pos")), MountedStorage.deserialize(c.getCompound("Data"))));
IItemHandlerModifiable[] handlers = new IItemHandlerModifiable[storage.size()];
int index = 0;
for (MountedStorage mountedStorage : storage.values())
handlers[index++] = mountedStorage.getItemHandler();
inventory = new CombinedInvWrapper(handlers);
if (nbt.contains("BoundsFront"))
bounds = NBTHelper.readAABB(nbt.getList("BoundsFront", 5));
getSeats().clear();
NBTHelper.iterateCompoundList(nbt.getList("Seats", NBT.TAG_COMPOUND),
c -> getSeats().add(NBTUtil.readBlockPos(c)));
getSeatMapping().clear();
NBTHelper.iterateCompoundList(nbt.getList("Passengers", NBT.TAG_COMPOUND),
c -> getSeatMapping().put(NBTUtil.readUniqueId(c.getCompound("Id")), c.getInt("Seat")));
stalled = nbt.getBoolean("Stalled");
anchor = NBTUtil.readBlockPos(nbt.getCompound("Anchor"));
}
@ -572,7 +565,7 @@ public abstract class Contraption {
for (BlockPos pos : storage.keySet()) {
CompoundNBT c = new CompoundNBT();
MountedStorage mountedStorage = storage.get(pos);
if (!mountedStorage.isWorking())
if (!mountedStorage.isValid())
continue;
c.put("Pos", NBTUtil.writeBlockPos(pos));
c.put("Data", mountedStorage.serialize());
@ -612,7 +605,7 @@ public abstract class Contraption {
public void removeBlocksFromWorld(IWorld world, BlockPos offset) {
storage.values()
.forEach(MountedStorage::empty);
.forEach(MountedStorage::removeStorageFromWorld);
glueToRemove.forEach(SuperGlueEntity::remove);
for (boolean brittles : Iterate.trueAndFalse) {
@ -710,8 +703,8 @@ public abstract class Contraption {
if (storage.containsKey(block.pos)) {
MountedStorage mountedStorage = storage.get(block.pos);
if (mountedStorage.isWorking())
mountedStorage.fill(tileEntity);
if (mountedStorage.isValid())
mountedStorage.addStorageToWorld(tileEntity);
}
}
}

View file

@ -2,6 +2,8 @@ package com.simibubi.create.content.contraptions.components.structureMovement;
import com.simibubi.create.AllTileEntities;
import com.simibubi.create.content.logistics.block.inventories.AdjustableCrateBlock;
import com.simibubi.create.content.logistics.block.inventories.BottomlessItemHandler;
import com.simibubi.create.foundation.utility.NBTHelper;
import net.minecraft.block.ChestBlock;
import net.minecraft.item.ItemStack;
@ -18,21 +20,41 @@ import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.IItemHandlerModifiable;
import net.minecraftforge.items.ItemStackHandler;
//FIXME: More dynamic mounted storage in .4
public class MountedStorage {
private static final ItemStackHandler dummyHandler = new ItemStackHandler();
ItemStackHandler handler;
boolean working;
boolean valid;
private TileEntity te;
public static boolean canUseAsStorage(TileEntity te) {
if (te == null)
return false;
if (AllTileEntities.ADJUSTABLE_CRATE.is(te))
return true;
if (AllTileEntities.CREATIVE_CRATE.is(te))
return true;
if (te instanceof ShulkerBoxTileEntity)
return true;
if (te instanceof ChestTileEntity)
return true;
if (te instanceof BarrelTileEntity)
return true;
LazyOptional<IItemHandler> capability = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY);
return capability.orElse(null) instanceof ItemStackHandler;
}
public MountedStorage(TileEntity te) {
this.te = te;
handler = dummyHandler;
}
public void empty() {
working = false;
public void removeStorageFromWorld() {
valid = false;
if (te == null)
return;
@ -64,7 +86,7 @@ public class MountedStorage {
// te uses ItemStackHandler
if (teHandler instanceof ItemStackHandler) {
handler = (ItemStackHandler) teHandler;
working = true;
valid = true;
return;
}
@ -76,27 +98,25 @@ public class MountedStorage {
handler.setStackInSlot(slot, inv.getStackInSlot(slot));
inv.setStackInSlot(slot, ItemStack.EMPTY);
}
working = true;
valid = true;
return;
}
}
public MountedStorage(CompoundNBT nbt) {
handler = new ItemStackHandler();
working = nbt != null;
if (working)
handler.deserializeNBT(nbt);
}
public void addStorageToWorld(TileEntity te) {
// FIXME: More dynamic mounted storage in .4
if (handler instanceof BottomlessItemHandler)
return;
public void fill(TileEntity te) {
IItemHandler teHandler = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY)
.orElse(dummyHandler);
if (teHandler != dummyHandler && teHandler instanceof IItemHandlerModifiable) {
IItemHandlerModifiable inv = (IItemHandlerModifiable) teHandler;
for (int slot = 0; slot < Math.min(inv.getSlots(), handler.getSlots()); slot++)
inv.setStackInSlot(slot, handler.getStackInSlot(slot));
}
LazyOptional<IItemHandler> capability = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY);
IItemHandler teHandler = capability.orElse(null);
if (!(teHandler instanceof IItemHandlerModifiable))
return;
IItemHandlerModifiable inv = (IItemHandlerModifiable) teHandler;
for (int slot = 0; slot < Math.min(inv.getSlots(), handler.getSlots()); slot++)
inv.setStackInSlot(slot, handler.getStackInSlot(slot));
}
public IItemHandlerModifiable getItemHandler() {
@ -104,28 +124,38 @@ public class MountedStorage {
}
public CompoundNBT serialize() {
return working ? handler.serializeNBT() : null;
if (!valid)
return null;
CompoundNBT tag = handler.serializeNBT();
if (handler instanceof BottomlessItemHandler) {
NBTHelper.putMarker(tag, "Bottomless");
tag.put("ProvidedStack", handler.getStackInSlot(0)
.serializeNBT());
}
return tag;
}
public boolean isWorking() {
return working;
public static MountedStorage deserialize(CompoundNBT nbt) {
MountedStorage storage = new MountedStorage(null);
storage.handler = new ItemStackHandler();
if (nbt == null)
return storage;
storage.valid = true;
if (nbt.contains("Bottomless")) {
ItemStack providedStack = ItemStack.read(nbt.getCompound("ProvidedStack"));
storage.handler = new BottomlessItemHandler(() -> providedStack);
return storage;
}
storage.handler.deserializeNBT(nbt);
return storage;
}
public static boolean canUseAsStorage(TileEntity te) {
if (te == null)
return false;
if (AllTileEntities.ADJUSTABLE_CRATE.is(te))
return true;
if (te instanceof ShulkerBoxTileEntity)
return true;
if (te instanceof ChestTileEntity)
return true;
if (te instanceof BarrelTileEntity)
return true;
LazyOptional<IItemHandler> capability = te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY);
if (capability.isPresent() && capability.orElse(null) instanceof ItemStackHandler)
return true;
return false;
public boolean isValid() {
return valid;
}
}

View file

@ -519,28 +519,28 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE<BeltTileEnt
}
public static boolean canAccessFromSide(Direction facing, BlockState belt) {
if (facing == null)
return true;
if (!belt.get(BeltBlock.CASING))
return false;
BeltPart part = belt.get(BeltBlock.PART);
if (part != BeltPart.MIDDLE && facing.getAxis() == belt.get(HORIZONTAL_FACING)
.rotateY()
.getAxis())
return false;
BeltSlope slope = belt.get(BeltBlock.SLOPE);
if (slope != BeltSlope.HORIZONTAL) {
if (slope == BeltSlope.DOWNWARD && part == BeltPart.END)
return true;
if (slope == BeltSlope.UPWARD && part == BeltPart.START)
return true;
Direction beltSide = belt.get(HORIZONTAL_FACING);
if (slope == BeltSlope.DOWNWARD)
beltSide = beltSide.getOpposite();
if (beltSide == facing)
return false;
}
// if (facing == null)
// return true;
// if (!belt.get(BeltBlock.CASING))
// return false;
// BeltPart part = belt.get(BeltBlock.PART);
// if (part != BeltPart.MIDDLE && facing.getAxis() == belt.get(HORIZONTAL_FACING)
// .rotateY()
// .getAxis())
// return false;
//
// BeltSlope slope = belt.get(BeltBlock.SLOPE);
// if (slope != BeltSlope.HORIZONTAL) {
// if (slope == BeltSlope.DOWNWARD && part == BeltPart.END)
// return true;
// if (slope == BeltSlope.UPWARD && part == BeltPart.START)
// return true;
// Direction beltSide = belt.get(HORIZONTAL_FACING);
// if (slope == BeltSlope.DOWNWARD)
// beltSide = beltSide.getOpposite();
// if (beltSide == facing)
// return false;
// }
return true;
}

View file

@ -10,7 +10,7 @@ public class AndesiteBeltFunnelBlock extends BeltFunnelBlock {
@Override
public boolean hasPoweredProperty() {
return false;
return true;
}
}

View file

@ -17,7 +17,8 @@ public class AndesiteFunnelBlock extends FunnelBlock {
public BlockState getEquivalentBeltFunnel(IBlockReader world, BlockPos pos, BlockState state) {
Direction facing = state.get(FACING);
return AllBlocks.ANDESITE_BELT_FUNNEL.getDefaultState()
.with(BeltFunnelBlock.HORIZONTAL_FACING, facing);
.with(BeltFunnelBlock.HORIZONTAL_FACING, facing)
.with(POWERED, state.get(POWERED));
}
}

View file

@ -6,14 +6,18 @@ import com.tterrag.registrate.providers.RegistrateBlockstateProvider;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.state.properties.BlockStateProperties;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.generators.ModelFile;
public class BeltFunnelGenerator extends SpecialBlockStateGen {
private String type;
private ResourceLocation materialBlockTexture;
public BeltFunnelGenerator(String type) {
public BeltFunnelGenerator(String type, ResourceLocation materialBlockTexture) {
this.type = type;
this.materialBlockTexture = materialBlockTexture;
}
@Override
@ -30,18 +34,23 @@ public class BeltFunnelGenerator extends SpecialBlockStateGen {
public <T extends Block> ModelFile getModel(DataGenContext<Block, T> ctx, RegistrateBlockstateProvider prov,
BlockState state) {
boolean pushing = state.get(BeltFunnelBlock.PUSHING);
boolean powered = state.has(BeltFunnelBlock.POWERED) && state.get(BeltFunnelBlock.POWERED);
boolean powered = state.has(BlockStateProperties.POWERED) && state.get(BeltFunnelBlock.POWERED);
String shapeName = state.get(BeltFunnelBlock.SHAPE)
.getName();
String suffix = (pushing ? "push" : "pull") + (powered ? "_powered" : "");
String name = ctx.getName() + "_" + suffix;
String textureName = type + "_funnel_" + suffix;
String pushingSuffix = (pushing ? "push" : "pull") ;
String poweredSuffix = powered ? "_powered" : "";
String name = ctx.getName() + "_" + pushingSuffix + poweredSuffix;
String textureName = type + "_funnel_" + pushingSuffix;
return prov.models()
.withExistingParent(name + "_" + shapeName, prov.modLoc("block/belt_funnel/block_" + shapeName))
.texture("particle", prov.modLoc("block/" + type + "_casing"))
.texture("particle", materialBlockTexture)
.texture("2", prov.modLoc("block/" + textureName))
.texture("3", prov.modLoc("block/" + type + "_funnel_back"))
.texture("4", prov.modLoc("block/" + type + "_funnel_plating"));
.texture("5", prov.modLoc("block/" + type + "_funnel_tall" + poweredSuffix))
.texture("6", prov.modLoc("block/" + type + "_funnel" + poweredSuffix))
.texture("7", prov.modLoc("block/" + type + "_funnel_plating"));
}
}

View file

@ -2,50 +2,15 @@ package com.simibubi.create.content.logistics.block.funnel;
import com.simibubi.create.AllBlocks;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.item.BlockItemUseContext;
import net.minecraft.state.BooleanProperty;
import net.minecraft.state.StateContainer.Builder;
import net.minecraft.state.properties.BlockStateProperties;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.World;
public class BrassFunnelBlock extends FunnelBlock {
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
public BrassFunnelBlock(Properties p_i48415_1_) {
super(p_i48415_1_);
setDefaultState(getDefaultState().with(POWERED, false));
}
@Override
public BlockState getStateForPlacement(BlockItemUseContext context) {
return super.getStateForPlacement(context).with(POWERED, context.getWorld()
.isBlockPowered(context.getPos()));
}
@Override
protected boolean canInsertIntoFunnel(BlockState state) {
return super.canInsertIntoFunnel(state) && !state.get(POWERED);
}
@Override
protected void fillStateContainer(Builder<Block, BlockState> builder) {
super.fillStateContainer(builder.add(POWERED));
}
@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

View file

@ -5,7 +5,6 @@ import javax.annotation.Nullable;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllShapes;
import com.simibubi.create.AllTileEntities;
import com.simibubi.create.content.logistics.block.chute.ChuteBlock;
import com.simibubi.create.foundation.block.ITE;
import com.simibubi.create.foundation.block.ProperDirectionalBlock;
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
@ -20,6 +19,8 @@ import net.minecraft.entity.item.ItemEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.BlockItemUseContext;
import net.minecraft.item.ItemStack;
import net.minecraft.state.BooleanProperty;
import net.minecraft.state.StateContainer.Builder;
import net.minecraft.state.properties.BlockStateProperties;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType;
@ -38,22 +39,33 @@ import net.minecraft.world.World;
public abstract class FunnelBlock extends ProperDirectionalBlock implements ITE<FunnelTileEntity> {
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
public FunnelBlock(Properties p_i48415_1_) {
super(p_i48415_1_);
setDefaultState(getDefaultState().with(POWERED, false));
}
@Override
public BlockState getStateForPlacement(BlockItemUseContext context) {
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);
return getDefaultState().with(FACING, facing).with(POWERED, context.getWorld()
.isBlockPowered(context.getPos()));
}
@Override
protected void fillStateContainer(Builder<Block, BlockState> builder) {
super.fillStateContainer(builder.add(POWERED));
}
@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
@ -183,7 +195,7 @@ public abstract class FunnelBlock extends ProperDirectionalBlock implements ITE<
}
protected boolean canInsertIntoFunnel(BlockState state) {
return true;
return !state.get(POWERED);
}
@Nullable

View file

@ -19,21 +19,44 @@ public class FunnelFilterSlotPositioning extends ValueBoxTransform.Sided {
@Override
protected Vec3d getLocalOffset(BlockState state) {
Direction side = getSide();
float horizontalAngle = AngleHelper.horizontalAngle(side);
Direction funnelFacing = FunnelBlock.getFunnelFacing(state);
float stateAngle = AngleHelper.horizontalAngle(funnelFacing);
if (AllBlocks.BRASS_BELT_FUNNEL.has(state))
if (state.get(BeltFunnelBlock.SHAPE) == Shape.RETRACTED)
return VecHelper.rotateCentered(VecHelper.voxelSpace(8, 13, 7.5f),
AngleHelper.horizontalAngle(getSide()), Axis.Y);
return VecHelper.rotateCentered(VecHelper.voxelSpace(8, 13, 7.5f), horizontalAngle, Axis.Y);
else
return VecHelper.rotateCentered(VecHelper.voxelSpace(8, 15.5f, 13), stateAngle, Axis.Y);
Vec3d localOffset =
getSide() == Direction.UP ? VecHelper.voxelSpace(8, 14.5f, 8) : VecHelper.voxelSpace(8, 1.5f, 8);
if (getSide().getAxis()
if (!funnelFacing.getAxis()
.isHorizontal()) {
Vec3d southLocation = VecHelper.voxelSpace(8, 8, 14.5f);
localOffset = VecHelper.rotateCentered(southLocation, AngleHelper.horizontalAngle(getSide()), Axis.Y);
Vec3d southLocation = VecHelper.voxelSpace(8, 13, 15.5f);
return VecHelper.rotateCentered(southLocation, horizontalAngle, Axis.Y);
}
return localOffset;
Direction verticalDirection = DirectionHelper.rotateAround(getSide(), funnelFacing.rotateY()
.getAxis());
if (funnelFacing.getAxis() == Axis.Z)
verticalDirection = verticalDirection.getOpposite();
boolean reverse = state.getBlock() instanceof HorizontalInteractionFunnelBlock
&& !state.get(HorizontalInteractionFunnelBlock.PUSHING);
float yRot = -AngleHelper.horizontalAngle(verticalDirection) + 180;
float xRot = -90;
boolean alongX = funnelFacing.getAxis() == Axis.X;
float zRotLast = alongX ^ funnelFacing.getAxisDirection() == AxisDirection.POSITIVE ? 180 : 0;
if (reverse)
zRotLast += 180;
Vec3d vec = VecHelper.voxelSpace(8, 13, .5f);
vec = vec.subtract(.5, .5, .5);
vec = VecHelper.rotate(vec, zRotLast, Axis.Z);
vec = VecHelper.rotate(vec, yRot, Axis.Y);
vec = VecHelper.rotate(vec, alongX ? 0 : xRot, Axis.X);
vec = VecHelper.rotate(vec, alongX ? xRot : 0, Axis.Z);
vec = vec.add(.5, .5, .5);
return vec;
}
@Override
@ -78,7 +101,7 @@ public class FunnelFilterSlotPositioning extends ValueBoxTransform.Sided {
if (AllBlocks.BRASS_BELT_FUNNEL.has(state))
return state.get(BeltFunnelBlock.SHAPE) == Shape.RETRACTED ? direction == facing
: direction != Direction.DOWN && direction.getAxis() != facing.getAxis();
: direction == Direction.UP;
return direction.getAxis() != facing.getAxis();
}

View file

@ -55,6 +55,7 @@ public class FunnelTileEntity extends SmartTileEntity {
@Override
public void tick() {
super.tick();
flap.tick();
Mode mode = determineCurrentMode();
if (mode == Mode.BELT)
tickAsBeltFunnel();
@ -65,7 +66,6 @@ public class FunnelTileEntity extends SmartTileEntity {
public void tickAsBeltFunnel() {
BlockState blockState = getBlockState();
Direction facing = blockState.get(BeltFunnelBlock.HORIZONTAL_FACING);
flap.tick();
if (world.isRemote)
return;
@ -134,13 +134,17 @@ public class FunnelTileEntity extends SmartTileEntity {
private boolean supportsDirectBeltInput(Direction side) {
BlockState blockState = getBlockState();
return blockState != null && blockState.getBlock() instanceof FunnelBlock
&& blockState.get(FunnelBlock.FACING) == Direction.UP;
if (blockState == null)
return false;
if (!(blockState.getBlock() instanceof FunnelBlock))
return false;
Direction direction = blockState.get(FunnelBlock.FACING);
return direction == Direction.UP || direction == side.getOpposite();
}
private boolean supportsFiltering() {
BlockState blockState = getBlockState();
return blockState != null && blockState.has(BlockStateProperties.POWERED);
return AllBlocks.BRASS_BELT_FUNNEL.has(blockState) || AllBlocks.BRASS_FUNNEL.has(blockState);
}
private ItemStack handleDirectBeltInput(TransportedItemStack stack, Direction side, boolean simulate) {

View file

@ -1,6 +1,7 @@
package com.simibubi.create.content.logistics.block.inventories;
import javax.annotation.Nullable;
import java.util.function.Supplier;
import javax.annotation.ParametersAreNonnullByDefault;
import mcp.MethodsReturnNonnullByDefault;
@ -10,12 +11,12 @@ import net.minecraftforge.items.ItemStackHandler;
@MethodsReturnNonnullByDefault
@ParametersAreNonnullByDefault
public class CreativeCrateInventory extends ItemStackHandler {
public class BottomlessItemHandler extends ItemStackHandler {
private final CreativeCrateTileEntity te;
private Supplier<ItemStack> suppliedItemStack;
public CreativeCrateInventory(@Nullable CreativeCrateTileEntity te) {
this.te = te;
public BottomlessItemHandler(Supplier<ItemStack> suppliedItemStack) {
this.suppliedItemStack = suppliedItemStack;
}
@Override
@ -25,7 +26,7 @@ public class CreativeCrateInventory extends ItemStackHandler {
@Override
public ItemStack getStackInSlot(int slot) {
ItemStack stack = getProvidedItem();
ItemStack stack = suppliedItemStack.get();
if (slot == 1)
return ItemStack.EMPTY;
if (stack == null)
@ -42,7 +43,7 @@ public class CreativeCrateInventory extends ItemStackHandler {
@Override
public ItemStack extractItem(int slot, int amount, boolean simulate) {
ItemStack stack = getProvidedItem();
ItemStack stack = suppliedItemStack.get();
if (slot == 1)
return ItemStack.EMPTY;
if (stack == null)
@ -56,11 +57,4 @@ public class CreativeCrateInventory extends ItemStackHandler {
public boolean isItemValid(int slot, ItemStack stack) {
return true;
}
@Nullable
public ItemStack getProvidedItem() {
if (te != null)
return te.filter.getFilter();
return ItemStack.EMPTY;
}
}

View file

@ -24,20 +24,18 @@ public class CreativeCrateTileEntity extends CrateTileEntity {
public CreativeCrateTileEntity(TileEntityType<? extends CreativeCrateTileEntity> type) {
super(type);
inv = new CreativeCrateInventory(this);
inv = new BottomlessItemHandler(filtering::getFilter);
itemHandler = LazyOptional.of(() -> inv);
}
FilteringBehaviour filter;
FilteringBehaviour filtering;
LazyOptional<IItemHandler> itemHandler;
private CreativeCrateInventory inv;
private BottomlessItemHandler inv;
@Override
public void addBehaviours(List<TileEntityBehaviour> behaviours) {
filter = createFilter();
filter.onlyActiveWhen(this::filterVisible);
filter.withCallback(this::filterChanged);
behaviours.add(filter);
behaviours.add(filtering = createFilter().onlyActiveWhen(this::filterVisible)
.withCallback(this::filterChanged));
}
private boolean filterVisible() {
@ -52,13 +50,14 @@ public class CreativeCrateTileEntity extends CrateTileEntity {
CreativeCrateTileEntity otherCrate = getOtherCrate();
if (otherCrate == null)
return;
if (ItemStack.areItemsEqual(filter, otherCrate.filter.getFilter()))
if (ItemStack.areItemsEqual(filter, otherCrate.filtering.getFilter()))
return;
otherCrate.filter.setFilter(filter);
otherCrate.filtering.setFilter(filter);
}
@Override
public void remove() {
super.remove();
if (itemHandler != null)
itemHandler.invalidate();
}
@ -79,10 +78,10 @@ public class CreativeCrateTileEntity extends CrateTileEntity {
if (otherCrate == null)
return;
filter.withCallback($ -> {
filtering.withCallback($ -> {
});
filter.setFilter(otherCrate.filter.getFilter());
filter.withCallback(this::filterChanged);
filtering.setFilter(otherCrate.filtering.getFilter());
filtering.withCallback(this::filterChanged);
}
@Override

View file

@ -61,20 +61,20 @@ public class BuilderTransformers {
s.has(BlockStateProperties.POWERED) && s.get(BlockStateProperties.POWERED) ? "_powered" : "";
return p.models()
.withExistingParent("block/" + type + "_funnel" + powered, p.modLoc("block/funnel/block"))
.texture("2", p.modLoc("block/" + type + "_funnel_back"))
.texture("3", p.modLoc("block/" + type + "_funnel" + powered))
.texture("4", p.modLoc("block/" + type + "_funnel_plating"))
.texture("particle", particleTexture);
.texture("0", p.modLoc("block/" + type + "_funnel_plating"))
.texture("1", particleTexture)
.texture("2", p.modLoc("block/" + type + "_funnel" + powered))
.texture("3", p.modLoc("block/" + type + "_funnel_back"));
};
p.directionalBlock(c.get(), model);
})
.item(FunnelItem::new)
.model((c, p) -> {
p.withExistingParent("item/" + type + "_funnel", p.modLoc("block/funnel/item"))
.texture("2", p.modLoc("block/" + type + "_funnel_back"))
.texture("3", p.modLoc("block/" + type + "_funnel"))
.texture("4", p.modLoc("block/" + type + "_funnel_plating"))
.texture("particle", particleTexture);
.texture("0", p.modLoc("block/" + type + "_funnel_plating"))
.texture("1", particleTexture)
.texture("2", p.modLoc("block/" + type + "_funnel"))
.texture("3", p.modLoc("block/" + type + "_funnel_back"));
})
.build();
};

View file

@ -13,6 +13,10 @@ import net.minecraft.util.math.AxisAlignedBB;
public class NBTHelper {
public static void putMarker(CompoundNBT nbt, String marker) {
nbt.putBoolean(marker, true);
}
public static <T extends Enum<?>> T readEnum(CompoundNBT nbt, String key, Class<T> enumClass) {
T[] enumConstants = enumClass.getEnumConstants();
String name = nbt.getString(key);

View file

@ -4,7 +4,9 @@
"textures": {
"2": "create:block/brass_funnel_push",
"3": "create:block/brass_funnel_back",
"4": "create:block/brass_funnel_plating",
"5": "create:block/brass_funnel_tall",
"6": "create:block/brass_funnel",
"7": "create:block/brass_funnel_plating",
"particle": "create:block/brass_block"
},
"elements": [
@ -14,9 +16,9 @@
"to": [16, 0, 6],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]},
"faces": {
"north": {"uv": [8, 13.5, 9, 15], "texture": "#4"},
"north": {"uv": [0, 8, 1, 9.5], "texture": "#7"},
"east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"},
"south": {"uv": [15, 13.5, 16, 15], "texture": "#4"},
"south": {"uv": [15, 8, 16, 9.5], "texture": "#7"},
"west": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}
}
},
@ -26,9 +28,9 @@
"to": [2, 0, 6],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]},
"faces": {
"north": {"uv": [15, 13.5, 16, 15], "texture": "#4"},
"north": {"uv": [7, 8, 8, 9.5], "texture": "#7"},
"east": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"},
"south": {"uv": [16, 13.5, 15, 15], "texture": "#4"},
"south": {"uv": [8, 7.5, 9, 9], "texture": "#7"},
"west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"}
}
},
@ -38,9 +40,9 @@
"to": [16, 16, 6],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]},
"faces": {
"north": {"uv": [8, 5.5, 9, 13.5], "texture": "#4"},
"north": {"uv": [0, 0, 1, 8], "texture": "#7"},
"east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"},
"south": {"uv": [15, 5.5, 16, 13.5], "texture": "#4"},
"south": {"uv": [15, 0, 16, 8], "texture": "#7"},
"west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"},
"up": {"uv": [14, 0, 16, 6], "texture": "#2"}
}
@ -51,9 +53,9 @@
"to": [2, 16, 6],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]},
"faces": {
"north": {"uv": [15, 5.5, 16, 13.5], "texture": "#4"},
"north": {"uv": [7, 0, 8, 8], "texture": "#7"},
"east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"},
"south": {"uv": [16, 5.5, 15, 13.5], "texture": "#4"},
"south": {"uv": [8, 0, 9, 8], "texture": "#7"},
"west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"},
"up": {"uv": [16, 0, 14, 6], "texture": "#2"}
}
@ -64,10 +66,10 @@
"to": [14, 16, 6],
"rotation": {"angle": 0, "axis": "y", "origin": [6, -8, 0]},
"faces": {
"north": {"uv": [9, 5.5, 15, 8.5], "texture": "#4"},
"south": {"uv": [9, 5.5, 15, 8.5], "texture": "#4"},
"up": {"uv": [2, 0, 14, 6], "texture": "#2"},
"down": {"uv": [2, 0, 14, 6], "texture": "#particle"}
"north": {"uv": [1, 0, 7, 3], "texture": "#7"},
"south": {"uv": [9, 0, 15, 3], "texture": "#7"},
"up": {"uv": [1, 0, 7, 3], "texture": "#7"},
"down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#2"}
}
},
{
@ -76,9 +78,9 @@
"to": [16, -3, 6],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]},
"faces": {
"north": {"uv": [8, 15, 8.5, 16], "texture": "#4"},
"east": {"uv": [5, 15, 8, 16], "texture": "#4"},
"west": {"uv": [5, 15, 8, 16], "texture": "#4"}
"north": {"uv": [0, 9.5, 0.5, 10.5], "texture": "#7"},
"east": {"uv": [5, 15, 8, 16], "texture": "#7"},
"west": {"uv": [5, 15, 8, 16], "texture": "#7"}
}
},
{
@ -87,60 +89,61 @@
"to": [1, -3, 6],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 0]},
"faces": {
"north": {"uv": [15.5, 15, 16, 16], "texture": "#4"},
"east": {"uv": [8, 15, 5, 16], "texture": "#4"},
"west": {"uv": [8, 15, 5, 16], "texture": "#4"}
"north": {"uv": [7.5, 9.5, 8, 10.5], "texture": "#7"},
"east": {"uv": [8, 15, 5, 16], "texture": "#7"},
"west": {"uv": [8, 15, 5, 16], "texture": "#7"}
}
},
{
"name": "BackExtension",
"from": [2, -2, 10],
"to": [14, 14, 14],
"from": [3, -2, 10],
"to": [13, 13, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]},
"faces": {
"east": {"uv": [9, 8, 11, 16], "texture": "#3"},
"east": {"uv": [9, 6, 16, 8], "rotation": 90, "texture": "#3"},
"south": {"uv": [0, 0.5, 8, 6.5], "rotation": 90, "texture": "#3"},
"west": {"uv": [9, 8, 11, 16], "texture": "#3"},
"up": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#3"}
"west": {"uv": [9, 6, 16, 8], "rotation": 270, "texture": "#3"},
"up": {"uv": [9.5, 2, 14.5, 4], "texture": "#3"}
}
},
{
"name": "MidExtension",
"from": [1, -2, 6],
"to": [15, 15, 10],
"from": [2, -2, 6],
"to": [14, 14, 10],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]},
"faces": {
"north": {"uv": [0, 7.5, 7, 16], "texture": "#3"},
"east": {"uv": [7, 7.5, 9, 16], "rotation": 180, "texture": "#3"},
"south": {"uv": [0, 0, 8.5, 7], "rotation": 270, "texture": "#3"},
"west": {"uv": [7, 7.5, 9, 16], "rotation": 180, "texture": "#3"},
"up": {"uv": [11, 9, 13, 16], "rotation": 270, "texture": "#3"}
"north": {"uv": [0, 6, 6, 14], "texture": "#3"},
"east": {"uv": [1, 6, 9, 8], "rotation": 90, "texture": "#3"},
"south": {"uv": [8, 0, 16, 6], "rotation": 270, "texture": "#3"},
"west": {"uv": [1, 8, 9, 6], "rotation": 90, "texture": "#3"},
"up": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#3"}
}
},
{
"name": "BackBottom",
"from": [3.9, -3, 16],
"to": [12.1, 7, 26],
"rotation": {"angle": -22.5, "axis": "x", "origin": [8, -5, 17]},
"from": [3.9, -2, 18],
"to": [12.1, 2, 26],
"rotation": {"angle": -22.5, "axis": "x", "origin": [8, -4, 17]},
"faces": {
"east": {"uv": [9.5, 11, 14.5, 16], "rotation": 270, "texture": "#4"},
"south": {"uv": [1.5, 10, 6.5, 14], "rotation": 90, "texture": "#4"},
"west": {"uv": [9.5, 11, 14.5, 16], "rotation": 270, "texture": "#4"},
"up": {"uv": [2.5, 10, 7.5, 14], "rotation": 270, "texture": "#4"},
"down": {"uv": [0, 10, 5, 14], "rotation": 270, "texture": "#4"}
"east": {"uv": [12, 12, 14, 16], "rotation": 270, "texture": "#7"},
"south": {"uv": [8, 13, 12, 15], "rotation": 180, "texture": "#7"},
"west": {"uv": [12, 12, 14, 16], "rotation": 270, "texture": "#7"},
"up": {"uv": [8, 12, 12, 16], "rotation": 180, "texture": "#7"},
"down": {"uv": [8, 12, 12, 16], "rotation": 180, "texture": "#7"}
}
},
{
"name": "Back",
"from": [2.9, -4.1, 14],
"to": [13.1, 13.1, 17],
"from": [2.1, -2.1, 14],
"to": [13.9, 13.9, 17.9],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]},
"faces": {
"east": {"uv": [5, 0, 6.5, 8.5], "texture": "#4"},
"south": {"uv": [0, 0, 5, 8.5], "texture": "#4"},
"west": {"uv": [5, 0, 6.5, 8.5], "texture": "#4"},
"up": {"uv": [0, 8.5, 5, 10], "texture": "#4"},
"down": {"uv": [0, 8.5, 5, 10], "texture": "#4"}
"north": {"uv": [0, 4, 16, 16], "rotation": 90, "texture": "#5"},
"east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"},
"south": {"uv": [9, 1, 15, 9], "texture": "#7"},
"west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"},
"up": {"uv": [0, 0, 12, 4], "texture": "#6"},
"down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"}
}
},
{
@ -150,7 +153,7 @@
"rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]},
"faces": {
"north": {"uv": [1, 13, 15, 16], "texture": "#particle"},
"south": {"uv": [0.5, 14.5, 7.5, 16], "texture": "#4"},
"south": {"uv": [0.5, 13, 7.5, 14.5], "texture": "#7"},
"up": {"uv": [1, 5, 15, 16], "texture": "#particle"}
}
},
@ -160,9 +163,9 @@
"to": [16, -2, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]},
"faces": {
"east": {"uv": [0, 14.5, 5, 16], "texture": "#4"},
"south": {"uv": [7.5, 14.5, 8, 16], "texture": "#4"},
"up": {"uv": [0, 14.5, 5.5, 15], "rotation": 270, "texture": "#4"}
"east": {"uv": [0, 14.5, 5, 16], "texture": "#7"},
"south": {"uv": [7.5, 14.5, 8, 16], "texture": "#7"},
"up": {"uv": [0, 14.5, 5.5, 15], "rotation": 270, "texture": "#7"}
}
},
{
@ -171,49 +174,12 @@
"to": [1, -2, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]},
"faces": {
"south": {"uv": [0, 14.5, 0.5, 16], "texture": "#4"},
"west": {"uv": [5, 14.5, 0, 16], "texture": "#4"},
"up": {"uv": [0, 15, 5.5, 14.5], "rotation": 270, "texture": "#4"}
"south": {"uv": [0, 14.5, 0.5, 16], "texture": "#7"},
"west": {"uv": [5, 14.5, 0, 16], "texture": "#7"},
"up": {"uv": [0, 15, 5.5, 14.5], "rotation": 270, "texture": "#7"}
}
}
],
"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": "BeltFunnel",

View file

@ -4,7 +4,9 @@
"textures": {
"2": "create:block/brass_funnel_push",
"3": "create:block/brass_funnel_back",
"4": "create:block/brass_funnel_plating",
"5": "create:block/brass_funnel_tall",
"6": "create:block/brass_funnel",
"7": "create:block/brass_funnel_plating",
"particle": "create:block/brass_block"
},
"elements": [
@ -14,9 +16,9 @@
"to": [16, 0, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]},
"faces": {
"north": {"uv": [8, 13.5, 9, 15], "texture": "#4"},
"north": {"uv": [0, 8, 1, 9.5], "texture": "#7"},
"east": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"},
"south": {"uv": [15, 13.5, 16, 15], "texture": "#4"},
"south": {"uv": [15, 8, 16, 9.5], "texture": "#7"},
"west": {"uv": [13, 0, 16, 6], "rotation": 90, "texture": "#2"}
}
},
@ -26,9 +28,9 @@
"to": [2, 0, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]},
"faces": {
"north": {"uv": [15, 13.5, 16, 15], "texture": "#4"},
"north": {"uv": [7, 8, 8, 9.5], "texture": "#7"},
"east": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"},
"south": {"uv": [16, 13.5, 15, 15], "texture": "#4"},
"south": {"uv": [8, 7.5, 9, 9], "texture": "#7"},
"west": {"uv": [13, 6, 16, 0], "rotation": 90, "texture": "#2"}
}
},
@ -38,9 +40,9 @@
"to": [16, 16, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]},
"faces": {
"north": {"uv": [8, 5.5, 9, 13.5], "texture": "#4"},
"north": {"uv": [0, 0, 1, 8], "texture": "#7"},
"east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"},
"south": {"uv": [15, 5.5, 16, 13.5], "texture": "#4"},
"south": {"uv": [15, 0, 16, 8], "texture": "#7"},
"west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"},
"up": {"uv": [14, 0, 16, 6], "texture": "#2"}
}
@ -51,9 +53,9 @@
"to": [2, 16, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]},
"faces": {
"north": {"uv": [15, 5.5, 16, 13.5], "texture": "#4"},
"north": {"uv": [7, 0, 8, 8], "texture": "#7"},
"east": {"uv": [0, 6, 16, 12], "rotation": 90, "texture": "#2"},
"south": {"uv": [16, 5.5, 15, 13.5], "texture": "#4"},
"south": {"uv": [8, 0, 9, 8], "texture": "#7"},
"west": {"uv": [0, 12, 16, 6], "rotation": 90, "texture": "#2"},
"up": {"uv": [16, 0, 14, 6], "texture": "#2"}
}
@ -64,10 +66,20 @@
"to": [14, 16, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [6, -8, 8]},
"faces": {
"north": {"uv": [9, 5.5, 15, 8.5], "texture": "#4"},
"south": {"uv": [9, 5.5, 15, 8.5], "texture": "#4"},
"north": {"uv": [1, 0, 7, 3], "texture": "#7"},
"south": {"uv": [9, 0, 15, 3], "texture": "#7"},
"up": {"uv": [2, 0, 14, 6], "texture": "#2"},
"down": {"uv": [2, 0, 14, 6], "texture": "#particle"}
"down": {"uv": [2, 0, 14, 6], "rotation": 180, "texture": "#2"}
}
},
{
"name": "Top",
"from": [2, -2, 12],
"to": [14, 10, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [6, -14, 8]},
"faces": {
"north": {"uv": [0, 8, 6, 14], "texture": "#3"},
"south": {"uv": [9, 3, 15, 9.5], "texture": "#7"}
}
},
{
@ -76,9 +88,9 @@
"to": [16, -3, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]},
"faces": {
"north": {"uv": [8, 15, 8.5, 16], "texture": "#4"},
"east": {"uv": [5, 15, 8, 16], "texture": "#4"},
"west": {"uv": [5, 15, 8, 16], "texture": "#4"}
"north": {"uv": [0, 9.5, 0.5, 10.5], "texture": "#7"},
"east": {"uv": [5, 15, 8, 16], "texture": "#7"},
"west": {"uv": [5, 15, 8, 16], "texture": "#7"}
}
},
{
@ -87,61 +99,35 @@
"to": [1, -3, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]},
"faces": {
"north": {"uv": [15.5, 15, 16, 16], "texture": "#4"},
"east": {"uv": [8, 15, 5, 16], "texture": "#4"},
"west": {"uv": [8, 15, 5, 16], "texture": "#4"}
}
},
{
"name": "BackExtension",
"from": [2, -2, 12],
"to": [14, 14, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]},
"faces": {
"east": {"uv": [9, 8, 11, 16], "texture": "#3"},
"south": {"uv": [0, 0.5, 8, 6.5], "rotation": 90, "texture": "#3"},
"west": {"uv": [9, 8, 11, 16], "texture": "#3"},
"up": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#3"}
}
},
{
"name": "MidExtension",
"from": [1, -2, 11],
"to": [15, 15, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]},
"faces": {
"north": {"uv": [0, 7.5, 7, 16], "texture": "#3"},
"east": {"uv": [7, 7.5, 9, 16], "rotation": 180, "texture": "#3"},
"south": {"uv": [0, 0, 8.5, 7], "rotation": 270, "texture": "#3"},
"west": {"uv": [7, 7.5, 9, 16], "rotation": 180, "texture": "#3"},
"up": {"uv": [11, 9, 13, 16], "rotation": 270, "texture": "#3"}
"north": {"uv": [7.5, 9.5, 8, 10.5], "texture": "#7"},
"east": {"uv": [8, 15, 5, 16], "texture": "#7"},
"west": {"uv": [8, 15, 5, 16], "texture": "#7"}
}
},
{
"name": "BackBottom",
"from": [3.9, -5, 16],
"to": [12.1, 5, 26],
"rotation": {"angle": -22.5, "axis": "x", "origin": [8, -5, 17]},
"from": [3.9, -2, 18],
"to": [12.1, 2, 26],
"rotation": {"angle": -22.5, "axis": "x", "origin": [8, -4, 17]},
"faces": {
"north": {"uv": [1.5, 10, 6.5, 14], "rotation": 90, "texture": "#4"},
"east": {"uv": [9.5, 11, 14.5, 16], "rotation": 270, "texture": "#4"},
"south": {"uv": [1.5, 10, 6.5, 14], "rotation": 90, "texture": "#4"},
"west": {"uv": [9.5, 11, 14.5, 16], "rotation": 270, "texture": "#4"},
"up": {"uv": [2.5, 10, 7.5, 14], "rotation": 270, "texture": "#4"},
"down": {"uv": [1, 10, 6, 14], "rotation": 270, "texture": "#4"}
"east": {"uv": [12, 12, 14, 16], "rotation": 270, "texture": "#7"},
"south": {"uv": [8, 13, 12, 15], "rotation": 180, "texture": "#7"},
"west": {"uv": [12, 12, 14, 16], "rotation": 270, "texture": "#7"},
"up": {"uv": [8, 12, 12, 16], "rotation": 180, "texture": "#7"},
"down": {"uv": [8, 12, 12, 16], "rotation": 180, "texture": "#7"}
}
},
{
"name": "Back",
"from": [2.9, -4.1, 16],
"to": [13.1, 13.1, 19],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]},
"from": [2.1, -2.1, 14],
"to": [13.9, 13.9, 17.9],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8.1, 6]},
"faces": {
"east": {"uv": [5, 0, 6.5, 8.5], "texture": "#4"},
"south": {"uv": [0, 0, 5, 8.5], "texture": "#4"},
"west": {"uv": [5, 0, 6.5, 8.5], "texture": "#4"},
"up": {"uv": [0, 8.5, 5, 10], "texture": "#4"},
"down": {"uv": [0, 8.5, 5, 10], "texture": "#4"}
"east": {"uv": [0, 0, 16, 4], "rotation": 90, "texture": "#5"},
"south": {"uv": [9, 1, 15, 9], "texture": "#7"},
"west": {"uv": [0, 0, 16, 4], "rotation": 270, "texture": "#5"},
"up": {"uv": [0, 0, 12, 4], "texture": "#6"},
"down": {"uv": [0, 0, 12, 4], "rotation": 180, "texture": "#6"}
}
},
{
@ -151,7 +137,7 @@
"rotation": {"angle": 0, "axis": "y", "origin": [7, -8, 8]},
"faces": {
"north": {"uv": [1, 13, 15, 16], "texture": "#particle"},
"south": {"uv": [0.5, 14.5, 7.5, 16], "texture": "#4"},
"south": {"uv": [0.5, 13, 7.5, 14.5], "texture": "#7"},
"up": {"uv": [1, 10, 15, 16], "texture": "#particle"}
}
},
@ -159,62 +145,36 @@
"name": "BackPlateLeft",
"from": [15, -5, 14],
"to": [16, -2, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]},
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]},
"faces": {
"east": {"uv": [0, 14.5, 1, 16], "texture": "#4"},
"south": {"uv": [7.5, 14.5, 8, 16], "texture": "#4"},
"up": {"uv": [0, 14.5, 1, 15], "rotation": 270, "texture": "#4"}
"east": {"uv": [0, 14.5, 1, 16], "texture": "#7"},
"south": {"uv": [7.5, 14.5, 8, 16], "texture": "#7"},
"up": {"uv": [0, 14.5, 5.5, 15], "rotation": 270, "texture": "#7"}
}
},
{
"name": "BackPlateLeft",
"from": [0, -5, 14],
"to": [1, -2, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 8]},
"rotation": {"angle": 0, "axis": "y", "origin": [8, -8, 6]},
"faces": {
"south": {"uv": [0, 14.5, 0.5, 16], "texture": "#4"},
"west": {"uv": [1, 14.5, 0, 16], "texture": "#4"},
"up": {"uv": [0, 15, 1, 14.5], "rotation": 270, "texture": "#4"}
"south": {"uv": [0, 14.5, 0.5, 16], "texture": "#7"},
"west": {"uv": [1, 14.5, 0, 16], "texture": "#7"},
"up": {"uv": [0, 15, 5.5, 14.5], "rotation": 270, "texture": "#7"}
}
},
{
"from": [1, -2, 14],
"to": [15, 15, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [9, 6, 22]},
"faces": {
"east": {"uv": [1, 6, 9, 6.5], "rotation": 90, "texture": "#3"},
"south": {"uv": [8, 0, 16, 6], "rotation": 90, "texture": "#3"},
"west": {"uv": [1, 6, 9, 6.5], "rotation": 90, "texture": "#3"},
"up": {"uv": [6, 0, 6.5, 6], "rotation": 90, "texture": "#3"}
}
}
],
"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": "BeltFunnel",
@ -223,19 +183,13 @@
{
"name": "FrontSection",
"origin": [9, -4, 8],
"children": [0, 1, 2, 3, 4, 5, 6]
},
{
"name": "Extension",
"origin": [9, -4, 8],
"children": [7, 8]
"children": [0, 1, 2, 3, 4, 5, 6, 7]
},
{
"name": "Base",
"origin": [9, -4, 8],
"children": [9, 10, 11, 12, 13]
"children": [8, 9, 10, 11, 12]
}
]
}
]
}, 13]
}

View file

@ -1,6 +1,7 @@
{
"credit": "Made with Blockbench",
"textures": {
"4": "create:block/brass_funnel_plating"
"4": "create:block/brass_funnel_back"
},
"elements": [
{
@ -9,12 +10,12 @@
"to": [14, 10, 10],
"rotation": {"angle": 0, "axis": "y", "origin": [-24.5, -7.5, 9]},
"faces": {
"north": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"},
"east": {"uv": [6.5, 0, 7, 6.5], "texture": "#4"},
"south": {"uv": [6.5, 0, 8, 6.5], "texture": "#4"},
"west": {"uv": [7.5, 0, 8, 6.5], "texture": "#4"},
"up": {"uv": [6.5, 0, 8, 0.5], "rotation": 180, "texture": "#4"},
"down": {"uv": [6.5, 6, 8, 6.5], "rotation": 180, "texture": "#4"}
"north": {"uv": [14, 8.5, 12.5, 15], "texture": "#4"},
"east": {"uv": [13.5, 8.5, 14, 15], "texture": "#4"},
"south": {"uv": [12.5, 8.5, 14, 15], "texture": "#4"},
"west": {"uv": [12.5, 8.5, 13, 15], "texture": "#4"},
"up": {"uv": [12.5, 8.5, 14, 9], "texture": "#4"},
"down": {"uv": [12.5, 14.5, 14, 15], "texture": "#4"}
}
}
]

View file

@ -2,210 +2,104 @@
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"2": "create:block/brass_funnel_back",
"3": "create:block/brass_funnel",
"4": "create:block/brass_funnel_plating",
"particle": "create:block/brass_block"
"0": "create:block/brass_funnel_plating",
"1": "create:block/brass_block",
"2": "create:block/brass_funnel",
"3": "create:block/brass_funnel_back",
"particle": "#1"
},
"elements": [
{
"name": "RightWall",
"from": [0, 10, 0],
"to": [2, 16, 16],
"from": [2.1, -1.9, 2.1],
"to": [13.9, 2, 13.9],
"rotation": {"angle": 0, "axis": "y", "origin": [10, 7, 10]},
"faces": {
"north": {"uv": [14, 0, 16, 6], "texture": "#3"},
"east": {"uv": [0, 0, 16, 6], "texture": "#3"},
"south": {"uv": [0, 0, 2, 6], "texture": "#3"},
"west": {"uv": [0, 0, 16, 6], "texture": "#3"},
"up": {"uv": [14, 0, 16, 16], "rotation": 180, "texture": "#particle"},
"down": {"uv": [0, 0, 2, 16], "texture": "#particle"}
"north": {"uv": [0, 0, 12, 4], "texture": "#2"},
"east": {"uv": [0, 0, 12, 4], "texture": "#2"},
"south": {"uv": [0, 0, 12, 4], "texture": "#2"},
"west": {"uv": [0, 0, 12, 4], "texture": "#2"},
"up": {"uv": [0, 4, 12, 16], "texture": "#2"},
"down": {"uv": [6, 8, 12, 14], "texture": "#3"}
}
},
{
"name": "LeftWall",
"from": [14, 10, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 2, 6], "texture": "#3"},
"east": {"uv": [0, 0, 16, 6], "texture": "#3"},
"south": {"uv": [14, 0, 16, 6], "texture": "#3"},
"west": {"uv": [0, 0, 16, 6], "texture": "#3"},
"up": {"uv": [0, 0, 2, 16], "rotation": 180, "texture": "#particle"},
"down": {"uv": [14, 0, 16, 16], "texture": "#particle"}
}
},
{
"name": "Top",
"from": [2, 10, 14],
"to": [14, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 8]},
"rotation": {"angle": 0, "axis": "y", "origin": [10, 19, 12]},
"faces": {
"north": {"uv": [2, 0, 14, 6], "texture": "#3"},
"south": {"uv": [2, 0, 14, 6], "texture": "#3"},
"up": {"uv": [2, 0, 14, 2], "rotation": 180, "texture": "#particle"},
"down": {"uv": [2, 0, 14, 2], "texture": "#particle"}
"north": {"uv": [2, 1, 14, 7], "texture": "#1"},
"south": {"uv": [1, 0, 7, 3], "texture": "#0"},
"up": {"uv": [2, 14, 14, 16], "texture": "#1"},
"down": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#1"}
}
},
{
"name": "Top",
"from": [2, 10, 0],
"to": [14, 16, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 8]},
"rotation": {"angle": 0, "axis": "y", "origin": [10, 19, -2]},
"faces": {
"north": {"uv": [2, 0, 14, 6], "texture": "#3"},
"south": {"uv": [2, 0, 14, 6], "texture": "#3"},
"up": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#particle"},
"down": {"uv": [2, 14, 14, 16], "texture": "#particle"}
"north": {"uv": [1, 0, 7, 3], "texture": "#0"},
"south": {"uv": [2, 1, 14, 7], "texture": "#1"},
"up": {"uv": [2, 0, 14, 2], "texture": "#1"},
"down": {"uv": [2, 0, 14, 2], "rotation": 180, "texture": "#1"}
}
},
{
"name": "F4",
"from": [11, 14, 1.5],
"to": [14, 15, 14.5],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 8.5, 8]},
"from": [0, 10, 0],
"to": [2, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [-2, 19, -2]},
"faces": {
"up": {"uv": [6.5, 0, 8, 6.5], "rotation": 180, "texture": "#4"}
"north": {"uv": [7, 0, 8, 3], "texture": "#0"},
"east": {"uv": [0, 1, 16, 7], "texture": "#1"},
"south": {"uv": [0, 0, 1, 3], "texture": "#0"},
"west": {"uv": [0, 0, 8, 3], "texture": "#0"},
"up": {"uv": [0, 0, 2, 16], "texture": "#1"},
"down": {"uv": [0, 0, 2, 16], "texture": "#1"}
}
},
{
"name": "F5",
"from": [5, 14, 1.5],
"to": [8, 15, 14.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.5, 8]},
"from": [14, 10, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [12, 19, -2]},
"faces": {
"up": {"uv": [6.5, 0, 8, 6.5], "rotation": 180, "texture": "#4"}
"north": {"uv": [0, 0, 1, 3], "texture": "#0"},
"east": {"uv": [0, 0, 8, 3], "texture": "#0"},
"south": {"uv": [7, 0, 8, 3], "texture": "#0"},
"west": {"uv": [0, 1, 16, 7], "texture": "#1"},
"up": {"uv": [14, 0, 16, 16], "texture": "#1"},
"down": {"uv": [14, 0, 16, 16], "texture": "#1"}
}
},
{
"name": "F5",
"from": [8, 14, 1.5],
"to": [11, 15, 14.5],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 8.5, 8]},
"from": [2, 6, 2],
"to": [14, 10, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [10, 15, 10]},
"faces": {
"up": {"uv": [6.5, 0, 8, 6.5], "rotation": 180, "texture": "#4"}
"north": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#3"},
"east": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#3"},
"south": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#3"},
"west": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#3"},
"down": {"uv": [0, 0, 6, 6], "texture": "#3"}
}
},
{
"name": "F6",
"from": [2, 14, 1.5],
"to": [5, 15, 14.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.5, 8]},
"from": [2, 11, 2],
"to": [14, 15, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [10, 20, 10]},
"faces": {
"up": {"uv": [6.5, 0, 8, 6.5], "rotation": 180, "texture": "#4"}
"up": {"uv": [0, 8, 6, 14], "texture": "#3"}
}
},
{
"name": "BackExtension",
"from": [2, 2, 2],
"to": [14, 6, 14],
"from": [3, 2, 3],
"to": [13, 6, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [10, 11, 10]},
"faces": {
"north": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#2"},
"east": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#2"},
"south": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#2"},
"west": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#2"},
"down": {"uv": [9, 0.5, 15, 6.5], "texture": "#2"}
"north": {"uv": [9.5, 2, 14.5, 4], "texture": "#3"},
"east": {"uv": [9.5, 2, 14.5, 4], "texture": "#3"},
"south": {"uv": [9.5, 2, 14.5, 4], "texture": "#3"},
"west": {"uv": [9.5, 2, 14.5, 4], "texture": "#3"}
}
},
{
"name": "MidExtension",
"from": [1, 6, 1],
"to": [15, 10, 15],
"faces": {
"north": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#2"},
"east": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#2"},
"south": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#2"},
"west": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#2"},
"up": {"uv": [0, 9, 7, 16], "rotation": 180, "texture": "#2"},
"down": {"uv": [8.5, 0, 15.5, 7], "texture": "#2"}
}
},
{
"name": "Back",
"from": [3.1, -1.9, 3.1],
"to": [12.9, 2, 12.9],
"faces": {
"north": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"},
"east": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"},
"south": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"},
"west": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"},
"down": {"uv": [9.5, 11, 14.5, 16], "texture": "#4"}
}
}
],
"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": "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]
}
]
}
]
}

View file

@ -2,133 +2,103 @@
"credit": "Made with Blockbench",
"parent": "block/block",
"textures": {
"2": "create:block/brass_funnel_back",
"3": "create:block/brass_funnel",
"4": "create:block/brass_funnel_plating",
"particle": "create:block/brass_block"
"0": "create:block/brass_funnel_plating",
"1": "create:block/brass_block",
"2": "create:block/brass_funnel",
"3": "create:block/brass_funnel_back",
"particle": "#1"
},
"elements": [
{
"name": "RightWall",
"from": [0, 10, 0],
"to": [2, 16, 16],
"from": [2.1, -1.9, 2.1],
"to": [13.9, 2, 13.9],
"rotation": {"angle": 0, "axis": "y", "origin": [10, 7, 10]},
"faces": {
"north": {"uv": [14, 0, 16, 6], "texture": "#3"},
"east": {"uv": [0, 0, 16, 6], "texture": "#3"},
"south": {"uv": [0, 0, 2, 6], "texture": "#3"},
"west": {"uv": [0, 0, 16, 6], "texture": "#3"},
"up": {"uv": [14, 0, 16, 16], "rotation": 180, "texture": "#particle"},
"down": {"uv": [0, 0, 2, 16], "texture": "#particle"}
"north": {"uv": [0, 0, 12, 4], "texture": "#2"},
"east": {"uv": [0, 0, 12, 4], "texture": "#2"},
"south": {"uv": [0, 0, 12, 4], "texture": "#2"},
"west": {"uv": [0, 0, 12, 4], "texture": "#2"},
"up": {"uv": [0, 4, 12, 16], "texture": "#2"},
"down": {"uv": [6, 8, 12, 14], "texture": "#3"}
}
},
{
"name": "LeftWall",
"from": [14, 10, 0],
"to": [16, 16, 16],
"faces": {
"north": {"uv": [0, 0, 2, 6], "texture": "#3"},
"east": {"uv": [0, 0, 16, 6], "texture": "#3"},
"south": {"uv": [14, 0, 16, 6], "texture": "#3"},
"west": {"uv": [0, 0, 16, 6], "texture": "#3"},
"up": {"uv": [0, 0, 2, 16], "rotation": 180, "texture": "#particle"},
"down": {"uv": [14, 0, 16, 16], "texture": "#particle"}
}
},
{
"name": "Top",
"from": [2, 10, 14],
"to": [14, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 8]},
"rotation": {"angle": 0, "axis": "y", "origin": [10, 19, 12]},
"faces": {
"north": {"uv": [2, 0, 14, 6], "texture": "#3"},
"south": {"uv": [2, 0, 14, 6], "texture": "#3"},
"up": {"uv": [2, 0, 14, 2], "rotation": 180, "texture": "#particle"},
"down": {"uv": [2, 0, 14, 2], "texture": "#particle"}
"north": {"uv": [2, 1, 14, 7], "texture": "#1"},
"south": {"uv": [1, 0, 7, 3], "texture": "#0"},
"up": {"uv": [2, 14, 14, 16], "texture": "#1"},
"down": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#1"}
}
},
{
"name": "Top",
"from": [2, 10, 0],
"to": [14, 16, 2],
"rotation": {"angle": 0, "axis": "y", "origin": [6, 8, 8]},
"rotation": {"angle": 0, "axis": "y", "origin": [10, 19, -2]},
"faces": {
"north": {"uv": [2, 0, 14, 6], "texture": "#3"},
"south": {"uv": [2, 0, 14, 6], "texture": "#3"},
"up": {"uv": [2, 14, 14, 16], "rotation": 180, "texture": "#particle"},
"down": {"uv": [2, 14, 14, 16], "texture": "#particle"}
"north": {"uv": [1, 0, 7, 3], "texture": "#0"},
"south": {"uv": [2, 1, 14, 7], "texture": "#1"},
"up": {"uv": [2, 0, 14, 2], "texture": "#1"},
"down": {"uv": [2, 0, 14, 2], "rotation": 180, "texture": "#1"}
}
},
{
"name": "F4",
"from": [11, 14, 1.5],
"to": [14, 15, 14.5],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 8.5, 8]},
"from": [0, 10, 0],
"to": [2, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [-2, 19, -2]},
"faces": {
"up": {"uv": [6.5, 0, 8, 6.5], "rotation": 180, "texture": "#4"}
"north": {"uv": [7, 0, 8, 3], "texture": "#0"},
"east": {"uv": [0, 1, 16, 7], "texture": "#1"},
"south": {"uv": [0, 0, 1, 3], "texture": "#0"},
"west": {"uv": [0, 0, 8, 3], "texture": "#0"},
"up": {"uv": [0, 0, 2, 16], "texture": "#1"},
"down": {"uv": [0, 0, 2, 16], "texture": "#1"}
}
},
{
"name": "F5",
"from": [5, 14, 1.5],
"to": [8, 15, 14.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.5, 8]},
"from": [14, 10, 0],
"to": [16, 16, 16],
"rotation": {"angle": 0, "axis": "y", "origin": [12, 19, -2]},
"faces": {
"up": {"uv": [6.5, 0, 8, 6.5], "rotation": 180, "texture": "#4"}
"north": {"uv": [0, 0, 1, 3], "texture": "#0"},
"east": {"uv": [0, 0, 8, 3], "texture": "#0"},
"south": {"uv": [7, 0, 8, 3], "texture": "#0"},
"west": {"uv": [0, 1, 16, 7], "texture": "#1"},
"up": {"uv": [14, 0, 16, 16], "texture": "#1"},
"down": {"uv": [14, 0, 16, 16], "texture": "#1"}
}
},
{
"name": "F5",
"from": [8, 14, 1.5],
"to": [11, 15, 14.5],
"rotation": {"angle": 0, "axis": "y", "origin": [14, 8.5, 8]},
"from": [2, 6, 2],
"to": [14, 10, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [10, 15, 10]},
"faces": {
"up": {"uv": [6.5, 0, 8, 6.5], "rotation": 180, "texture": "#4"}
"north": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#3"},
"east": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#3"},
"south": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#3"},
"west": {"uv": [6, 0, 8, 6], "rotation": 90, "texture": "#3"},
"down": {"uv": [0, 0, 6, 6], "texture": "#3"}
}
},
{
"name": "F6",
"from": [2, 14, 1.5],
"to": [5, 15, 14.5],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8.5, 8]},
"from": [2, 11, 2],
"to": [14, 15, 14],
"rotation": {"angle": 0, "axis": "y", "origin": [10, 20, 10]},
"faces": {
"up": {"uv": [6.5, 0, 8, 6.5], "rotation": 180, "texture": "#4"}
"up": {"uv": [0, 8, 6, 14], "texture": "#3"}
}
},
{
"name": "BackExtension",
"from": [2, 2, 2],
"to": [14, 6, 14],
"from": [3, 2, 3],
"to": [13, 6, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [10, 11, 10]},
"faces": {
"north": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#2"},
"east": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#2"},
"south": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#2"},
"west": {"uv": [13, 10, 15, 16], "rotation": 270, "texture": "#2"},
"down": {"uv": [9, 0.5, 15, 6.5], "texture": "#2"}
}
},
{
"name": "MidExtension",
"from": [1, 6, 1],
"to": [15, 10, 15],
"faces": {
"north": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#2"},
"east": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#2"},
"south": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#2"},
"west": {"uv": [11, 9, 13, 16], "rotation": 90, "texture": "#2"},
"up": {"uv": [0, 9, 7, 16], "rotation": 180, "texture": "#2"},
"down": {"uv": [8.5, 0, 15.5, 7], "texture": "#2"}
}
},
{
"name": "Back",
"from": [3, -2, 3],
"to": [13, 2, 13],
"faces": {
"north": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"},
"east": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"},
"south": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"},
"west": {"uv": [9.5, 9, 14.5, 11], "texture": "#4"},
"down": {"uv": [9.5, 11, 14.5, 16], "texture": "#4"}
"north": {"uv": [9.5, 2, 14.5, 4], "texture": "#3"},
"east": {"uv": [9.5, 2, 14.5, 4], "texture": "#3"},
"south": {"uv": [9.5, 2, 14.5, 4], "texture": "#3"},
"west": {"uv": [9.5, 2, 14.5, 4], "texture": "#3"}
}
}
],
@ -165,44 +135,5 @@
"fixed": {
"scale": [0.5, 0.5, 0.5]
}
},
"groups": [
{
"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]
}
]
}
]
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 439 B

After

Width:  |  Height:  |  Size: 469 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 984 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 467 B

After

Width:  |  Height:  |  Size: 479 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 455 B

After

Width:  |  Height:  |  Size: 458 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 454 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 337 B

After

Width:  |  Height:  |  Size: 398 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 964 B

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 328 B

After

Width:  |  Height:  |  Size: 390 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 391 B

After

Width:  |  Height:  |  Size: 371 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 383 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 396 B

After

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 405 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 B

After

Width:  |  Height:  |  Size: 464 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 508 B

After

Width:  |  Height:  |  Size: 526 B