Is it November already

- Fixed chain conveyors culling too quickly
- Adjusted outline for logistically linked preview
- Address box suggestions no longer have duplicates and render above box when necessary
- Adjusted display cloth entity collision box
- Held clipboards can now copy entries from other in-world clipboards
- Fixed logistically linked items not placing the block when sneaking
- Postboxes and frogs now open visually when opened
- String can now be applied to cardboard blocks in-world
- Desk bells can now be spam-clicked
- Metal ladders no longer require a wall if another ladder block is above them
- Packaged spawn eggs may cause side effects when opened
This commit is contained in:
simibubi 2024-11-01 11:37:44 +01:00
parent b80dc29b4f
commit bc3347d752
92 changed files with 808 additions and 356 deletions

View file

@ -1,4 +1,4 @@
// 1.20.1 2024-10-30T19:35:41.3745103 Registrate Provider for create [Recipes, Advancements, Loot Tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)] // 1.20.1 2024-11-01T10:40:15.7618068 Registrate Provider for create [Recipes, Advancements, Loot Tables, Tags (blocks), Tags (items), Tags (fluids), Tags (entity_types), Blockstates, Item models, Lang (en_us/en_ud)]
60bbdf92d2ac9824ea6144955c74043a6005f79d assets/create/blockstates/acacia_window.json 60bbdf92d2ac9824ea6144955c74043a6005f79d assets/create/blockstates/acacia_window.json
6a67703c2697d81b7dc83e9d72a66f9c9ff08383 assets/create/blockstates/acacia_window_pane.json 6a67703c2697d81b7dc83e9d72a66f9c9ff08383 assets/create/blockstates/acacia_window_pane.json
c3ae87b62e81d8e9476eccd793bb1548d74c66a1 assets/create/blockstates/adjustable_chain_gearshift.json c3ae87b62e81d8e9476eccd793bb1548d74c66a1 assets/create/blockstates/adjustable_chain_gearshift.json
@ -27,7 +27,7 @@ a97910c7516e7cedec9e34eca51f1183f1e3e681 assets/create/blockstates/belt.json
2003c43151b731bf19cae58290c63bcb3785848a assets/create/blockstates/birch_window_pane.json 2003c43151b731bf19cae58290c63bcb3785848a assets/create/blockstates/birch_window_pane.json
396e4772b041319fc86b50deded74f514945f45d assets/create/blockstates/black_display_cloth.json 396e4772b041319fc86b50deded74f514945f45d assets/create/blockstates/black_display_cloth.json
c8b65faf51122eb411f5895e718869da9b260c2e assets/create/blockstates/black_nixie_tube.json c8b65faf51122eb411f5895e718869da9b260c2e assets/create/blockstates/black_nixie_tube.json
edcdce7ec6afbaa00952131df4b3f2c93c2c6919 assets/create/blockstates/black_postbox.json 2449479f4d81a6d16bbd1a469daa2d8f9ba2782e assets/create/blockstates/black_postbox.json
980ae9ba3f6d4e0faea8f3878985f9a9dadc0796 assets/create/blockstates/black_sail.json 980ae9ba3f6d4e0faea8f3878985f9a9dadc0796 assets/create/blockstates/black_sail.json
da3ad0225984a0dcbfb4ed800e307e45aff5aaa1 assets/create/blockstates/black_seat.json da3ad0225984a0dcbfb4ed800e307e45aff5aaa1 assets/create/blockstates/black_seat.json
0083f6aa3fda2c7ebb2e5f2a032e740cf3ae3846 assets/create/blockstates/black_toolbox.json 0083f6aa3fda2c7ebb2e5f2a032e740cf3ae3846 assets/create/blockstates/black_toolbox.json
@ -35,7 +35,7 @@ da3ad0225984a0dcbfb4ed800e307e45aff5aaa1 assets/create/blockstates/black_seat.js
06ecd28cd97f4e8200dc396858695cad57b871c8 assets/create/blockstates/blaze_burner.json 06ecd28cd97f4e8200dc396858695cad57b871c8 assets/create/blockstates/blaze_burner.json
88793493e0a7e0713b5ea9f3bbb88395d690b873 assets/create/blockstates/blue_display_cloth.json 88793493e0a7e0713b5ea9f3bbb88395d690b873 assets/create/blockstates/blue_display_cloth.json
37caf031254b5171a1fbfe9906f4bc65e8dbc909 assets/create/blockstates/blue_nixie_tube.json 37caf031254b5171a1fbfe9906f4bc65e8dbc909 assets/create/blockstates/blue_nixie_tube.json
54f6aae1d573b27979689301ef1c2ad4a3bf6e93 assets/create/blockstates/blue_postbox.json eec6f598fc517c5f6b36d13f3928364b16f0ae3d assets/create/blockstates/blue_postbox.json
d540f0f23e0d7c03f8e147cf3eebbaf7caec9f93 assets/create/blockstates/blue_sail.json d540f0f23e0d7c03f8e147cf3eebbaf7caec9f93 assets/create/blockstates/blue_sail.json
d2fdb432bb037de781260c789e905b223fab408c assets/create/blockstates/blue_seat.json d2fdb432bb037de781260c789e905b223fab408c assets/create/blockstates/blue_seat.json
f91092da79b69fece9583ccc15350612f439ee1b assets/create/blockstates/blue_toolbox.json f91092da79b69fece9583ccc15350612f439ee1b assets/create/blockstates/blue_toolbox.json
@ -56,7 +56,7 @@ a408005aae4c1caa7aaae5a0ddf9d1ad73cd0254 assets/create/blockstates/brass_funnel.
8ee948f9e87b82bb27aaecc522127fa1297b3d9d assets/create/blockstates/brass_tunnel.json 8ee948f9e87b82bb27aaecc522127fa1297b3d9d assets/create/blockstates/brass_tunnel.json
158c380605f071c89b9de21f2b2737449a72aac3 assets/create/blockstates/brown_display_cloth.json 158c380605f071c89b9de21f2b2737449a72aac3 assets/create/blockstates/brown_display_cloth.json
debf33346bf410216f21082e1e8d07aa6250b84c assets/create/blockstates/brown_nixie_tube.json debf33346bf410216f21082e1e8d07aa6250b84c assets/create/blockstates/brown_nixie_tube.json
c23d7f691bf532d6b27317c0063289a8bd747de2 assets/create/blockstates/brown_postbox.json ad42a677da8d381d6a8d909a602d73c1b9b3bbb7 assets/create/blockstates/brown_postbox.json
1334fc9e71d9f2a6117f448817263467a9c695de assets/create/blockstates/brown_sail.json 1334fc9e71d9f2a6117f448817263467a9c695de assets/create/blockstates/brown_sail.json
19524b2c0672632e63372f405a87dbea35f1d160 assets/create/blockstates/brown_seat.json 19524b2c0672632e63372f405a87dbea35f1d160 assets/create/blockstates/brown_seat.json
1ffc38bf682e84aad4cb300c573375eb0cdcc434 assets/create/blockstates/brown_toolbox.json 1ffc38bf682e84aad4cb300c573375eb0cdcc434 assets/create/blockstates/brown_toolbox.json
@ -219,7 +219,7 @@ c11f09df4a23e951bdf9a345515183f4fac7cde3 assets/create/blockstates/cut_veridium_
3aa6f5e613ff73952e3de00408051f92316e7f81 assets/create/blockstates/cut_veridium_wall.json 3aa6f5e613ff73952e3de00408051f92316e7f81 assets/create/blockstates/cut_veridium_wall.json
d6d25beb53a4393839eeb94472c8feb4c80bac6d assets/create/blockstates/cyan_display_cloth.json d6d25beb53a4393839eeb94472c8feb4c80bac6d assets/create/blockstates/cyan_display_cloth.json
bb627b2e78dba6833cf2d357033f253fc89aa1b8 assets/create/blockstates/cyan_nixie_tube.json bb627b2e78dba6833cf2d357033f253fc89aa1b8 assets/create/blockstates/cyan_nixie_tube.json
3406ab8baa7d9e9892c059c27b5ace92aadc2a80 assets/create/blockstates/cyan_postbox.json d7d497e5495cd7e8e74422f42caa27682fd06b2d assets/create/blockstates/cyan_postbox.json
f1061b8f9757374d6608fda07e301a2623e79f72 assets/create/blockstates/cyan_sail.json f1061b8f9757374d6608fda07e301a2623e79f72 assets/create/blockstates/cyan_sail.json
538c6d95da5cc460e99c91647dac61726a91479f assets/create/blockstates/cyan_seat.json 538c6d95da5cc460e99c91647dac61726a91479f assets/create/blockstates/cyan_seat.json
c4d84b719762aca46cdb8decddfeb97dcc50676c assets/create/blockstates/cyan_toolbox.json c4d84b719762aca46cdb8decddfeb97dcc50676c assets/create/blockstates/cyan_toolbox.json
@ -265,14 +265,14 @@ ff9f56912d8ac4069df90505232820f9c45f5e06 assets/create/blockstates/gantry_carria
e3f2a093c436cb65c5a7ac049a14cc4dadb22526 assets/create/blockstates/granite_pillar.json e3f2a093c436cb65c5a7ac049a14cc4dadb22526 assets/create/blockstates/granite_pillar.json
f4e76daf384e628b76890b72775302d65f651176 assets/create/blockstates/gray_display_cloth.json f4e76daf384e628b76890b72775302d65f651176 assets/create/blockstates/gray_display_cloth.json
921cf220c44a67195c90a30c4c296e65311738da assets/create/blockstates/gray_nixie_tube.json 921cf220c44a67195c90a30c4c296e65311738da assets/create/blockstates/gray_nixie_tube.json
f3153de05bb7658cd2d27ed6becea1b2ea687ae3 assets/create/blockstates/gray_postbox.json f09f7a6f184992b21610e244310e22a99a01e247 assets/create/blockstates/gray_postbox.json
30ba031a6b5a327d2a4caa12169676da573c2133 assets/create/blockstates/gray_sail.json 30ba031a6b5a327d2a4caa12169676da573c2133 assets/create/blockstates/gray_sail.json
f35a502c4a5e2703e7c6811b3d2ba16a9c47d4c8 assets/create/blockstates/gray_seat.json f35a502c4a5e2703e7c6811b3d2ba16a9c47d4c8 assets/create/blockstates/gray_seat.json
87457e0eddae80225dbb3145f2d120296ea1bfcd assets/create/blockstates/gray_toolbox.json 87457e0eddae80225dbb3145f2d120296ea1bfcd assets/create/blockstates/gray_toolbox.json
f18b87db39836eef20154b239d488eebb64b3455 assets/create/blockstates/gray_valve_handle.json f18b87db39836eef20154b239d488eebb64b3455 assets/create/blockstates/gray_valve_handle.json
7d441d117efce42a787c86355fc69dbd052b5db0 assets/create/blockstates/green_display_cloth.json 7d441d117efce42a787c86355fc69dbd052b5db0 assets/create/blockstates/green_display_cloth.json
0f0fe2bf83f763e04cd2d7a979beb547feac3191 assets/create/blockstates/green_nixie_tube.json 0f0fe2bf83f763e04cd2d7a979beb547feac3191 assets/create/blockstates/green_nixie_tube.json
4446fdbf784366888215251fb082ff9b52c2ea6d assets/create/blockstates/green_postbox.json 67aefcca975866a40717725d34770acd8f8908f6 assets/create/blockstates/green_postbox.json
0a2a5fbf2cf084e1be0426a224c291dc22a826fd assets/create/blockstates/green_sail.json 0a2a5fbf2cf084e1be0426a224c291dc22a826fd assets/create/blockstates/green_sail.json
b4aede1847d204ecdb7847559066d9d2ffb66903 assets/create/blockstates/green_seat.json b4aede1847d204ecdb7847559066d9d2ffb66903 assets/create/blockstates/green_seat.json
6f080890b3b30c46ba9ceb382c1171940bf4966f assets/create/blockstates/green_toolbox.json 6f080890b3b30c46ba9ceb382c1171940bf4966f assets/create/blockstates/green_toolbox.json
@ -311,14 +311,14 @@ ca124508c59130d21f23d7b1ef354d78bdd24dd4 assets/create/blockstates/layered_tuff.
fcf02725651ab5973fab1cfc09fdd68cb4b93579 assets/create/blockstates/lectern_controller.json fcf02725651ab5973fab1cfc09fdd68cb4b93579 assets/create/blockstates/lectern_controller.json
2c52c5dff36461c2af7dabce69452fcb3fc13640 assets/create/blockstates/light_blue_display_cloth.json 2c52c5dff36461c2af7dabce69452fcb3fc13640 assets/create/blockstates/light_blue_display_cloth.json
5d7e1b08b1ec7c7c11b70db11df09311fcd7cf45 assets/create/blockstates/light_blue_nixie_tube.json 5d7e1b08b1ec7c7c11b70db11df09311fcd7cf45 assets/create/blockstates/light_blue_nixie_tube.json
f77864045801c12e9308f9ae75fa7c78de15bb7e assets/create/blockstates/light_blue_postbox.json 117eb12e69c9c978474104a749d1071e4980af76 assets/create/blockstates/light_blue_postbox.json
f2354e8cb6086473ac97a5228b99706858dcad8a assets/create/blockstates/light_blue_sail.json f2354e8cb6086473ac97a5228b99706858dcad8a assets/create/blockstates/light_blue_sail.json
6b7045eaf9efe3a90f2d9a6785be6a5fd534b8e7 assets/create/blockstates/light_blue_seat.json 6b7045eaf9efe3a90f2d9a6785be6a5fd534b8e7 assets/create/blockstates/light_blue_seat.json
b7065e7871c3c7f1a0656c2f92f82544e606f2fb assets/create/blockstates/light_blue_toolbox.json b7065e7871c3c7f1a0656c2f92f82544e606f2fb assets/create/blockstates/light_blue_toolbox.json
549882a0f4de60906ca870a6197330f81d4e1afe assets/create/blockstates/light_blue_valve_handle.json 549882a0f4de60906ca870a6197330f81d4e1afe assets/create/blockstates/light_blue_valve_handle.json
643092c9caa8e586833d9e7fdab7cb059810fb0a assets/create/blockstates/light_gray_display_cloth.json 643092c9caa8e586833d9e7fdab7cb059810fb0a assets/create/blockstates/light_gray_display_cloth.json
fa5fb2be73c7c54b70e927b66adf3f4d64c5cb6b assets/create/blockstates/light_gray_nixie_tube.json fa5fb2be73c7c54b70e927b66adf3f4d64c5cb6b assets/create/blockstates/light_gray_nixie_tube.json
63aa0bfbba64796ec0096972585d15d5cbed7508 assets/create/blockstates/light_gray_postbox.json 36817126602128d1c463047c9f54a671ed71e04c assets/create/blockstates/light_gray_postbox.json
3d95c9c4442d1bdd660bae382c72c68134db86dd assets/create/blockstates/light_gray_sail.json 3d95c9c4442d1bdd660bae382c72c68134db86dd assets/create/blockstates/light_gray_sail.json
8ec5144da4a49dd5b497af07b0d4b88c9c0b6cc0 assets/create/blockstates/light_gray_seat.json 8ec5144da4a49dd5b497af07b0d4b88c9c0b6cc0 assets/create/blockstates/light_gray_seat.json
35b151db396069b146d223fbe46be5b0c3dda8a9 assets/create/blockstates/light_gray_toolbox.json 35b151db396069b146d223fbe46be5b0c3dda8a9 assets/create/blockstates/light_gray_toolbox.json
@ -327,7 +327,7 @@ a6f319c803c03e34bbf841ea52d82f0f7ec7a413 assets/create/blockstates/limestone.jso
7ff65e1c4c8e48a0b694cd17506a192e6a7e6e44 assets/create/blockstates/limestone_pillar.json 7ff65e1c4c8e48a0b694cd17506a192e6a7e6e44 assets/create/blockstates/limestone_pillar.json
34d900ed4c9922b82e39b2ee84d24eaffc7017ab assets/create/blockstates/lime_display_cloth.json 34d900ed4c9922b82e39b2ee84d24eaffc7017ab assets/create/blockstates/lime_display_cloth.json
7f20b548dd535942b2d6f41c39de7ad4fafe637e assets/create/blockstates/lime_nixie_tube.json 7f20b548dd535942b2d6f41c39de7ad4fafe637e assets/create/blockstates/lime_nixie_tube.json
b1b07cbe36064d2755d0f2a4af036ec0506e6995 assets/create/blockstates/lime_postbox.json 1478770b73bf498bd6fa35bd40a38027fd6fd4c8 assets/create/blockstates/lime_postbox.json
ad1ec304729fd6d336c0d4d0c27c9345af636695 assets/create/blockstates/lime_sail.json ad1ec304729fd6d336c0d4d0c27c9345af636695 assets/create/blockstates/lime_sail.json
b9934a558e1b495403dc2c71ffb43cce7d396013 assets/create/blockstates/lime_seat.json b9934a558e1b495403dc2c71ffb43cce7d396013 assets/create/blockstates/lime_seat.json
49a02f7fc16697ba1cf16cee7e45ab6bfd8b06ce assets/create/blockstates/lime_toolbox.json 49a02f7fc16697ba1cf16cee7e45ab6bfd8b06ce assets/create/blockstates/lime_toolbox.json
@ -336,7 +336,7 @@ ba181485f219d3ae23509a7edf28e25d9edb10f4 assets/create/blockstates/lime_valve_ha
e195e82e4d0c1fc20474535bc9068cbb77a5e175 assets/create/blockstates/lit_blaze_burner.json e195e82e4d0c1fc20474535bc9068cbb77a5e175 assets/create/blockstates/lit_blaze_burner.json
66775372786ece9b6300b335cf6acbdd2aa91147 assets/create/blockstates/magenta_display_cloth.json 66775372786ece9b6300b335cf6acbdd2aa91147 assets/create/blockstates/magenta_display_cloth.json
296186b196af94e1ab3f7e8a3254f6d31ae47a5c assets/create/blockstates/magenta_nixie_tube.json 296186b196af94e1ab3f7e8a3254f6d31ae47a5c assets/create/blockstates/magenta_nixie_tube.json
32cf7fc7e7b36b6ef873658946a40cf7c32d5da8 assets/create/blockstates/magenta_postbox.json f14f13217b4eb7d897e1ed55c790186cc0cecaf5 assets/create/blockstates/magenta_postbox.json
f150922cbed1c05fb3892d4ac91eb471234252e2 assets/create/blockstates/magenta_sail.json f150922cbed1c05fb3892d4ac91eb471234252e2 assets/create/blockstates/magenta_sail.json
bb1ab5c70647933400b3a99ef9d166ba5e3d4709 assets/create/blockstates/magenta_seat.json bb1ab5c70647933400b3a99ef9d166ba5e3d4709 assets/create/blockstates/magenta_seat.json
fcd226c7863262d98765c701538bf9e44d2b177e assets/create/blockstates/magenta_toolbox.json fcd226c7863262d98765c701538bf9e44d2b177e assets/create/blockstates/magenta_toolbox.json
@ -370,7 +370,7 @@ ba9c3ecfacbd398048440d247decffeaefc714b5 assets/create/blockstates/mysterious_cu
df91d0ca68934c1afd9858a8d1591dd4cb88df65 assets/create/blockstates/ochrum.json df91d0ca68934c1afd9858a8d1591dd4cb88df65 assets/create/blockstates/ochrum.json
09c9bee3d26edc4b87cb7a5042f125c439ee5956 assets/create/blockstates/ochrum_pillar.json 09c9bee3d26edc4b87cb7a5042f125c439ee5956 assets/create/blockstates/ochrum_pillar.json
0042b5a229d8b7bf89333697fb53ffdda32a153b assets/create/blockstates/orange_display_cloth.json 0042b5a229d8b7bf89333697fb53ffdda32a153b assets/create/blockstates/orange_display_cloth.json
42799faa0c59e6ed410c1ef42eceef25c323090f assets/create/blockstates/orange_postbox.json 8ff85f8171ff60ebf95f574d6c9f275ae6e98ee0 assets/create/blockstates/orange_postbox.json
af4c2c4861d1410e1b7371a5bf3fe09ed3ab0077 assets/create/blockstates/orange_sail.json af4c2c4861d1410e1b7371a5bf3fe09ed3ab0077 assets/create/blockstates/orange_sail.json
aab812cecf7d10d4e7587f4dead8a98238a15f41 assets/create/blockstates/orange_seat.json aab812cecf7d10d4e7587f4dead8a98238a15f41 assets/create/blockstates/orange_seat.json
2bc30ed9907230271b4e2d0786f106f3e1e25029 assets/create/blockstates/orange_toolbox.json 2bc30ed9907230271b4e2d0786f106f3e1e25029 assets/create/blockstates/orange_toolbox.json
@ -389,7 +389,7 @@ ef3af446b56c69e71a156d5998d9dc8e6d9ea4f5 assets/create/blockstates/packager.json
36742cc6ce052ead143366d31b11e828a525c1b8 assets/create/blockstates/peculiar_bell.json 36742cc6ce052ead143366d31b11e828a525c1b8 assets/create/blockstates/peculiar_bell.json
c4de02184f63ed2e7c98cfa5bb30f8c0da10a425 assets/create/blockstates/pink_display_cloth.json c4de02184f63ed2e7c98cfa5bb30f8c0da10a425 assets/create/blockstates/pink_display_cloth.json
53d102e706d53cb2c0dbc0bc11da828084a43519 assets/create/blockstates/pink_nixie_tube.json 53d102e706d53cb2c0dbc0bc11da828084a43519 assets/create/blockstates/pink_nixie_tube.json
8889da0684a2fd247a769cadbf94fd45e1c218f2 assets/create/blockstates/pink_postbox.json a238a92b88c32f513c405cde5bd1898d6fe930b7 assets/create/blockstates/pink_postbox.json
213da5c04a33ae8ae7c0a4dec9844bbb6d670e33 assets/create/blockstates/pink_sail.json 213da5c04a33ae8ae7c0a4dec9844bbb6d670e33 assets/create/blockstates/pink_sail.json
8d5c80d5dc561240dfe8d7f212ffc33ac4e0fcd8 assets/create/blockstates/pink_seat.json 8d5c80d5dc561240dfe8d7f212ffc33ac4e0fcd8 assets/create/blockstates/pink_seat.json
90bd26c7c6933f5ebbe17b0fe58f840e2924a0f5 assets/create/blockstates/pink_toolbox.json 90bd26c7c6933f5ebbe17b0fe58f840e2924a0f5 assets/create/blockstates/pink_toolbox.json
@ -463,7 +463,7 @@ df7af1e49c53ae99ac3f0b2fca5d948b8ea91938 assets/create/blockstates/pulley_magnet
65bfd8283749117663f7199204691758fd286e38 assets/create/blockstates/pulse_timer.json 65bfd8283749117663f7199204691758fd286e38 assets/create/blockstates/pulse_timer.json
285ff4a4289c3c62a7837639130033922127089d assets/create/blockstates/purple_display_cloth.json 285ff4a4289c3c62a7837639130033922127089d assets/create/blockstates/purple_display_cloth.json
b658654aa97e8dd2c897f432a601835a3f8aca10 assets/create/blockstates/purple_nixie_tube.json b658654aa97e8dd2c897f432a601835a3f8aca10 assets/create/blockstates/purple_nixie_tube.json
af5db46f49be3c13eeb9bcae1803cc6fb47a1c76 assets/create/blockstates/purple_postbox.json ee36eb7d8b7575f884a1d89c3ee1b4f3a5972a45 assets/create/blockstates/purple_postbox.json
f8f9802df9c0b4e39edeefc3b1abb38255d79801 assets/create/blockstates/purple_sail.json f8f9802df9c0b4e39edeefc3b1abb38255d79801 assets/create/blockstates/purple_sail.json
91b5ab66d7ec5235d278ee2bed6ddd88f39ce81d assets/create/blockstates/purple_seat.json 91b5ab66d7ec5235d278ee2bed6ddd88f39ce81d assets/create/blockstates/purple_seat.json
6aa467b3588359fdf5d7201f844193d5b70f20f7 assets/create/blockstates/purple_toolbox.json 6aa467b3588359fdf5d7201f844193d5b70f20f7 assets/create/blockstates/purple_toolbox.json
@ -476,7 +476,7 @@ ff205f032b36486753dddb1f2029ef8d53e9c86f assets/create/blockstates/redstone_link
9ae6198e13b456ef18582364644071a18cf9324e assets/create/blockstates/redstone_requester.json 9ae6198e13b456ef18582364644071a18cf9324e assets/create/blockstates/redstone_requester.json
d8446bc66d6d7da6d3533c961220d3180e4e4c0b assets/create/blockstates/red_display_cloth.json d8446bc66d6d7da6d3533c961220d3180e4e4c0b assets/create/blockstates/red_display_cloth.json
e3fd62e466e3e6e7bd6fc8661f764ba972a466fc assets/create/blockstates/red_nixie_tube.json e3fd62e466e3e6e7bd6fc8661f764ba972a466fc assets/create/blockstates/red_nixie_tube.json
d7535074a636f30247e7bd2f1a21685d3231d321 assets/create/blockstates/red_postbox.json e003cc60f957419c178d5b4ee215485ebeb3191f assets/create/blockstates/red_postbox.json
4c36b562da58ef2af57009da7cf2426059249228 assets/create/blockstates/red_sail.json 4c36b562da58ef2af57009da7cf2426059249228 assets/create/blockstates/red_sail.json
145f4e9ffaeff9be180e6c4e4989f2cf44cf0686 assets/create/blockstates/red_seat.json 145f4e9ffaeff9be180e6c4e4989f2cf44cf0686 assets/create/blockstates/red_seat.json
380f46b7cb72b13c0f16fd4a4287a1a33adeff41 assets/create/blockstates/red_toolbox.json 380f46b7cb72b13c0f16fd4a4287a1a33adeff41 assets/create/blockstates/red_toolbox.json
@ -622,7 +622,7 @@ da110f382368257e15431c77164aef82e014e3f8 assets/create/blockstates/weathered_cop
25ce64b7af5d244f194da91ccf964a9bf5762327 assets/create/blockstates/weighted_ejector.json 25ce64b7af5d244f194da91ccf964a9bf5762327 assets/create/blockstates/weighted_ejector.json
1c8b590923b1d78f5ae34ef0d8ba487884b696b3 assets/create/blockstates/white_display_cloth.json 1c8b590923b1d78f5ae34ef0d8ba487884b696b3 assets/create/blockstates/white_display_cloth.json
2974b34a8cfb0d4e8e010f8bd085584ea631d541 assets/create/blockstates/white_nixie_tube.json 2974b34a8cfb0d4e8e010f8bd085584ea631d541 assets/create/blockstates/white_nixie_tube.json
debbed52643d90ab054171f76622e54192be60ad assets/create/blockstates/white_postbox.json f128f18e0baa69c94ac9149960cfe810a6c9ecf9 assets/create/blockstates/white_postbox.json
f079469d186087d23f0d91b384040f777b0088b1 assets/create/blockstates/white_sail.json f079469d186087d23f0d91b384040f777b0088b1 assets/create/blockstates/white_sail.json
317a6463db64b66d215d25b65ab52fe7f26ba9f8 assets/create/blockstates/white_seat.json 317a6463db64b66d215d25b65ab52fe7f26ba9f8 assets/create/blockstates/white_seat.json
6cb8c82a429b54d6a87d02eec5cfd1fcd5365f1e assets/create/blockstates/white_toolbox.json 6cb8c82a429b54d6a87d02eec5cfd1fcd5365f1e assets/create/blockstates/white_toolbox.json
@ -631,15 +631,15 @@ ec2720e3f1bc84304d0c81cd23ff1e155b0c2f2c assets/create/blockstates/windmill_bear
d688e80dfbd5b17970814887c3698fc721981caa assets/create/blockstates/wooden_bracket.json d688e80dfbd5b17970814887c3698fc721981caa assets/create/blockstates/wooden_bracket.json
1ae2558e739350632a0c2f1a93aea5f832b54d62 assets/create/blockstates/yellow_display_cloth.json 1ae2558e739350632a0c2f1a93aea5f832b54d62 assets/create/blockstates/yellow_display_cloth.json
157942a838aa02909fb2238ad9ce77edc82f6142 assets/create/blockstates/yellow_nixie_tube.json 157942a838aa02909fb2238ad9ce77edc82f6142 assets/create/blockstates/yellow_nixie_tube.json
f99bf11ac6b2d8d2a315f354d7704a938241d95e assets/create/blockstates/yellow_postbox.json c11d93cd5a64e80c7ad2d11d88b656dd7705138b assets/create/blockstates/yellow_postbox.json
68b6e267e93b96dbc0596ea4a1cd26636aa0e04a assets/create/blockstates/yellow_sail.json 68b6e267e93b96dbc0596ea4a1cd26636aa0e04a assets/create/blockstates/yellow_sail.json
4face2dd50a30bda0b21742319e701e666d51f8c assets/create/blockstates/yellow_seat.json 4face2dd50a30bda0b21742319e701e666d51f8c assets/create/blockstates/yellow_seat.json
b0d8f08968763a5f74e5cd5644377a76a9f39753 assets/create/blockstates/yellow_toolbox.json b0d8f08968763a5f74e5cd5644377a76a9f39753 assets/create/blockstates/yellow_toolbox.json
fe8c497aacc641c2f01cec90bba9f19e59cc2ed2 assets/create/blockstates/yellow_valve_handle.json fe8c497aacc641c2f01cec90bba9f19e59cc2ed2 assets/create/blockstates/yellow_valve_handle.json
e819e93fdcbe9fd9c050a052d2718ff3b3539365 assets/create/blockstates/zinc_block.json e819e93fdcbe9fd9c050a052d2718ff3b3539365 assets/create/blockstates/zinc_block.json
64121dcb216381c83b4fe28aa361ea07c24c9ad0 assets/create/blockstates/zinc_ore.json 64121dcb216381c83b4fe28aa361ea07c24c9ad0 assets/create/blockstates/zinc_ore.json
c3de6ad9aa8e75977b93d59a36b2fa2e1e4e9445 assets/create/lang/en_ud.json d5bb760251e65801c7d8d4c7c99149dfc644ae26 assets/create/lang/en_ud.json
3cf9afee452951897c1ca572e5f7c3362f897db3 assets/create/lang/en_us.json 71537c153c046d7ac132c20ed36db50daf6e7284 assets/create/lang/en_us.json
a97e1060e00ae701a02e39cd4ef8054cf345fac4 assets/create/models/block/acacia_window.json a97e1060e00ae701a02e39cd4ef8054cf345fac4 assets/create/models/block/acacia_window.json
103e032c0b1a0a6a27c67da8c91179a564bd281c assets/create/models/block/acacia_window_pane_noside.json 103e032c0b1a0a6a27c67da8c91179a564bd281c assets/create/models/block/acacia_window_pane_noside.json
fb00b627abda76ad4fea867ca57dbfadd24fffa3 assets/create/models/block/acacia_window_pane_noside_alt.json fb00b627abda76ad4fea867ca57dbfadd24fffa3 assets/create/models/block/acacia_window_pane_noside_alt.json
@ -714,14 +714,16 @@ ee71b0992edc2496025c22806e8de3a3243882aa assets/create/models/block/birch_window
cb9d3a0dbac6a884d5ce0dc82085322f8c666707 assets/create/models/block/birch_window_pane_side_alt.json cb9d3a0dbac6a884d5ce0dc82085322f8c666707 assets/create/models/block/birch_window_pane_side_alt.json
b8f853e8289d735f9a2a8b43785fa0995ac99112 assets/create/models/block/black_display_cloth.json b8f853e8289d735f9a2a8b43785fa0995ac99112 assets/create/models/block/black_display_cloth.json
2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/black_nixie_tube.json 2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/black_nixie_tube.json
1fe4a9cbcae773f32c07f7cef42f52588ec1c1aa assets/create/models/block/black_postbox.json 1fe4a9cbcae773f32c07f7cef42f52588ec1c1aa assets/create/models/block/black_postbox_closed.json
3caec00f8aa36393cac8049815b3e8bad12d8dae assets/create/models/block/black_postbox_open.json
62c92a681b5a86a5415cc7a70263ffdc794cdd59 assets/create/models/block/black_sail.json 62c92a681b5a86a5415cc7a70263ffdc794cdd59 assets/create/models/block/black_sail.json
443ed49b053fdd7356cd56f0495e18f2570d57d9 assets/create/models/block/black_seat.json 443ed49b053fdd7356cd56f0495e18f2570d57d9 assets/create/models/block/black_seat.json
f48989d377de8e5067e807adf7e38da781e37ed9 assets/create/models/block/black_toolbox.json f48989d377de8e5067e807adf7e38da781e37ed9 assets/create/models/block/black_toolbox.json
8715787d72c3ef47c5651abcd819539bad6a96f7 assets/create/models/block/black_valve_handle.json 8715787d72c3ef47c5651abcd819539bad6a96f7 assets/create/models/block/black_valve_handle.json
e0eebf58af7ce6789dd3908f216e81e363fcdea6 assets/create/models/block/blue_display_cloth.json e0eebf58af7ce6789dd3908f216e81e363fcdea6 assets/create/models/block/blue_display_cloth.json
2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/blue_nixie_tube.json 2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/blue_nixie_tube.json
e9e9487a3440b3a6c1ac515f63385ee59e8fb773 assets/create/models/block/blue_postbox.json e9e9487a3440b3a6c1ac515f63385ee59e8fb773 assets/create/models/block/blue_postbox_closed.json
7e2df652bfc7fdc27da6a52b52fe732fa175c996 assets/create/models/block/blue_postbox_open.json
ddc740084aa5f387bee062bd4141ad8fadb56355 assets/create/models/block/blue_sail.json ddc740084aa5f387bee062bd4141ad8fadb56355 assets/create/models/block/blue_sail.json
96431b1f3a531ce89f876c9286b81838aec9b6d3 assets/create/models/block/blue_seat.json 96431b1f3a531ce89f876c9286b81838aec9b6d3 assets/create/models/block/blue_seat.json
89932aab163b14a21fffd4fab4b8b88a94163089 assets/create/models/block/blue_toolbox.json 89932aab163b14a21fffd4fab4b8b88a94163089 assets/create/models/block/blue_toolbox.json
@ -776,7 +778,8 @@ ec81e9c237ec98b30a3de22e12cb9720922478eb assets/create/models/block/brass_side.j
c697cace1f4097468ff34254c4ff6450d9d52f91 assets/create/models/block/brass_side_alt.json c697cace1f4097468ff34254c4ff6450d9d52f91 assets/create/models/block/brass_side_alt.json
5996b728460cf24e25890d977cdca49d2927465a assets/create/models/block/brown_display_cloth.json 5996b728460cf24e25890d977cdca49d2927465a assets/create/models/block/brown_display_cloth.json
2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/brown_nixie_tube.json 2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/brown_nixie_tube.json
b04c80852527a07e01c27686be678cbaf568e821 assets/create/models/block/brown_postbox.json b04c80852527a07e01c27686be678cbaf568e821 assets/create/models/block/brown_postbox_closed.json
19a2045ecedd3ef12cda7d69a0d7bc6a4133b7f1 assets/create/models/block/brown_postbox_open.json
50a054d1e0660d16e86cf7a520b9bf36e38401b6 assets/create/models/block/brown_sail.json 50a054d1e0660d16e86cf7a520b9bf36e38401b6 assets/create/models/block/brown_sail.json
0616de192825246e6036d1f69911170438a83b81 assets/create/models/block/brown_seat.json 0616de192825246e6036d1f69911170438a83b81 assets/create/models/block/brown_seat.json
4226a7c5f1bfb0a75457fb4dfd22448503110e5c assets/create/models/block/brown_toolbox.json 4226a7c5f1bfb0a75457fb4dfd22448503110e5c assets/create/models/block/brown_toolbox.json
@ -1110,7 +1113,8 @@ b2e847cee8c01791c15fcdd35787af33ebe46f0a assets/create/models/block/cut_veridium
5ab4db4245b852edf985fe72595f678eb7372801 assets/create/models/block/cut_veridium_wall_side_tall.json 5ab4db4245b852edf985fe72595f678eb7372801 assets/create/models/block/cut_veridium_wall_side_tall.json
983788579d7ec61b805d1057b81a18282af38365 assets/create/models/block/cyan_display_cloth.json 983788579d7ec61b805d1057b81a18282af38365 assets/create/models/block/cyan_display_cloth.json
2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/cyan_nixie_tube.json 2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/cyan_nixie_tube.json
0cbd0c6c909effa2f71e198655d51f2e483454aa assets/create/models/block/cyan_postbox.json 0cbd0c6c909effa2f71e198655d51f2e483454aa assets/create/models/block/cyan_postbox_closed.json
ccea6f3023879d84de4590a584f666598f58d6bc assets/create/models/block/cyan_postbox_open.json
27c9aff76b32e4de18d581e133fc23a8239ca412 assets/create/models/block/cyan_sail.json 27c9aff76b32e4de18d581e133fc23a8239ca412 assets/create/models/block/cyan_sail.json
01a324a92552076589e2aaaeca9d4da2d1e3b39d assets/create/models/block/cyan_seat.json 01a324a92552076589e2aaaeca9d4da2d1e3b39d assets/create/models/block/cyan_seat.json
663f431fe8a02e057980cf9bcfc566eb5adc876f assets/create/models/block/cyan_toolbox.json 663f431fe8a02e057980cf9bcfc566eb5adc876f assets/create/models/block/cyan_toolbox.json
@ -1193,14 +1197,16 @@ d0fa41de17f65693188f1868ace5fc2ac518739b assets/create/models/block/gantry_shaft
ee860a8bd95fda14a859d6632652ee2a95f06c19 assets/create/models/block/granite_pillar_horizontal.json ee860a8bd95fda14a859d6632652ee2a95f06c19 assets/create/models/block/granite_pillar_horizontal.json
ca01316f75239f08d7da81615779f8eb002de88f assets/create/models/block/gray_display_cloth.json ca01316f75239f08d7da81615779f8eb002de88f assets/create/models/block/gray_display_cloth.json
2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/gray_nixie_tube.json 2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/gray_nixie_tube.json
f2bbb067bc4e91a71303cc92939c4f4707cdc1ab assets/create/models/block/gray_postbox.json f2bbb067bc4e91a71303cc92939c4f4707cdc1ab assets/create/models/block/gray_postbox_closed.json
905fb4b54a39ca9bc1d6f48977bb3b158b17c2a1 assets/create/models/block/gray_postbox_open.json
97f382e9b435c81d1d8e0ed487a7fc16e6945958 assets/create/models/block/gray_sail.json 97f382e9b435c81d1d8e0ed487a7fc16e6945958 assets/create/models/block/gray_sail.json
58b51da5c80e4f43582452d97453c93145a516ad assets/create/models/block/gray_seat.json 58b51da5c80e4f43582452d97453c93145a516ad assets/create/models/block/gray_seat.json
cd3cff8e38d559dcb78df014556a78d5a538af43 assets/create/models/block/gray_toolbox.json cd3cff8e38d559dcb78df014556a78d5a538af43 assets/create/models/block/gray_toolbox.json
3ee19f46bdeb0ac7489dcd4d51f90ab01ad863c9 assets/create/models/block/gray_valve_handle.json 3ee19f46bdeb0ac7489dcd4d51f90ab01ad863c9 assets/create/models/block/gray_valve_handle.json
71fae019670515f2c5bf7bd1f7930d76b6ff3e15 assets/create/models/block/green_display_cloth.json 71fae019670515f2c5bf7bd1f7930d76b6ff3e15 assets/create/models/block/green_display_cloth.json
2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/green_nixie_tube.json 2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/green_nixie_tube.json
21fbacdc856fb1003f58bf2842fe418124f6b01d assets/create/models/block/green_postbox.json 21fbacdc856fb1003f58bf2842fe418124f6b01d assets/create/models/block/green_postbox_closed.json
703df2f5307d39f0f4e5b9a1f99b8c14fd819dd0 assets/create/models/block/green_postbox_open.json
26577589688ec1f39cae9f42704cb36cbc1c48ae assets/create/models/block/green_sail.json 26577589688ec1f39cae9f42704cb36cbc1c48ae assets/create/models/block/green_sail.json
ae51eaa500dd036fa27474a7392f381afb677dfd assets/create/models/block/green_seat.json ae51eaa500dd036fa27474a7392f381afb677dfd assets/create/models/block/green_seat.json
801d277b241332d5f4b49bdb00b911dcd01a7db2 assets/create/models/block/green_toolbox.json 801d277b241332d5f4b49bdb00b911dcd01a7db2 assets/create/models/block/green_toolbox.json
@ -1245,14 +1251,16 @@ b843a6e27c4f90e31108f9f3c1573e70fb3d0927 assets/create/models/block/layered_scor
336d1646294e018ea3de60b30a621a10ca7aa6d7 assets/create/models/block/layered_veridium.json 336d1646294e018ea3de60b30a621a10ca7aa6d7 assets/create/models/block/layered_veridium.json
f479a8a6964c52fc3b072ca3170d5b478f62842a assets/create/models/block/light_blue_display_cloth.json f479a8a6964c52fc3b072ca3170d5b478f62842a assets/create/models/block/light_blue_display_cloth.json
2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/light_blue_nixie_tube.json 2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/light_blue_nixie_tube.json
cf487c0be9444b7ac124d2ae33e6c545803e14b6 assets/create/models/block/light_blue_postbox.json cf487c0be9444b7ac124d2ae33e6c545803e14b6 assets/create/models/block/light_blue_postbox_closed.json
7497701edea1599fc51e3eaa0367007ca00bbe69 assets/create/models/block/light_blue_postbox_open.json
2e83d3aaa92640d6b3da2a2644f6a160f97b08e4 assets/create/models/block/light_blue_sail.json 2e83d3aaa92640d6b3da2a2644f6a160f97b08e4 assets/create/models/block/light_blue_sail.json
ba917560f40a4e46ef190649f18adad9962c5c02 assets/create/models/block/light_blue_seat.json ba917560f40a4e46ef190649f18adad9962c5c02 assets/create/models/block/light_blue_seat.json
c20616aa90feab3003cecb4a5be5466c0fc83072 assets/create/models/block/light_blue_toolbox.json c20616aa90feab3003cecb4a5be5466c0fc83072 assets/create/models/block/light_blue_toolbox.json
bcd3d28b8a062649301648ea5e2d0463f93d008d assets/create/models/block/light_blue_valve_handle.json bcd3d28b8a062649301648ea5e2d0463f93d008d assets/create/models/block/light_blue_valve_handle.json
8de84b9d3eb33403de699c5c5c4093e32b1685f9 assets/create/models/block/light_gray_display_cloth.json 8de84b9d3eb33403de699c5c5c4093e32b1685f9 assets/create/models/block/light_gray_display_cloth.json
2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/light_gray_nixie_tube.json 2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/light_gray_nixie_tube.json
1efabd28f0dc3db1c0e6bea2be62cac883fefd66 assets/create/models/block/light_gray_postbox.json 1efabd28f0dc3db1c0e6bea2be62cac883fefd66 assets/create/models/block/light_gray_postbox_closed.json
a42521eac2924269cb1f0e865bafe7dcd147d1cc assets/create/models/block/light_gray_postbox_open.json
09f284574b38ab57579e939bbb088b8d36e0b8f5 assets/create/models/block/light_gray_sail.json 09f284574b38ab57579e939bbb088b8d36e0b8f5 assets/create/models/block/light_gray_sail.json
d1813d0f548fcddb361df7cc3b5d97582842b10f assets/create/models/block/light_gray_seat.json d1813d0f548fcddb361df7cc3b5d97582842b10f assets/create/models/block/light_gray_seat.json
4ec5d701dd8b2d8c3dc44d05f527a3d737002cd4 assets/create/models/block/light_gray_toolbox.json 4ec5d701dd8b2d8c3dc44d05f527a3d737002cd4 assets/create/models/block/light_gray_toolbox.json
@ -1262,7 +1270,8 @@ adb8dbed70419e0310e7a20f3656bf325b348434 assets/create/models/block/light_gray_v
fb18280a2a708f60b00cc7c675804c219784871a assets/create/models/block/limestone_pillar_horizontal.json fb18280a2a708f60b00cc7c675804c219784871a assets/create/models/block/limestone_pillar_horizontal.json
023f2538cd860e3ade165390eab9e4fe32847402 assets/create/models/block/lime_display_cloth.json 023f2538cd860e3ade165390eab9e4fe32847402 assets/create/models/block/lime_display_cloth.json
2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/lime_nixie_tube.json 2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/lime_nixie_tube.json
952d292d4dc2158e6106c5079cfa1ddb81c7777e assets/create/models/block/lime_postbox.json 952d292d4dc2158e6106c5079cfa1ddb81c7777e assets/create/models/block/lime_postbox_closed.json
4357f5d9102d54c7fbe5325512a2cd42d94d6d42 assets/create/models/block/lime_postbox_open.json
5a95a72444f523cfba6e8c5adf8eacbb37e2d21e assets/create/models/block/lime_sail.json 5a95a72444f523cfba6e8c5adf8eacbb37e2d21e assets/create/models/block/lime_sail.json
09e7bf50cf88c449dbd9e77829cdb5afffb7d88d assets/create/models/block/lime_seat.json 09e7bf50cf88c449dbd9e77829cdb5afffb7d88d assets/create/models/block/lime_seat.json
b92822a01e4fbed2463b1bdf7dcc736023988e20 assets/create/models/block/lime_toolbox.json b92822a01e4fbed2463b1bdf7dcc736023988e20 assets/create/models/block/lime_toolbox.json
@ -1273,7 +1282,8 @@ a1a3804ddcb1db0a7b5c0693555f8eb326950dd0 assets/create/models/block/linear_chass
f885acc0ba705cfa9c65b62626ab4007f3b6e329 assets/create/models/block/linear_chassis_top_bottom.json f885acc0ba705cfa9c65b62626ab4007f3b6e329 assets/create/models/block/linear_chassis_top_bottom.json
e23d016fe71681e6b13fece5d14d95da5fb45fbb assets/create/models/block/magenta_display_cloth.json e23d016fe71681e6b13fece5d14d95da5fb45fbb assets/create/models/block/magenta_display_cloth.json
2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/magenta_nixie_tube.json 2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/magenta_nixie_tube.json
bfea3fd456f92391afc9f948ade90b16275e63de assets/create/models/block/magenta_postbox.json bfea3fd456f92391afc9f948ade90b16275e63de assets/create/models/block/magenta_postbox_closed.json
fe224c9e396eb51a6cc0b38175b621a56500fda7 assets/create/models/block/magenta_postbox_open.json
81122f26a12b7ab40fed6d31c97376f4dfffa111 assets/create/models/block/magenta_sail.json 81122f26a12b7ab40fed6d31c97376f4dfffa111 assets/create/models/block/magenta_sail.json
b5cd13b021400b3c37499ec4ef22e560c721ac54 assets/create/models/block/magenta_seat.json b5cd13b021400b3c37499ec4ef22e560c721ac54 assets/create/models/block/magenta_seat.json
d7b2b16ba2d6a0b2441aeaf7faa76f61fbdc35e7 assets/create/models/block/magenta_toolbox.json d7b2b16ba2d6a0b2441aeaf7faa76f61fbdc35e7 assets/create/models/block/magenta_toolbox.json
@ -1299,7 +1309,8 @@ d69effa0a811cb93fead8257bcaad4bbf0094002 assets/create/models/block/ochrum_natur
24669a4e93925940477fcfc0aca10ab9d87368e0 assets/create/models/block/ochrum_pillar.json 24669a4e93925940477fcfc0aca10ab9d87368e0 assets/create/models/block/ochrum_pillar.json
c8dd33a0b71dce37712788a61729de89574b117f assets/create/models/block/ochrum_pillar_horizontal.json c8dd33a0b71dce37712788a61729de89574b117f assets/create/models/block/ochrum_pillar_horizontal.json
6ba7beb0581d761ce06dad03cdd19e591e392546 assets/create/models/block/orange_display_cloth.json 6ba7beb0581d761ce06dad03cdd19e591e392546 assets/create/models/block/orange_display_cloth.json
dbd0cbfa1c6cfaddd7ac954379b4b1f3056730f2 assets/create/models/block/orange_postbox.json dbd0cbfa1c6cfaddd7ac954379b4b1f3056730f2 assets/create/models/block/orange_postbox_closed.json
88cda1f606e502cf0df9430b75a70fd3161fd6ba assets/create/models/block/orange_postbox_open.json
cb4cd4e4bfb0d105a09c56454abf4795b155d12b assets/create/models/block/orange_sail.json cb4cd4e4bfb0d105a09c56454abf4795b155d12b assets/create/models/block/orange_sail.json
6c4addc75fb03911fca3083f891b22f55209b8db assets/create/models/block/orange_seat.json 6c4addc75fb03911fca3083f891b22f55209b8db assets/create/models/block/orange_seat.json
f68eeb8cd828a0659fe8665373daf093ea65f0fc assets/create/models/block/orange_toolbox.json f68eeb8cd828a0659fe8665373daf093ea65f0fc assets/create/models/block/orange_toolbox.json
@ -1328,7 +1339,8 @@ b9c9d00b844ca2f217ae21cc502cd4d082fed2d5 assets/create/models/block/peculiar_bel
f7b09c243cfeda8bb38a29a917b9fbdafe47eece assets/create/models/block/peculiar_bell_single_wall.json f7b09c243cfeda8bb38a29a917b9fbdafe47eece assets/create/models/block/peculiar_bell_single_wall.json
266d126aa95d03fc274d838986fc1f53519f4e10 assets/create/models/block/pink_display_cloth.json 266d126aa95d03fc274d838986fc1f53519f4e10 assets/create/models/block/pink_display_cloth.json
2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/pink_nixie_tube.json 2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/pink_nixie_tube.json
084266ced8975953fa158fd9e7261d8f10b94db7 assets/create/models/block/pink_postbox.json 084266ced8975953fa158fd9e7261d8f10b94db7 assets/create/models/block/pink_postbox_closed.json
e99518b61a3c7a89570a8aa8c4cb45badfa8547a assets/create/models/block/pink_postbox_open.json
90113a1f53f0f8d9ce11ff14128eb860063f5ddc assets/create/models/block/pink_sail.json 90113a1f53f0f8d9ce11ff14128eb860063f5ddc assets/create/models/block/pink_sail.json
888dba067e751a55205dbd919db8e92ef2be604d assets/create/models/block/pink_seat.json 888dba067e751a55205dbd919db8e92ef2be604d assets/create/models/block/pink_seat.json
3cb69299c7787f88fb41c6397362aa7b607c0960 assets/create/models/block/pink_toolbox.json 3cb69299c7787f88fb41c6397362aa7b607c0960 assets/create/models/block/pink_toolbox.json
@ -1488,7 +1500,8 @@ ab3d7e10abcb53b835d6f5c406b7a777a942d6f7 assets/create/models/block/pulse_timer_
7b425d9db8d914b52b7faad2f792c020b678f84d assets/create/models/block/pulse_timer_powering.json 7b425d9db8d914b52b7faad2f792c020b678f84d assets/create/models/block/pulse_timer_powering.json
7688c890be93afa905bd869ef0bcdc603bce9a78 assets/create/models/block/purple_display_cloth.json 7688c890be93afa905bd869ef0bcdc603bce9a78 assets/create/models/block/purple_display_cloth.json
2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/purple_nixie_tube.json 2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/purple_nixie_tube.json
afdd265ee175c47ea6e4e44fb08d212e4cef5ee5 assets/create/models/block/purple_postbox.json afdd265ee175c47ea6e4e44fb08d212e4cef5ee5 assets/create/models/block/purple_postbox_closed.json
fbd874fd63b3d6f50592703dce6bf196f2d63732 assets/create/models/block/purple_postbox_open.json
356378a5839b0b400aa5e0a67740634113c09a38 assets/create/models/block/purple_sail.json 356378a5839b0b400aa5e0a67740634113c09a38 assets/create/models/block/purple_sail.json
bc8e473a5662b6180b00b85e5006241a283c9baa assets/create/models/block/purple_seat.json bc8e473a5662b6180b00b85e5006241a283c9baa assets/create/models/block/purple_seat.json
5e85ec98c165a0b5bfe25d391e96df9164372a3a assets/create/models/block/purple_toolbox.json 5e85ec98c165a0b5bfe25d391e96df9164372a3a assets/create/models/block/purple_toolbox.json
@ -1503,7 +1516,8 @@ ff65b89683fbb9326f625b9a68f954def5ed000d assets/create/models/block/radial_chass
be8042806b08990786ced1cf140c4942d7a6788b assets/create/models/block/raw_zinc_block.json be8042806b08990786ced1cf140c4942d7a6788b assets/create/models/block/raw_zinc_block.json
832899421073c18da17bf6919c97e2f3cf9a6b77 assets/create/models/block/red_display_cloth.json 832899421073c18da17bf6919c97e2f3cf9a6b77 assets/create/models/block/red_display_cloth.json
2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/red_nixie_tube.json 2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/red_nixie_tube.json
844614001c30ef34d3136a350c12018c5e9ab341 assets/create/models/block/red_postbox.json 844614001c30ef34d3136a350c12018c5e9ab341 assets/create/models/block/red_postbox_closed.json
d06791faedd062464a13972a3b64de86053aeac7 assets/create/models/block/red_postbox_open.json
b692deeb65f338212fb1073b725a122b7b1359d5 assets/create/models/block/red_sail.json b692deeb65f338212fb1073b725a122b7b1359d5 assets/create/models/block/red_sail.json
bf3f4ba33e1a61254073ecee3e753958f8debb35 assets/create/models/block/red_seat.json bf3f4ba33e1a61254073ecee3e753958f8debb35 assets/create/models/block/red_seat.json
2a13766aebac1a392ae7bf934bd81d9210c87a24 assets/create/models/block/red_toolbox.json 2a13766aebac1a392ae7bf934bd81d9210c87a24 assets/create/models/block/red_toolbox.json
@ -1762,14 +1776,16 @@ b658c1022587bd670b5acee267607719c1544332 assets/create/models/block/weathered_co
e7ae89577be9d26a071bf96cbd7ed80293902b63 assets/create/models/block/weathered_copper_tile_stairs_outer.json e7ae89577be9d26a071bf96cbd7ed80293902b63 assets/create/models/block/weathered_copper_tile_stairs_outer.json
15316edd1babb61b1458cf81feaf2c3e135122b6 assets/create/models/block/white_display_cloth.json 15316edd1babb61b1458cf81feaf2c3e135122b6 assets/create/models/block/white_display_cloth.json
2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/white_nixie_tube.json 2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/white_nixie_tube.json
998d838964c6c5bc2a1903b5098491abf5d819bc assets/create/models/block/white_postbox.json 998d838964c6c5bc2a1903b5098491abf5d819bc assets/create/models/block/white_postbox_closed.json
e89fe63260b94fc70e360eceb3d04b74242c248f assets/create/models/block/white_postbox_open.json
99f0628623a36ac1700a5876cec010ee6353162f assets/create/models/block/white_seat.json 99f0628623a36ac1700a5876cec010ee6353162f assets/create/models/block/white_seat.json
f252f8c68702a0c050797a2dc2a51c586408722d assets/create/models/block/white_toolbox.json f252f8c68702a0c050797a2dc2a51c586408722d assets/create/models/block/white_toolbox.json
c9e344a06ee8bca1bfddd70481198135cabafbce assets/create/models/block/white_valve_handle.json c9e344a06ee8bca1bfddd70481198135cabafbce assets/create/models/block/white_valve_handle.json
68d8eddfb724c73938862fb1a213a99c95814fdb assets/create/models/block/windmill_bearing.json 68d8eddfb724c73938862fb1a213a99c95814fdb assets/create/models/block/windmill_bearing.json
6c063bc2ef06940af3a1d3d0f1546030bdaef672 assets/create/models/block/yellow_display_cloth.json 6c063bc2ef06940af3a1d3d0f1546030bdaef672 assets/create/models/block/yellow_display_cloth.json
2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/yellow_nixie_tube.json 2f040681214af58a97e70d3a6e77a0fc2e02c624 assets/create/models/block/yellow_nixie_tube.json
9abbd0af47396b1cb18362b423f497ddb40eede4 assets/create/models/block/yellow_postbox.json 9abbd0af47396b1cb18362b423f497ddb40eede4 assets/create/models/block/yellow_postbox_closed.json
098b675ef5071a32bce387445da09067917852c7 assets/create/models/block/yellow_postbox_open.json
cf8477d6c7558ceba38416fae755567086a856a6 assets/create/models/block/yellow_sail.json cf8477d6c7558ceba38416fae755567086a856a6 assets/create/models/block/yellow_sail.json
07b68f0e4c617dfe3e935a1b9e8e020ab3131c0b assets/create/models/block/yellow_seat.json 07b68f0e4c617dfe3e935a1b9e8e020ab3131c0b assets/create/models/block/yellow_seat.json
21bb6e0b43984214c496e531e16dd60aeb619a42 assets/create/models/block/yellow_toolbox.json 21bb6e0b43984214c496e531e16dd60aeb619a42 assets/create/models/block/yellow_toolbox.json
@ -3185,7 +3201,7 @@ bb9d906a97810ed1461ed321ef8e4bee1dd104fb data/create/loot_tables/blocks/blue_sai
833fe6bc3020055dd0d6f46b324cbe27b248708d data/create/loot_tables/blocks/blue_seat.json 833fe6bc3020055dd0d6f46b324cbe27b248708d data/create/loot_tables/blocks/blue_seat.json
9d22716d9d846dc9587e327dfcdf18dd5955f826 data/create/loot_tables/blocks/blue_toolbox.json 9d22716d9d846dc9587e327dfcdf18dd5955f826 data/create/loot_tables/blocks/blue_toolbox.json
6d7ecb10e21b1e12c83c71736f14cbba3ccd7aaf data/create/loot_tables/blocks/blue_valve_handle.json 6d7ecb10e21b1e12c83c71736f14cbba3ccd7aaf data/create/loot_tables/blocks/blue_valve_handle.json
14f1cffb75761dc7e6223aa16a5d84da10dc2813 data/create/loot_tables/blocks/bound_cardboard_block.json 53e01f63aa47aa00575240ccdf867b4d6c392385 data/create/loot_tables/blocks/bound_cardboard_block.json
7d8b199f381003e5a74a8144976b65c93a09dbcb data/create/loot_tables/blocks/brass_bars.json 7d8b199f381003e5a74a8144976b65c93a09dbcb data/create/loot_tables/blocks/brass_bars.json
64a5869c6b3edeca06771f8ef64ef9521d83302a data/create/loot_tables/blocks/brass_belt_funnel.json 64a5869c6b3edeca06771f8ef64ef9521d83302a data/create/loot_tables/blocks/brass_belt_funnel.json
78ecee2c9baf6b0c78f6c7aa692e102a3f4dda74 data/create/loot_tables/blocks/brass_block.json 78ecee2c9baf6b0c78f6c7aa692e102a3f4dda74 data/create/loot_tables/blocks/brass_block.json

View file

@ -1,4 +1,4 @@
// 1.20.1 2024-10-30T15:58:08.6667432 Create's Standard Recipes // 1.20.1 2024-11-01T09:46:44.6761844 Create's Standard Recipes
a8cc4af26f6c7c45a9eef12e92af1452fe042454 data/create/advancements/recipes/combat/crafting/appliances/netherite_backtank.json a8cc4af26f6c7c45a9eef12e92af1452fe042454 data/create/advancements/recipes/combat/crafting/appliances/netherite_backtank.json
2c2639c7b307ee7c7a4e97e5efebf496788998ad data/create/advancements/recipes/combat/crafting/appliances/netherite_backtank_from_netherite.json 2c2639c7b307ee7c7a4e97e5efebf496788998ad data/create/advancements/recipes/combat/crafting/appliances/netherite_backtank_from_netherite.json
81dcf0cb1aa99e39bc7d1a386e07cad4cee7d8b9 data/create/advancements/recipes/combat/crafting/appliances/netherite_diving_boots.json 81dcf0cb1aa99e39bc7d1a386e07cad4cee7d8b9 data/create/advancements/recipes/combat/crafting/appliances/netherite_diving_boots.json
@ -454,7 +454,7 @@ ac524c110f66a7433208a888c5f3bb69e5e95743 data/create/recipes/crafting/materials/
e6bb68a1d2ed5a629c83f5a0eefb843bb890736d data/create/recipes/crafting/materials/andesite_alloy_block.json e6bb68a1d2ed5a629c83f5a0eefb843bb890736d data/create/recipes/crafting/materials/andesite_alloy_block.json
eebacb477bcce876622173289b06e1ad21424686 data/create/recipes/crafting/materials/andesite_alloy_from_block.json eebacb477bcce876622173289b06e1ad21424686 data/create/recipes/crafting/materials/andesite_alloy_from_block.json
5008707e622c0fa0b6df32da5da7230a4da574ca data/create/recipes/crafting/materials/andesite_alloy_from_zinc.json 5008707e622c0fa0b6df32da5da7230a4da574ca data/create/recipes/crafting/materials/andesite_alloy_from_zinc.json
455730ac3f06c0b2ef20992ec23edd36cd65194b data/create/recipes/crafting/materials/bound_cardboard_block.json ba8ec9cb0894132cd4e0d14322a388c061706a29 data/create/recipes/crafting/materials/bound_cardboard_block.json
f9f94e5082e7971e55b25bc00ba86c3579b492aa data/create/recipes/crafting/materials/brass_block_from_compacting.json f9f94e5082e7971e55b25bc00ba86c3579b492aa data/create/recipes/crafting/materials/brass_block_from_compacting.json
ecd8581ad4a04cc1217133363bd15d76129cb651 data/create/recipes/crafting/materials/brass_ingot_from_compacting.json ecd8581ad4a04cc1217133363bd15d76129cb651 data/create/recipes/crafting/materials/brass_ingot_from_compacting.json
fe2f3c0722aa0f6b41ad0f497b9742eb856c0dd0 data/create/recipes/crafting/materials/brass_ingot_from_decompacting.json fe2f3c0722aa0f6b41ad0f497b9742eb856c0dd0 data/create/recipes/crafting/materials/brass_ingot_from_decompacting.json

View file

@ -1,4 +1,4 @@
// 1.20.1 2024-10-18T15:46:50.4883378 Create's Processing Recipes // 1.20.1 2024-11-01T09:46:44.623326 Create's Processing Recipes
3c94326fb730f68c1e44fe1e2ef09c9db6ffd92b data/create/recipes/compacting/andesite_from_flint.json 3c94326fb730f68c1e44fe1e2ef09c9db6ffd92b data/create/recipes/compacting/andesite_from_flint.json
8d3d5b31f3601b9f681ff710e0545a483a1494c6 data/create/recipes/compacting/blaze_cake.json 8d3d5b31f3601b9f681ff710e0545a483a1494c6 data/create/recipes/compacting/blaze_cake.json
8bd7f4e3a686ab520b2d55594d2018d0e9a50c91 data/create/recipes/compacting/chocolate.json 8bd7f4e3a686ab520b2d55594d2018d0e9a50c91 data/create/recipes/compacting/chocolate.json
@ -752,6 +752,7 @@ a701fb82072d60320aa9b0280fa58c58296e8e42 data/create/recipes/haunting/soul_sand.
b18c81c17d395fb6e9291fc010576914000f069d data/create/recipes/haunting/warped_fungus.json b18c81c17d395fb6e9291fc010576914000f069d data/create/recipes/haunting/warped_fungus.json
409c94b597bc0e35cce51282428fc02b919bb55e data/create/recipes/item_application/andesite_casing_from_log.json 409c94b597bc0e35cce51282428fc02b919bb55e data/create/recipes/item_application/andesite_casing_from_log.json
4816a96aa0117b826ec01f9351c98eaec4e132fd data/create/recipes/item_application/andesite_casing_from_wood.json 4816a96aa0117b826ec01f9351c98eaec4e132fd data/create/recipes/item_application/andesite_casing_from_wood.json
59b5145feb9f433aaab98bb7e3f1070499768210 data/create/recipes/item_application/bound_cardboard_inworld.json
ac734bd72012ab3f0fd362fdcf237191874e1eae data/create/recipes/item_application/brass_casing_from_log.json ac734bd72012ab3f0fd362fdcf237191874e1eae data/create/recipes/item_application/brass_casing_from_log.json
df1d95a4e41fb01d0ac240f89dcf734e00d92853 data/create/recipes/item_application/brass_casing_from_wood.json df1d95a4e41fb01d0ac240f89dcf734e00d92853 data/create/recipes/item_application/brass_casing_from_wood.json
a9e164ba47552af7df82f011080d981420388bc6 data/create/recipes/item_application/copper_casing_from_log.json a9e164ba47552af7df82f011080d981420388bc6 data/create/recipes/item_application/copper_casing_from_log.json

View file

@ -1,33 +1,33 @@
{ {
"variants": { "variants": {
"facing=east,open=false": { "facing=east,open=false": {
"model": "create:block/black_postbox", "model": "create:block/black_postbox_closed",
"y": 90 "y": 90
}, },
"facing=east,open=true": { "facing=east,open=true": {
"model": "create:block/black_postbox", "model": "create:block/black_postbox_open",
"y": 90 "y": 90
}, },
"facing=north,open=false": { "facing=north,open=false": {
"model": "create:block/black_postbox" "model": "create:block/black_postbox_closed"
}, },
"facing=north,open=true": { "facing=north,open=true": {
"model": "create:block/black_postbox" "model": "create:block/black_postbox_open"
}, },
"facing=south,open=false": { "facing=south,open=false": {
"model": "create:block/black_postbox", "model": "create:block/black_postbox_closed",
"y": 180 "y": 180
}, },
"facing=south,open=true": { "facing=south,open=true": {
"model": "create:block/black_postbox", "model": "create:block/black_postbox_open",
"y": 180 "y": 180
}, },
"facing=west,open=false": { "facing=west,open=false": {
"model": "create:block/black_postbox", "model": "create:block/black_postbox_closed",
"y": 270 "y": 270
}, },
"facing=west,open=true": { "facing=west,open=true": {
"model": "create:block/black_postbox", "model": "create:block/black_postbox_open",
"y": 270 "y": 270
} }
} }

View file

@ -1,33 +1,33 @@
{ {
"variants": { "variants": {
"facing=east,open=false": { "facing=east,open=false": {
"model": "create:block/blue_postbox", "model": "create:block/blue_postbox_closed",
"y": 90 "y": 90
}, },
"facing=east,open=true": { "facing=east,open=true": {
"model": "create:block/blue_postbox", "model": "create:block/blue_postbox_open",
"y": 90 "y": 90
}, },
"facing=north,open=false": { "facing=north,open=false": {
"model": "create:block/blue_postbox" "model": "create:block/blue_postbox_closed"
}, },
"facing=north,open=true": { "facing=north,open=true": {
"model": "create:block/blue_postbox" "model": "create:block/blue_postbox_open"
}, },
"facing=south,open=false": { "facing=south,open=false": {
"model": "create:block/blue_postbox", "model": "create:block/blue_postbox_closed",
"y": 180 "y": 180
}, },
"facing=south,open=true": { "facing=south,open=true": {
"model": "create:block/blue_postbox", "model": "create:block/blue_postbox_open",
"y": 180 "y": 180
}, },
"facing=west,open=false": { "facing=west,open=false": {
"model": "create:block/blue_postbox", "model": "create:block/blue_postbox_closed",
"y": 270 "y": 270
}, },
"facing=west,open=true": { "facing=west,open=true": {
"model": "create:block/blue_postbox", "model": "create:block/blue_postbox_open",
"y": 270 "y": 270
} }
} }

View file

@ -1,33 +1,33 @@
{ {
"variants": { "variants": {
"facing=east,open=false": { "facing=east,open=false": {
"model": "create:block/brown_postbox", "model": "create:block/brown_postbox_closed",
"y": 90 "y": 90
}, },
"facing=east,open=true": { "facing=east,open=true": {
"model": "create:block/brown_postbox", "model": "create:block/brown_postbox_open",
"y": 90 "y": 90
}, },
"facing=north,open=false": { "facing=north,open=false": {
"model": "create:block/brown_postbox" "model": "create:block/brown_postbox_closed"
}, },
"facing=north,open=true": { "facing=north,open=true": {
"model": "create:block/brown_postbox" "model": "create:block/brown_postbox_open"
}, },
"facing=south,open=false": { "facing=south,open=false": {
"model": "create:block/brown_postbox", "model": "create:block/brown_postbox_closed",
"y": 180 "y": 180
}, },
"facing=south,open=true": { "facing=south,open=true": {
"model": "create:block/brown_postbox", "model": "create:block/brown_postbox_open",
"y": 180 "y": 180
}, },
"facing=west,open=false": { "facing=west,open=false": {
"model": "create:block/brown_postbox", "model": "create:block/brown_postbox_closed",
"y": 270 "y": 270
}, },
"facing=west,open=true": { "facing=west,open=true": {
"model": "create:block/brown_postbox", "model": "create:block/brown_postbox_open",
"y": 270 "y": 270
} }
} }

View file

@ -1,33 +1,33 @@
{ {
"variants": { "variants": {
"facing=east,open=false": { "facing=east,open=false": {
"model": "create:block/cyan_postbox", "model": "create:block/cyan_postbox_closed",
"y": 90 "y": 90
}, },
"facing=east,open=true": { "facing=east,open=true": {
"model": "create:block/cyan_postbox", "model": "create:block/cyan_postbox_open",
"y": 90 "y": 90
}, },
"facing=north,open=false": { "facing=north,open=false": {
"model": "create:block/cyan_postbox" "model": "create:block/cyan_postbox_closed"
}, },
"facing=north,open=true": { "facing=north,open=true": {
"model": "create:block/cyan_postbox" "model": "create:block/cyan_postbox_open"
}, },
"facing=south,open=false": { "facing=south,open=false": {
"model": "create:block/cyan_postbox", "model": "create:block/cyan_postbox_closed",
"y": 180 "y": 180
}, },
"facing=south,open=true": { "facing=south,open=true": {
"model": "create:block/cyan_postbox", "model": "create:block/cyan_postbox_open",
"y": 180 "y": 180
}, },
"facing=west,open=false": { "facing=west,open=false": {
"model": "create:block/cyan_postbox", "model": "create:block/cyan_postbox_closed",
"y": 270 "y": 270
}, },
"facing=west,open=true": { "facing=west,open=true": {
"model": "create:block/cyan_postbox", "model": "create:block/cyan_postbox_open",
"y": 270 "y": 270
} }
} }

View file

@ -1,33 +1,33 @@
{ {
"variants": { "variants": {
"facing=east,open=false": { "facing=east,open=false": {
"model": "create:block/gray_postbox", "model": "create:block/gray_postbox_closed",
"y": 90 "y": 90
}, },
"facing=east,open=true": { "facing=east,open=true": {
"model": "create:block/gray_postbox", "model": "create:block/gray_postbox_open",
"y": 90 "y": 90
}, },
"facing=north,open=false": { "facing=north,open=false": {
"model": "create:block/gray_postbox" "model": "create:block/gray_postbox_closed"
}, },
"facing=north,open=true": { "facing=north,open=true": {
"model": "create:block/gray_postbox" "model": "create:block/gray_postbox_open"
}, },
"facing=south,open=false": { "facing=south,open=false": {
"model": "create:block/gray_postbox", "model": "create:block/gray_postbox_closed",
"y": 180 "y": 180
}, },
"facing=south,open=true": { "facing=south,open=true": {
"model": "create:block/gray_postbox", "model": "create:block/gray_postbox_open",
"y": 180 "y": 180
}, },
"facing=west,open=false": { "facing=west,open=false": {
"model": "create:block/gray_postbox", "model": "create:block/gray_postbox_closed",
"y": 270 "y": 270
}, },
"facing=west,open=true": { "facing=west,open=true": {
"model": "create:block/gray_postbox", "model": "create:block/gray_postbox_open",
"y": 270 "y": 270
} }
} }

View file

@ -1,33 +1,33 @@
{ {
"variants": { "variants": {
"facing=east,open=false": { "facing=east,open=false": {
"model": "create:block/green_postbox", "model": "create:block/green_postbox_closed",
"y": 90 "y": 90
}, },
"facing=east,open=true": { "facing=east,open=true": {
"model": "create:block/green_postbox", "model": "create:block/green_postbox_open",
"y": 90 "y": 90
}, },
"facing=north,open=false": { "facing=north,open=false": {
"model": "create:block/green_postbox" "model": "create:block/green_postbox_closed"
}, },
"facing=north,open=true": { "facing=north,open=true": {
"model": "create:block/green_postbox" "model": "create:block/green_postbox_open"
}, },
"facing=south,open=false": { "facing=south,open=false": {
"model": "create:block/green_postbox", "model": "create:block/green_postbox_closed",
"y": 180 "y": 180
}, },
"facing=south,open=true": { "facing=south,open=true": {
"model": "create:block/green_postbox", "model": "create:block/green_postbox_open",
"y": 180 "y": 180
}, },
"facing=west,open=false": { "facing=west,open=false": {
"model": "create:block/green_postbox", "model": "create:block/green_postbox_closed",
"y": 270 "y": 270
}, },
"facing=west,open=true": { "facing=west,open=true": {
"model": "create:block/green_postbox", "model": "create:block/green_postbox_open",
"y": 270 "y": 270
} }
} }

View file

@ -1,33 +1,33 @@
{ {
"variants": { "variants": {
"facing=east,open=false": { "facing=east,open=false": {
"model": "create:block/light_blue_postbox", "model": "create:block/light_blue_postbox_closed",
"y": 90 "y": 90
}, },
"facing=east,open=true": { "facing=east,open=true": {
"model": "create:block/light_blue_postbox", "model": "create:block/light_blue_postbox_open",
"y": 90 "y": 90
}, },
"facing=north,open=false": { "facing=north,open=false": {
"model": "create:block/light_blue_postbox" "model": "create:block/light_blue_postbox_closed"
}, },
"facing=north,open=true": { "facing=north,open=true": {
"model": "create:block/light_blue_postbox" "model": "create:block/light_blue_postbox_open"
}, },
"facing=south,open=false": { "facing=south,open=false": {
"model": "create:block/light_blue_postbox", "model": "create:block/light_blue_postbox_closed",
"y": 180 "y": 180
}, },
"facing=south,open=true": { "facing=south,open=true": {
"model": "create:block/light_blue_postbox", "model": "create:block/light_blue_postbox_open",
"y": 180 "y": 180
}, },
"facing=west,open=false": { "facing=west,open=false": {
"model": "create:block/light_blue_postbox", "model": "create:block/light_blue_postbox_closed",
"y": 270 "y": 270
}, },
"facing=west,open=true": { "facing=west,open=true": {
"model": "create:block/light_blue_postbox", "model": "create:block/light_blue_postbox_open",
"y": 270 "y": 270
} }
} }

View file

@ -1,33 +1,33 @@
{ {
"variants": { "variants": {
"facing=east,open=false": { "facing=east,open=false": {
"model": "create:block/light_gray_postbox", "model": "create:block/light_gray_postbox_closed",
"y": 90 "y": 90
}, },
"facing=east,open=true": { "facing=east,open=true": {
"model": "create:block/light_gray_postbox", "model": "create:block/light_gray_postbox_open",
"y": 90 "y": 90
}, },
"facing=north,open=false": { "facing=north,open=false": {
"model": "create:block/light_gray_postbox" "model": "create:block/light_gray_postbox_closed"
}, },
"facing=north,open=true": { "facing=north,open=true": {
"model": "create:block/light_gray_postbox" "model": "create:block/light_gray_postbox_open"
}, },
"facing=south,open=false": { "facing=south,open=false": {
"model": "create:block/light_gray_postbox", "model": "create:block/light_gray_postbox_closed",
"y": 180 "y": 180
}, },
"facing=south,open=true": { "facing=south,open=true": {
"model": "create:block/light_gray_postbox", "model": "create:block/light_gray_postbox_open",
"y": 180 "y": 180
}, },
"facing=west,open=false": { "facing=west,open=false": {
"model": "create:block/light_gray_postbox", "model": "create:block/light_gray_postbox_closed",
"y": 270 "y": 270
}, },
"facing=west,open=true": { "facing=west,open=true": {
"model": "create:block/light_gray_postbox", "model": "create:block/light_gray_postbox_open",
"y": 270 "y": 270
} }
} }

View file

@ -1,33 +1,33 @@
{ {
"variants": { "variants": {
"facing=east,open=false": { "facing=east,open=false": {
"model": "create:block/lime_postbox", "model": "create:block/lime_postbox_closed",
"y": 90 "y": 90
}, },
"facing=east,open=true": { "facing=east,open=true": {
"model": "create:block/lime_postbox", "model": "create:block/lime_postbox_open",
"y": 90 "y": 90
}, },
"facing=north,open=false": { "facing=north,open=false": {
"model": "create:block/lime_postbox" "model": "create:block/lime_postbox_closed"
}, },
"facing=north,open=true": { "facing=north,open=true": {
"model": "create:block/lime_postbox" "model": "create:block/lime_postbox_open"
}, },
"facing=south,open=false": { "facing=south,open=false": {
"model": "create:block/lime_postbox", "model": "create:block/lime_postbox_closed",
"y": 180 "y": 180
}, },
"facing=south,open=true": { "facing=south,open=true": {
"model": "create:block/lime_postbox", "model": "create:block/lime_postbox_open",
"y": 180 "y": 180
}, },
"facing=west,open=false": { "facing=west,open=false": {
"model": "create:block/lime_postbox", "model": "create:block/lime_postbox_closed",
"y": 270 "y": 270
}, },
"facing=west,open=true": { "facing=west,open=true": {
"model": "create:block/lime_postbox", "model": "create:block/lime_postbox_open",
"y": 270 "y": 270
} }
} }

View file

@ -1,33 +1,33 @@
{ {
"variants": { "variants": {
"facing=east,open=false": { "facing=east,open=false": {
"model": "create:block/magenta_postbox", "model": "create:block/magenta_postbox_closed",
"y": 90 "y": 90
}, },
"facing=east,open=true": { "facing=east,open=true": {
"model": "create:block/magenta_postbox", "model": "create:block/magenta_postbox_open",
"y": 90 "y": 90
}, },
"facing=north,open=false": { "facing=north,open=false": {
"model": "create:block/magenta_postbox" "model": "create:block/magenta_postbox_closed"
}, },
"facing=north,open=true": { "facing=north,open=true": {
"model": "create:block/magenta_postbox" "model": "create:block/magenta_postbox_open"
}, },
"facing=south,open=false": { "facing=south,open=false": {
"model": "create:block/magenta_postbox", "model": "create:block/magenta_postbox_closed",
"y": 180 "y": 180
}, },
"facing=south,open=true": { "facing=south,open=true": {
"model": "create:block/magenta_postbox", "model": "create:block/magenta_postbox_open",
"y": 180 "y": 180
}, },
"facing=west,open=false": { "facing=west,open=false": {
"model": "create:block/magenta_postbox", "model": "create:block/magenta_postbox_closed",
"y": 270 "y": 270
}, },
"facing=west,open=true": { "facing=west,open=true": {
"model": "create:block/magenta_postbox", "model": "create:block/magenta_postbox_open",
"y": 270 "y": 270
} }
} }

View file

@ -1,33 +1,33 @@
{ {
"variants": { "variants": {
"facing=east,open=false": { "facing=east,open=false": {
"model": "create:block/orange_postbox", "model": "create:block/orange_postbox_closed",
"y": 90 "y": 90
}, },
"facing=east,open=true": { "facing=east,open=true": {
"model": "create:block/orange_postbox", "model": "create:block/orange_postbox_open",
"y": 90 "y": 90
}, },
"facing=north,open=false": { "facing=north,open=false": {
"model": "create:block/orange_postbox" "model": "create:block/orange_postbox_closed"
}, },
"facing=north,open=true": { "facing=north,open=true": {
"model": "create:block/orange_postbox" "model": "create:block/orange_postbox_open"
}, },
"facing=south,open=false": { "facing=south,open=false": {
"model": "create:block/orange_postbox", "model": "create:block/orange_postbox_closed",
"y": 180 "y": 180
}, },
"facing=south,open=true": { "facing=south,open=true": {
"model": "create:block/orange_postbox", "model": "create:block/orange_postbox_open",
"y": 180 "y": 180
}, },
"facing=west,open=false": { "facing=west,open=false": {
"model": "create:block/orange_postbox", "model": "create:block/orange_postbox_closed",
"y": 270 "y": 270
}, },
"facing=west,open=true": { "facing=west,open=true": {
"model": "create:block/orange_postbox", "model": "create:block/orange_postbox_open",
"y": 270 "y": 270
} }
} }

View file

@ -1,33 +1,33 @@
{ {
"variants": { "variants": {
"facing=east,open=false": { "facing=east,open=false": {
"model": "create:block/pink_postbox", "model": "create:block/pink_postbox_closed",
"y": 90 "y": 90
}, },
"facing=east,open=true": { "facing=east,open=true": {
"model": "create:block/pink_postbox", "model": "create:block/pink_postbox_open",
"y": 90 "y": 90
}, },
"facing=north,open=false": { "facing=north,open=false": {
"model": "create:block/pink_postbox" "model": "create:block/pink_postbox_closed"
}, },
"facing=north,open=true": { "facing=north,open=true": {
"model": "create:block/pink_postbox" "model": "create:block/pink_postbox_open"
}, },
"facing=south,open=false": { "facing=south,open=false": {
"model": "create:block/pink_postbox", "model": "create:block/pink_postbox_closed",
"y": 180 "y": 180
}, },
"facing=south,open=true": { "facing=south,open=true": {
"model": "create:block/pink_postbox", "model": "create:block/pink_postbox_open",
"y": 180 "y": 180
}, },
"facing=west,open=false": { "facing=west,open=false": {
"model": "create:block/pink_postbox", "model": "create:block/pink_postbox_closed",
"y": 270 "y": 270
}, },
"facing=west,open=true": { "facing=west,open=true": {
"model": "create:block/pink_postbox", "model": "create:block/pink_postbox_open",
"y": 270 "y": 270
} }
} }

View file

@ -1,33 +1,33 @@
{ {
"variants": { "variants": {
"facing=east,open=false": { "facing=east,open=false": {
"model": "create:block/purple_postbox", "model": "create:block/purple_postbox_closed",
"y": 90 "y": 90
}, },
"facing=east,open=true": { "facing=east,open=true": {
"model": "create:block/purple_postbox", "model": "create:block/purple_postbox_open",
"y": 90 "y": 90
}, },
"facing=north,open=false": { "facing=north,open=false": {
"model": "create:block/purple_postbox" "model": "create:block/purple_postbox_closed"
}, },
"facing=north,open=true": { "facing=north,open=true": {
"model": "create:block/purple_postbox" "model": "create:block/purple_postbox_open"
}, },
"facing=south,open=false": { "facing=south,open=false": {
"model": "create:block/purple_postbox", "model": "create:block/purple_postbox_closed",
"y": 180 "y": 180
}, },
"facing=south,open=true": { "facing=south,open=true": {
"model": "create:block/purple_postbox", "model": "create:block/purple_postbox_open",
"y": 180 "y": 180
}, },
"facing=west,open=false": { "facing=west,open=false": {
"model": "create:block/purple_postbox", "model": "create:block/purple_postbox_closed",
"y": 270 "y": 270
}, },
"facing=west,open=true": { "facing=west,open=true": {
"model": "create:block/purple_postbox", "model": "create:block/purple_postbox_open",
"y": 270 "y": 270
} }
} }

View file

@ -1,33 +1,33 @@
{ {
"variants": { "variants": {
"facing=east,open=false": { "facing=east,open=false": {
"model": "create:block/red_postbox", "model": "create:block/red_postbox_closed",
"y": 90 "y": 90
}, },
"facing=east,open=true": { "facing=east,open=true": {
"model": "create:block/red_postbox", "model": "create:block/red_postbox_open",
"y": 90 "y": 90
}, },
"facing=north,open=false": { "facing=north,open=false": {
"model": "create:block/red_postbox" "model": "create:block/red_postbox_closed"
}, },
"facing=north,open=true": { "facing=north,open=true": {
"model": "create:block/red_postbox" "model": "create:block/red_postbox_open"
}, },
"facing=south,open=false": { "facing=south,open=false": {
"model": "create:block/red_postbox", "model": "create:block/red_postbox_closed",
"y": 180 "y": 180
}, },
"facing=south,open=true": { "facing=south,open=true": {
"model": "create:block/red_postbox", "model": "create:block/red_postbox_open",
"y": 180 "y": 180
}, },
"facing=west,open=false": { "facing=west,open=false": {
"model": "create:block/red_postbox", "model": "create:block/red_postbox_closed",
"y": 270 "y": 270
}, },
"facing=west,open=true": { "facing=west,open=true": {
"model": "create:block/red_postbox", "model": "create:block/red_postbox_open",
"y": 270 "y": 270
} }
} }

View file

@ -1,33 +1,33 @@
{ {
"variants": { "variants": {
"facing=east,open=false": { "facing=east,open=false": {
"model": "create:block/white_postbox", "model": "create:block/white_postbox_closed",
"y": 90 "y": 90
}, },
"facing=east,open=true": { "facing=east,open=true": {
"model": "create:block/white_postbox", "model": "create:block/white_postbox_open",
"y": 90 "y": 90
}, },
"facing=north,open=false": { "facing=north,open=false": {
"model": "create:block/white_postbox" "model": "create:block/white_postbox_closed"
}, },
"facing=north,open=true": { "facing=north,open=true": {
"model": "create:block/white_postbox" "model": "create:block/white_postbox_open"
}, },
"facing=south,open=false": { "facing=south,open=false": {
"model": "create:block/white_postbox", "model": "create:block/white_postbox_closed",
"y": 180 "y": 180
}, },
"facing=south,open=true": { "facing=south,open=true": {
"model": "create:block/white_postbox", "model": "create:block/white_postbox_open",
"y": 180 "y": 180
}, },
"facing=west,open=false": { "facing=west,open=false": {
"model": "create:block/white_postbox", "model": "create:block/white_postbox_closed",
"y": 270 "y": 270
}, },
"facing=west,open=true": { "facing=west,open=true": {
"model": "create:block/white_postbox", "model": "create:block/white_postbox_open",
"y": 270 "y": 270
} }
} }

View file

@ -1,33 +1,33 @@
{ {
"variants": { "variants": {
"facing=east,open=false": { "facing=east,open=false": {
"model": "create:block/yellow_postbox", "model": "create:block/yellow_postbox_closed",
"y": 90 "y": 90
}, },
"facing=east,open=true": { "facing=east,open=true": {
"model": "create:block/yellow_postbox", "model": "create:block/yellow_postbox_open",
"y": 90 "y": 90
}, },
"facing=north,open=false": { "facing=north,open=false": {
"model": "create:block/yellow_postbox" "model": "create:block/yellow_postbox_closed"
}, },
"facing=north,open=true": { "facing=north,open=true": {
"model": "create:block/yellow_postbox" "model": "create:block/yellow_postbox_open"
}, },
"facing=south,open=false": { "facing=south,open=false": {
"model": "create:block/yellow_postbox", "model": "create:block/yellow_postbox_closed",
"y": 180 "y": 180
}, },
"facing=south,open=true": { "facing=south,open=true": {
"model": "create:block/yellow_postbox", "model": "create:block/yellow_postbox_open",
"y": 180 "y": 180
}, },
"facing=west,open=false": { "facing=west,open=false": {
"model": "create:block/yellow_postbox", "model": "create:block/yellow_postbox_closed",
"y": 270 "y": 270
}, },
"facing=west,open=true": { "facing=west,open=true": {
"model": "create:block/yellow_postbox", "model": "create:block/yellow_postbox_open",
"y": 270 "y": 270
} }
} }

View file

@ -919,6 +919,8 @@
"create.chain_conveyor.valid_connection": "✔ ʇɔǝuuoƆ uɐƆ", "create.chain_conveyor.valid_connection": "✔ ʇɔǝuuoƆ uɐƆ",
"create.clipboard.actions": "suoıʇɔⱯ pɹɐoqdıןƆ", "create.clipboard.actions": "suoıʇɔⱯ pɹɐoqdıןƆ",
"create.clipboard.copied_from": "%1$s ɯoɹɟ sbuıʇʇǝs buıʎdoƆ", "create.clipboard.copied_from": "%1$s ɯoɹɟ sbuıʇʇǝs buıʎdoƆ",
"create.clipboard.copied_from_clipboard": "pɹɐoqdıןƆ ɯoɹɟ sǝıɹʇuǝ pǝppⱯ",
"create.clipboard.copy_other_clipboard": "pɹɐoqdıןƆ sıɥʇ ɯoɹɟ sǝıɹʇuǝ ʎdoƆ oʇ %1$s",
"create.clipboard.pasted_to": "%1$s oʇ sbuıʇʇǝs pǝıןddⱯ", "create.clipboard.pasted_to": "%1$s oʇ sbuıʇʇǝs pǝıןddⱯ",
"create.clipboard.to_copy": "sbuıʇʇǝs ʎdoƆ oʇ %1$s", "create.clipboard.to_copy": "sbuıʇʇǝs ʎdoƆ oʇ %1$s",
"create.clipboard.to_paste": "sbuıʇʇǝs ǝʇsɐԀ oʇ %1$s", "create.clipboard.to_paste": "sbuıʇʇǝs ǝʇsɐԀ oʇ %1$s",

View file

@ -919,6 +919,8 @@
"create.chain_conveyor.valid_connection": "Can Connect ✔", "create.chain_conveyor.valid_connection": "Can Connect ✔",
"create.clipboard.actions": "Clipboard Actions", "create.clipboard.actions": "Clipboard Actions",
"create.clipboard.copied_from": "Copying settings from %1$s", "create.clipboard.copied_from": "Copying settings from %1$s",
"create.clipboard.copied_from_clipboard": "Added entries from Clipboard",
"create.clipboard.copy_other_clipboard": "%1$s to Copy entries from this Clipboard",
"create.clipboard.pasted_to": "Applied settings to %1$s", "create.clipboard.pasted_to": "Applied settings to %1$s",
"create.clipboard.to_copy": "%1$s to Copy settings", "create.clipboard.to_copy": "%1$s to Copy settings",
"create.clipboard.to_paste": "%1$s to Paste settings", "create.clipboard.to_paste": "%1$s to Paste settings",

View file

@ -0,0 +1,7 @@
{
"parent": "create:block/package_postbox/block_open",
"textures": {
"0": "create:block/post_box/post_box_black",
"1": "create:block/post_box/post_box_black_open"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "create:block/package_postbox/block_open",
"textures": {
"0": "create:block/post_box/post_box_blue",
"1": "create:block/post_box/post_box_blue_open"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "create:block/package_postbox/block_open",
"textures": {
"0": "create:block/post_box/post_box_brown",
"1": "create:block/post_box/post_box_brown_open"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "create:block/package_postbox/block_open",
"textures": {
"0": "create:block/post_box/post_box_cyan",
"1": "create:block/post_box/post_box_cyan_open"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "create:block/package_postbox/block_open",
"textures": {
"0": "create:block/post_box/post_box_gray",
"1": "create:block/post_box/post_box_gray_open"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "create:block/package_postbox/block_open",
"textures": {
"0": "create:block/post_box/post_box_green",
"1": "create:block/post_box/post_box_green_open"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "create:block/package_postbox/block_open",
"textures": {
"0": "create:block/post_box/post_box_light_blue",
"1": "create:block/post_box/post_box_light_blue_open"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "create:block/package_postbox/block_open",
"textures": {
"0": "create:block/post_box/post_box_light_gray",
"1": "create:block/post_box/post_box_light_gray_open"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "create:block/package_postbox/block_open",
"textures": {
"0": "create:block/post_box/post_box_lime",
"1": "create:block/post_box/post_box_lime_open"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "create:block/package_postbox/block_open",
"textures": {
"0": "create:block/post_box/post_box_magenta",
"1": "create:block/post_box/post_box_magenta_open"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "create:block/package_postbox/block_open",
"textures": {
"0": "create:block/post_box/post_box_orange",
"1": "create:block/post_box/post_box_orange_open"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "create:block/package_postbox/block_open",
"textures": {
"0": "create:block/post_box/post_box_pink",
"1": "create:block/post_box/post_box_pink_open"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "create:block/package_postbox/block_open",
"textures": {
"0": "create:block/post_box/post_box_purple",
"1": "create:block/post_box/post_box_purple_open"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "create:block/package_postbox/block_open",
"textures": {
"0": "create:block/post_box/post_box_red",
"1": "create:block/post_box/post_box_red_open"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "create:block/package_postbox/block_open",
"textures": {
"0": "create:block/post_box/post_box_white",
"1": "create:block/post_box/post_box_white_open"
}
}

View file

@ -0,0 +1,7 @@
{
"parent": "create:block/package_postbox/block_open",
"textures": {
"0": "create:block/post_box/post_box_yellow",
"1": "create:block/post_box/post_box_yellow_open"
}
}

View file

@ -11,7 +11,22 @@
"entries": [ "entries": [
{ {
"type": "minecraft:item", "type": "minecraft:item",
"name": "create:bound_cardboard_block" "name": "minecraft:string"
}
],
"rolls": 1.0
},
{
"bonus_rolls": 0.0,
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
],
"entries": [
{
"type": "minecraft:item",
"name": "create:cardboard_block"
} }
], ],
"rolls": 1.0 "rolls": 1.0

View file

@ -1,22 +1,15 @@
{ {
"type": "minecraft:crafting_shaped", "type": "minecraft:crafting_shapeless",
"category": "misc", "category": "misc",
"key": { "ingredients": [
"C": { {
"item": "create:cardboard_block" "item": "create:cardboard_block"
}, },
"S": { {
"tag": "forge:string" "item": "minecraft:string"
} }
},
"pattern": [
"CCC",
"CSC",
"CCC"
], ],
"result": { "result": {
"count": 8,
"item": "create:bound_cardboard_block" "item": "create:bound_cardboard_block"
}, }
"show_notification": true
} }

View file

@ -0,0 +1,16 @@
{
"type": "create:item_application",
"ingredients": [
{
"item": "create:cardboard_block"
},
{
"tag": "forge:string"
}
],
"results": [
{
"item": "create:bound_cardboard_block"
}
]
}

View file

@ -299,6 +299,7 @@ import net.minecraft.sounds.SoundEvents;
import net.minecraft.tags.BlockTags; import net.minecraft.tags.BlockTags;
import net.minecraft.tags.ItemTags; import net.minecraft.tags.ItemTags;
import net.minecraft.world.item.DyeColor; import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.Rarity; import net.minecraft.world.item.Rarity;
import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
@ -1766,12 +1767,14 @@ public class AllBlocks {
.properties(p -> p.mapColor(colour)) .properties(p -> p.mapColor(colour))
.transform(axeOnly()) .transform(axeOnly())
.blockstate((c, p) -> { .blockstate((c, p) -> {
p.horizontalBlock(c.get(), s -> p.models() p.horizontalBlock(c.get(), s -> {
.withExistingParent(colourName + "_postbox", String suffix = s.getValue(PostboxBlock.OPEN) ? "open" : "closed";
p.modLoc("block/package_postbox/block_" + (s.getValue(PostboxBlock.OPEN) ? "open" : "closed"))) return p.models()
.texture("0", p.modLoc("block/post_box/post_box_" + colourName)) .withExistingParent(colourName + "_postbox_" + suffix,
.texture("1", p.modLoc("block/post_box/post_box_" + colourName p.modLoc("block/package_postbox/block_" + suffix))
+ (s.getValue(PostboxBlock.OPEN) ? "_open" : "_closed")))); .texture("0", p.modLoc("block/post_box/post_box_" + colourName))
.texture("1", p.modLoc("block/post_box/post_box_" + colourName + "_" + suffix));
});
}) })
.tag(AllBlockTags.POSTBOXES.tag) .tag(AllBlockTags.POSTBOXES.tag)
.item(PackagePortItem::new) .item(PackagePortItem::new)
@ -2549,6 +2552,13 @@ public class AllBlocks {
.ignitedByLava()) .ignitedByLava())
.transform(axeOnly()) .transform(axeOnly())
.blockstate(BlockStateGen.horizontalAxisBlockProvider(false)) .blockstate(BlockStateGen.horizontalAxisBlockProvider(false))
.loot((r, b) -> r.add(b, LootTable.lootTable()
.withPool(r.applyExplosionCondition(b, LootPool.lootPool()
.setRolls(ConstantValue.exactly(1.0F))
.add(LootItem.lootTableItem(Items.STRING))))
.withPool(r.applyExplosionCondition(b, LootPool.lootPool()
.setRolls(ConstantValue.exactly(1.0F))
.add(LootItem.lootTableItem(AllBlocks.CARDBOARD_BLOCK.asItem()))))))
.simpleItem() .simpleItem()
.lang("Bound block of Cardboard") .lang("Bound block of Cardboard")
.register(); .register();

View file

@ -1,30 +1,38 @@
package com.simibubi.create.content.decoration; package com.simibubi.create.content.decoration;
import java.util.function.Predicate;
import com.simibubi.create.AllShapes;
import com.simibubi.create.content.equipment.extendoGrip.ExtendoGripItem; import com.simibubi.create.content.equipment.extendoGrip.ExtendoGripItem;
import com.simibubi.create.content.equipment.wrench.IWrenchable; import com.simibubi.create.content.equipment.wrench.IWrenchable;
import com.simibubi.create.infrastructure.config.AllConfigs; import com.simibubi.create.infrastructure.config.AllConfigs;
import net.createmod.catnip.utility.placement.IPlacementHelper; import net.createmod.catnip.utility.placement.IPlacementHelper;
import net.createmod.catnip.utility.placement.PlacementHelpers; import net.createmod.catnip.utility.placement.PlacementHelpers;
import net.createmod.catnip.utility.placement.PlacementOffset; import net.createmod.catnip.utility.placement.PlacementOffset;
import net.minecraft.MethodsReturnNonnullByDefault; import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.Direction.Axis;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.ai.attributes.AttributeInstance;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.LevelAccessor;
import net.minecraft.world.level.LevelReader;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.LadderBlock; import net.minecraft.world.level.block.LadderBlock;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.shapes.VoxelShape;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.ForgeMod; import net.minecraftforge.common.ForgeMod;
import java.util.function.Predicate;
public class MetalLadderBlock extends LadderBlock implements IWrenchable { public class MetalLadderBlock extends LadderBlock implements IWrenchable {
private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper()); private static final int placementHelperId = PlacementHelpers.register(new PlacementHelper());
@ -41,10 +49,33 @@ public class MetalLadderBlock extends LadderBlock implements IWrenchable {
@Override @Override
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
@SuppressWarnings("deprecation")
public boolean skipRendering(BlockState pState, BlockState pAdjacentBlockState, Direction pDirection) { public boolean skipRendering(BlockState pState, BlockState pAdjacentBlockState, Direction pDirection) {
if (pDirection != null && pDirection.getAxis()
.isHorizontal())
return pAdjacentBlockState.isAir() || !pAdjacentBlockState.blocksMotion();
return pDirection == Direction.UP && pAdjacentBlockState.getBlock() instanceof LadderBlock; return pDirection == Direction.UP && pAdjacentBlockState.getBlock() instanceof LadderBlock;
} }
@Override
public VoxelShape getOcclusionShape(BlockState pState, BlockGetter pLevel, BlockPos pPos) {
return AllShapes.SIX_VOXEL_POLE.get(Axis.Y);
}
@Override
public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel,
BlockPos pCurrentPos, BlockPos pFacingPos) {
if (!pState.canSurvive(pLevel, pCurrentPos))
return Blocks.AIR.defaultBlockState();
return super.updateShape(pState, pFacing, pFacingState, pLevel, pCurrentPos, pFacingPos);
}
@Override
public boolean canSurvive(BlockState pState, LevelReader pLevel, BlockPos pPos) {
return super.canSurvive(pState, pLevel, pPos) || pLevel.getBlockState(pPos.relative(Direction.UP))
.is(this);
}
@Override @Override
public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand,
BlockHitResult ray) { BlockHitResult ray) {

View file

@ -55,11 +55,11 @@ public class ClipboardValueSettingsHandler {
return; return;
if (!(mc.level.getBlockEntity(pos) instanceof SmartBlockEntity smartBE)) if (!(mc.level.getBlockEntity(pos) instanceof SmartBlockEntity smartBE))
return; return;
if (!smartBE.getAllBehaviours() if (!(smartBE instanceof ClipboardBlockEntity) && !smartBE.getAllBehaviours()
.stream() .stream()
.anyMatch(b -> b instanceof ClipboardCloneable cc .anyMatch(b -> b instanceof ClipboardCloneable cc
&& cc.writeToClipboard(new CompoundTag(), target.getDirection())) && cc.writeToClipboard(new CompoundTag(), target.getDirection()))
&& !(smartBE instanceof ClipboardCloneable)) && !(smartBE instanceof ClipboardCloneable))
return; return;
VoxelShape shape = blockstate.getShape(mc.level, pos); VoxelShape shape = blockstate.getShape(mc.level, pos);
@ -92,6 +92,14 @@ public class ClipboardValueSettingsHandler {
if (!(mc.level.getBlockEntity(pos) instanceof SmartBlockEntity smartBE)) if (!(mc.level.getBlockEntity(pos) instanceof SmartBlockEntity smartBE))
return; return;
if (smartBE instanceof ClipboardBlockEntity) {
List<MutableComponent> tip = new ArrayList<>();
tip.add(CreateLang.translateDirect("clipboard.actions"));
tip.add(CreateLang.translateDirect("clipboard.copy_other_clipboard", Components.keybind("key.use")));
CreateClient.VALUE_SETTINGS_HANDLER.showHoverTip(tip);
return;
}
CompoundTag tagElement = mc.player.getMainHandItem() CompoundTag tagElement = mc.player.getMainHandItem()
.getTagElement("CopiedValues"); .getTagElement("CopiedValues");
@ -146,6 +154,55 @@ public class ClipboardValueSettingsHandler {
return; return;
if (!(world.getBlockEntity(pos) instanceof SmartBlockEntity smartBE)) if (!(world.getBlockEntity(pos) instanceof SmartBlockEntity smartBE))
return; return;
if (smartBE instanceof ClipboardBlockEntity cbe) {
event.setCanceled(true);
event.setCancellationResult(InteractionResult.SUCCESS);
if (!world.isClientSide()) {
List<List<ClipboardEntry>> listTo = ClipboardEntry.readAll(itemStack);
List<List<ClipboardEntry>> listFrom = ClipboardEntry.readAll(cbe.dataContainer);
List<ClipboardEntry> toAdd = new ArrayList<>();
for (List<ClipboardEntry> page : listFrom) {
Copy: for (ClipboardEntry entry : page) {
String entryToAdd = entry.text.getString();
for (List<ClipboardEntry> pageTo : listTo)
for (ClipboardEntry existing : pageTo)
if (entryToAdd.equals(existing.text.getString()))
continue Copy;
toAdd.add(new ClipboardEntry(entry.checked, entry.text));
}
}
for (ClipboardEntry entry : toAdd) {
List<ClipboardEntry> page = null;
for (List<ClipboardEntry> freePage : listTo) {
if (freePage.size() > 11)
continue;
page = freePage;
break;
}
if (page == null) {
page = new ArrayList<>();
listTo.add(page);
}
page.add(entry);
ClipboardOverrides.switchTo(ClipboardType.WRITTEN, itemStack);
}
ClipboardEntry.saveAll(listTo, itemStack);
}
player.displayClientMessage(CreateLang.translate("clipboard.copied_from_clipboard", world.getBlockState(pos)
.getBlock()
.getName()
.withStyle(ChatFormatting.WHITE))
.style(ChatFormatting.GREEN)
.component(), true);
return;
}
CompoundTag tag = itemStack.getTagElement("CopiedValues"); CompoundTag tag = itemStack.getTagElement("CopiedValues");
if (paste && tag == null) if (paste && tag == null)
return; return;

View file

@ -13,6 +13,7 @@ import java.util.WeakHashMap;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.blockEntity.behaviour.animatedContainer.AnimatedContainerBehaviour;
import com.simibubi.create.foundation.utility.ResetableLazy; import com.simibubi.create.foundation.utility.ResetableLazy;
import net.createmod.catnip.utility.VecHelper; import net.createmod.catnip.utility.VecHelper;
@ -34,7 +35,6 @@ import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.Vec3; import net.minecraft.world.phys.Vec3;
import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.common.util.LazyOptional;
@ -53,12 +53,13 @@ public class ToolboxBlockEntity extends SmartBlockEntity implements MenuProvider
ToolboxInventory inventory; ToolboxInventory inventory;
LazyOptional<IItemHandler> inventoryProvider; LazyOptional<IItemHandler> inventoryProvider;
ResetableLazy<DyeColor> colorProvider; ResetableLazy<DyeColor> colorProvider;
protected int openCount;
Map<Integer, WeakHashMap<Player, Integer>> connectedPlayers; Map<Integer, WeakHashMap<Player, Integer>> connectedPlayers;
private Component customName; private Component customName;
private AnimatedContainerBehaviour<ToolboxMenu> openTracker;
public ToolboxBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) { public ToolboxBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state); super(type, pos, state);
connectedPlayers = new HashMap<>(); connectedPlayers = new HashMap<>();
@ -78,7 +79,9 @@ public class ToolboxBlockEntity extends SmartBlockEntity implements MenuProvider
} }
@Override @Override
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {} public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
behaviours.add(openTracker = new AnimatedContainerBehaviour<>(this, ToolboxMenu.class));
}
@Override @Override
public void initialize() { public void initialize() {
@ -101,8 +104,8 @@ public class ToolboxBlockEntity extends SmartBlockEntity implements MenuProvider
if (!level.isClientSide) if (!level.isClientSide)
tickPlayers(); tickPlayers();
lid.chase(openCount > 0 ? 1 : 0, 0.2f, Chaser.LINEAR); lid.chase(openTracker.openCount > 0 ? 1 : 0, 0.2f, Chaser.LINEAR);
drawers.chase(openCount > 0 ? 1 : 0, 0.2f, Chaser.EXP); drawers.chase(openTracker.openCount > 0 ? 1 : 0, 0.2f, Chaser.EXP);
lid.tickChaser(); lid.tickChaser();
drawers.tickChaser(); drawers.tickChaser();
} }
@ -257,17 +260,17 @@ public class ToolboxBlockEntity extends SmartBlockEntity implements MenuProvider
private void tickAudio() { private void tickAudio() {
Vec3 vec = VecHelper.getCenterOf(worldPosition); Vec3 vec = VecHelper.getCenterOf(worldPosition);
if (lid.settled()) { if (lid.settled()) {
if (openCount > 0 && lid.getChaseTarget() == 0) { if (openTracker.openCount > 0 && lid.getChaseTarget() == 0) {
level.playLocalSound(vec.x, vec.y, vec.z, SoundEvents.IRON_DOOR_OPEN, SoundSource.BLOCKS, 0.25F, level.playLocalSound(vec.x, vec.y, vec.z, SoundEvents.IRON_DOOR_OPEN, SoundSource.BLOCKS, 0.25F,
level.random.nextFloat() * 0.1F + 1.2F, true); level.random.nextFloat() * 0.1F + 1.2F, true);
level.playLocalSound(vec.x, vec.y, vec.z, SoundEvents.CHEST_OPEN, SoundSource.BLOCKS, 0.1F, level.playLocalSound(vec.x, vec.y, vec.z, SoundEvents.CHEST_OPEN, SoundSource.BLOCKS, 0.1F,
level.random.nextFloat() * 0.1F + 1.1F, true); level.random.nextFloat() * 0.1F + 1.1F, true);
} }
if (openCount == 0 && lid.getChaseTarget() == 1) if (openTracker.openCount == 0 && lid.getChaseTarget() == 1)
level.playLocalSound(vec.x, vec.y, vec.z, SoundEvents.CHEST_CLOSE, SoundSource.BLOCKS, 0.1F, level.playLocalSound(vec.x, vec.y, vec.z, SoundEvents.CHEST_CLOSE, SoundSource.BLOCKS, 0.1F,
level.random.nextFloat() * 0.1F + 1.1F, true); level.random.nextFloat() * 0.1F + 1.1F, true);
} else if (openCount == 0 && lid.getChaseTarget() == 0 && lid.getValue(0) > 1 / 16f } else if (openTracker.openCount == 0 && lid.getChaseTarget() == 0 && lid.getValue(0) > 1 / 16f
&& lid.getValue(1) < 1 / 16f) && lid.getValue(1) < 1 / 16f)
level.playLocalSound(vec.x, vec.y, vec.z, SoundEvents.IRON_DOOR_CLOSE, SoundSource.BLOCKS, 0.25F, level.playLocalSound(vec.x, vec.y, vec.z, SoundEvents.IRON_DOOR_CLOSE, SoundSource.BLOCKS, 0.25F,
level.random.nextFloat() * 0.1F + 1.2F, true); level.random.nextFloat() * 0.1F + 1.2F, true);
@ -288,8 +291,6 @@ public class ToolboxBlockEntity extends SmartBlockEntity implements MenuProvider
this.uniqueId = compound.getUUID("UniqueId"); this.uniqueId = compound.getUUID("UniqueId");
if (compound.contains("CustomName", 8)) if (compound.contains("CustomName", 8))
this.customName = Component.Serializer.fromJson(compound.getString("CustomName")); this.customName = Component.Serializer.fromJson(compound.getString("CustomName"));
if (clientPacket)
openCount = compound.getInt("OpenCount");
} }
@Override @Override
@ -303,8 +304,6 @@ public class ToolboxBlockEntity extends SmartBlockEntity implements MenuProvider
if (customName != null) if (customName != null)
compound.putString("CustomName", Component.Serializer.toJson(customName)); compound.putString("CustomName", Component.Serializer.toJson(customName));
super.write(compound, clientPacket); super.write(compound, clientPacket);
if (clientPacket)
compound.putInt("OpenCount", openCount);
} }
@Override @Override
@ -314,46 +313,11 @@ public class ToolboxBlockEntity extends SmartBlockEntity implements MenuProvider
@Override @Override
public void lazyTick() { public void lazyTick() {
updateOpenCount();
// keep re-advertising active TEs // keep re-advertising active TEs
ToolboxHandler.onLoad(this); ToolboxHandler.onLoad(this);
super.lazyTick(); super.lazyTick();
} }
void updateOpenCount() {
if (level.isClientSide)
return;
if (openCount == 0)
return;
int prevOpenCount = openCount;
openCount = 0;
for (Player playerentity : level.getEntitiesOfClass(Player.class, new AABB(worldPosition).inflate(8)))
if (playerentity.containerMenu instanceof ToolboxMenu
&& ((ToolboxMenu) playerentity.containerMenu).contentHolder == this)
openCount++;
if (prevOpenCount != openCount)
sendData();
}
public void startOpen(Player player) {
if (player.isSpectator())
return;
if (openCount < 0)
openCount = 0;
openCount++;
sendData();
}
public void stopOpen(Player player) {
if (player.isSpectator())
return;
openCount--;
sendData();
}
public void connectPlayer(int slot, Player player, int hotbarSlot) { public void connectPlayer(int slot, Player player, int hotbarSlot) {
if (level.isClientSide) if (level.isClientSide)
return; return;

View file

@ -3,6 +3,8 @@ package com.simibubi.create.content.equipment.toolbox;
import static com.simibubi.create.content.equipment.toolbox.ToolboxInventory.STACKS_PER_COMPARTMENT; import static com.simibubi.create.content.equipment.toolbox.ToolboxInventory.STACKS_PER_COMPARTMENT;
import com.simibubi.create.AllMenuTypes; import com.simibubi.create.AllMenuTypes;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.blockEntity.behaviour.animatedContainer.AnimatedContainerBehaviour;
import com.simibubi.create.foundation.gui.menu.MenuBase; import com.simibubi.create.foundation.gui.menu.MenuBase;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@ -27,7 +29,8 @@ public class ToolboxMenu extends MenuBase<ToolboxBlockEntity> {
public ToolboxMenu(MenuType<?> type, int id, Inventory inv, ToolboxBlockEntity be) { public ToolboxMenu(MenuType<?> type, int id, Inventory inv, ToolboxBlockEntity be) {
super(type, id, inv, be); super(type, id, inv, be);
be.startOpen(player); BlockEntityBehaviour.get(be, AnimatedContainerBehaviour.TYPE)
.startOpen(player);
} }
public static ToolboxMenu create(int id, Inventory inv, ToolboxBlockEntity be) { public static ToolboxMenu create(int id, Inventory inv, ToolboxBlockEntity be) {
@ -153,7 +156,8 @@ public class ToolboxMenu extends MenuBase<ToolboxBlockEntity> {
public void removed(Player playerIn) { public void removed(Player playerIn) {
super.removed(playerIn); super.removed(playerIn);
if (!playerIn.level().isClientSide) if (!playerIn.level().isClientSide)
contentHolder.stopOpen(playerIn); BlockEntityBehaviour.get(contentHolder, AnimatedContainerBehaviour.TYPE)
.stopOpen(playerIn);
} }
} }

View file

@ -80,7 +80,7 @@ public class ChainConveyorBlockEntity extends KineticBlockEntity {
@Override @Override
protected AABB createRenderBoundingBox() { protected AABB createRenderBoundingBox() {
return INFINITE_EXTENT_AABB; // TODO: compute smallest possible from connection data return new AABB(worldPosition).inflate(connections.isEmpty() ? 3 : 64);
} }
@Override @Override

View file

@ -26,9 +26,9 @@ public class AddressEditBox extends EditBox {
private DestinationSuggestions destinationSuggestions; private DestinationSuggestions destinationSuggestions;
private Consumer<String> mainResponder; private Consumer<String> mainResponder;
public AddressEditBox(Screen screen, Font pFont, int pX, int pY, int pWidth, int pHeight) { public AddressEditBox(Screen screen, Font pFont, int pX, int pY, int pWidth, int pHeight, boolean anchorToBottom) {
super(pFont, pX, pY, pWidth, pHeight, Components.empty()); super(pFont, pX, pY, pWidth, pHeight, Components.empty());
destinationSuggestions = AddressEditBoxHelper.createSuggestions(screen, this); destinationSuggestions = AddressEditBoxHelper.createSuggestions(screen, this, anchorToBottom);
destinationSuggestions.setAllowSuggestions(true); destinationSuggestions.setAllowSuggestions(true);
destinationSuggestions.updateCommandInfo(); destinationSuggestions.updateCommandInfo();
mainResponder = t -> destinationSuggestions.updateCommandInfo(); mainResponder = t -> destinationSuggestions.updateCommandInfo();

View file

@ -2,7 +2,9 @@ package com.simibubi.create.content.logistics;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import com.google.common.cache.Cache; import com.google.common.cache.Cache;
@ -39,31 +41,33 @@ public class AddressEditBoxHelper {
NEARBY_CLIPBOARDS.put(blockPos, new WeakReference<>(blockEntity)); NEARBY_CLIPBOARDS.put(blockPos, new WeakReference<>(blockEntity));
} }
public static DestinationSuggestions createSuggestions(Screen screen, EditBox pInput) { public static DestinationSuggestions createSuggestions(Screen screen, EditBox pInput, boolean anchorToBottom) {
Minecraft mc = Minecraft.getInstance(); Minecraft mc = Minecraft.getInstance();
Player player = mc.player; Player player = mc.player;
List<IntAttached<String>> options = new ArrayList<>(); List<IntAttached<String>> options = new ArrayList<>();
DestinationSuggestions destinationSuggestions = Set<String> alreadyAdded = new HashSet<>();
new DestinationSuggestions(mc, screen, pInput, mc.font, options, -72 + pInput.getY() + pInput.getHeight());
DestinationSuggestions destinationSuggestions = new DestinationSuggestions(mc, screen, pInput, mc.font, options,
anchorToBottom, -72 + pInput.getY() + (anchorToBottom ? 0 : pInput.getHeight()));
if (player == null) if (player == null)
return destinationSuggestions; return destinationSuggestions;
for (int i = 0; i < Inventory.INVENTORY_SIZE; i++) for (int i = 0; i < Inventory.INVENTORY_SIZE; i++)
appendAddresses(options, player.getInventory() appendAddresses(options, alreadyAdded, player.getInventory()
.getItem(i)); .getItem(i));
for (WeakReference<ClipboardBlockEntity> wr : NEARBY_CLIPBOARDS.asMap() for (WeakReference<ClipboardBlockEntity> wr : NEARBY_CLIPBOARDS.asMap()
.values()) { .values()) {
ClipboardBlockEntity cbe = wr.get(); ClipboardBlockEntity cbe = wr.get();
if (cbe != null) if (cbe != null)
appendAddresses(options, cbe.dataContainer); appendAddresses(options, alreadyAdded, cbe.dataContainer);
} }
return destinationSuggestions; return destinationSuggestions;
} }
private static void appendAddresses(List<IntAttached<String>> options, ItemStack item) { private static void appendAddresses(List<IntAttached<String>> options, Set<String> alreadyAdded, ItemStack item) {
if (item == null || !AllBlocks.CLIPBOARD.isIn(item)) if (item == null || !AllBlocks.CLIPBOARD.isIn(item))
return; return;
@ -77,7 +81,10 @@ public class AddressEditBoxHelper {
String address = string.substring(1); String address = string.substring(1);
if (address.isBlank()) if (address.isBlank())
return; return;
options.add(IntAttached.withZero(address.trim())); String trim = address.trim();
if (!alreadyAdded.add(trim))
return;
options.add(IntAttached.withZero(trim));
})); }));
} }

View file

@ -18,6 +18,7 @@ import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.FriendlyByteBuf; import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.Packet;
import net.minecraft.network.protocol.game.ClientGamePacketListener; import net.minecraft.network.protocol.game.ClientGamePacketListener;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
@ -31,6 +32,7 @@ import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.EquipmentSlot;
import net.minecraft.world.entity.HumanoidArm; import net.minecraft.world.entity.HumanoidArm;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.MobSpawnType;
import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.Pose;
import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.ai.attributes.Attributes;
@ -38,6 +40,7 @@ import net.minecraft.world.entity.item.ItemEntity;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.entity.projectile.AbstractArrow; import net.minecraft.world.entity.projectile.AbstractArrow;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.SpawnEggItem;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@ -356,6 +359,15 @@ public class PackageEntity extends LivingEntity implements IEntityAdditionalSpaw
ItemStackHandler contents = PackageItem.getContents(box); ItemStackHandler contents = PackageItem.getContents(box);
for (int i = 0; i < contents.getSlots(); i++) { for (int i = 0; i < contents.getSlots(); i++) {
ItemStack itemstack = contents.getStackInSlot(i); ItemStack itemstack = contents.getStackInSlot(i);
if (itemstack.getItem() instanceof SpawnEggItem sei && level() instanceof ServerLevel sl) {
EntityType<?> entitytype = sei.getType(itemstack.getTag());
Entity entity = entitytype.spawn(sl, itemstack, null, blockPosition(),
MobSpawnType.SPAWN_EGG, false, false);
if (entity != null)
itemstack.shrink(1);
}
if (itemstack.isEmpty()) if (itemstack.isEmpty())
continue; continue;
ItemEntity entityIn = new ItemEntity(level(), getX(), getY(), getZ(), itemstack); ItemEntity entityIn = new ItemEntity(level(), getX(), getY(), getZ(), itemstack);

View file

@ -12,22 +12,27 @@ import com.simibubi.create.content.logistics.stockTicker.PackageOrder;
import net.createmod.catnip.utility.VecHelper; import net.createmod.catnip.utility.VecHelper;
import net.createmod.catnip.utility.lang.Components; import net.createmod.catnip.utility.lang.Components;
import net.minecraft.ChatFormatting; import net.minecraft.ChatFormatting;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.core.particles.ItemParticleOption; import net.minecraft.core.particles.ItemParticleOption;
import net.minecraft.core.particles.ParticleTypes; import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.Tag; import net.minecraft.nbt.Tag;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource; import net.minecraft.sounds.SoundSource;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResult;
import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.MobSpawnType;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.SpawnEggItem;
import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.TooltipFlag;
import net.minecraft.world.item.UseAnim; import net.minecraft.world.item.UseAnim;
import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.item.context.UseOnContext;
@ -63,7 +68,7 @@ public class PackageItem extends Item {
public static boolean isPackage(ItemStack stack) { public static boolean isPackage(ItemStack stack) {
return stack.getItem() instanceof PackageItem; return stack.getItem() instanceof PackageItem;
} }
@Override @Override
public boolean canFitInsideContainerItems() { public boolean canFitInsideContainerItems() {
return false; return false;
@ -129,7 +134,7 @@ public class PackageItem extends Item {
public static boolean matchAddress(ItemStack box, String address) { public static boolean matchAddress(ItemStack box, String address) {
return matchAddress(getAddress(box), address); return matchAddress(getAddress(box), address);
} }
public static boolean matchAddress(String boxAddress, String address) { public static boolean matchAddress(String boxAddress, String address) {
if (address.isBlank()) if (address.isBlank())
return boxAddress.isBlank(); return boxAddress.isBlank();
@ -188,20 +193,18 @@ public class PackageItem extends Item {
pTooltipComponents.add(Components.literal("-> " + compoundnbt.getString("Address")) pTooltipComponents.add(Components.literal("-> " + compoundnbt.getString("Address"))
.withStyle(ChatFormatting.GOLD)); .withStyle(ChatFormatting.GOLD));
/* Debug Fragmentation Data /*
if (compoundnbt.contains("Fragment")) { * Debug Fragmentation Data if (compoundnbt.contains("Fragment")) { CompoundTag
CompoundTag fragTag = compoundnbt.getCompound("Fragment"); * fragTag = compoundnbt.getCompound("Fragment");
pTooltipComponents.add(Components.literal("Order Information (Temporary)") * pTooltipComponents.add(Components.literal("Order Information (Temporary)")
.withStyle(ChatFormatting.GREEN)); * .withStyle(ChatFormatting.GREEN)); pTooltipComponents.add(Components
pTooltipComponents.add(Components * .literal(" Link " + fragTag.getInt("LinkIndex") +
.literal(" Link " + fragTag.getInt("LinkIndex") + (fragTag.getBoolean("IsFinalLink") ? " Final" : "") * (fragTag.getBoolean("IsFinalLink") ? " Final" : "") + " | Fragment " +
+ " | Fragment " + fragTag.getInt("Index") + (fragTag.getBoolean("IsFinal") ? " Final" : "")) * fragTag.getInt("Index") + (fragTag.getBoolean("IsFinal") ? " Final" : ""))
.withStyle(ChatFormatting.DARK_GREEN)); * .withStyle(ChatFormatting.DARK_GREEN)); if (fragTag.contains("OrderContext"))
if (fragTag.contains("OrderContext")) * pTooltipComponents.add(Components.literal("Has Context!")
pTooltipComponents.add(Components.literal("Has Context!") * .withStyle(ChatFormatting.DARK_GREEN)); }
.withStyle(ChatFormatting.DARK_GREEN)); */
}
*/
if (!compoundnbt.contains("Items", Tag.TAG_COMPOUND)) if (!compoundnbt.contains("Items", Tag.TAG_COMPOUND))
return; return;
@ -256,6 +259,18 @@ public class PackageItem extends Item {
for (int i = 0; i < contents.getSlots(); i++) { for (int i = 0; i < contents.getSlots(); i++) {
ItemStack itemstack = contents.getStackInSlot(i); ItemStack itemstack = contents.getStackInSlot(i);
if (itemstack.getItem() instanceof SpawnEggItem sei && worldIn instanceof ServerLevel sl) {
EntityType<?> entitytype = sei.getType(itemstack.getTag());
Entity entity = entitytype.spawn(sl, itemstack, null, BlockPos.containing(playerIn.position()
.add(playerIn.getLookAngle()
.multiply(1, 0, 1)
.normalize())),
MobSpawnType.SPAWN_EGG, false, false);
if (entity != null)
itemstack.shrink(1);
}
if (itemstack.isEmpty()) if (itemstack.isEmpty())
continue; continue;
playerIn.getInventory() playerIn.getInventory()

View file

@ -88,7 +88,7 @@ public class DisplayClothBlock extends Block implements IHaveBigOutline, IWrench
BlockHitResult ray) { BlockHitResult ray) {
if (ray.getDirection() == Direction.DOWN) if (ray.getDirection() == Direction.DOWN)
return InteractionResult.PASS; return InteractionResult.PASS;
ItemStack heldItem = player.getItemInHand(hand); ItemStack heldItem = player.getItemInHand(hand);
boolean shiftKeyDown = player.isShiftKeyDown(); boolean shiftKeyDown = player.isShiftKeyDown();
if (!player.mayBuild()) if (!player.mayBuild())
@ -151,6 +151,12 @@ public class DisplayClothBlock extends Block implements IHaveBigOutline, IWrench
return AllShapes.DISPLAY_CLOTH_OCCLUSION; return AllShapes.DISPLAY_CLOTH_OCCLUSION;
} }
@Override
public VoxelShape getCollisionShape(BlockState pState, BlockGetter pLevel, BlockPos pPos,
CollisionContext pContext) {
return AllShapes.DISPLAY_CLOTH_OCCLUSION;
}
@Override @Override
public boolean canSurvive(BlockState p_152922_, LevelReader p_152923_, BlockPos p_152924_) { public boolean canSurvive(BlockState p_152922_, LevelReader p_152923_, BlockPos p_152924_) {
return true; return true;

View file

@ -75,8 +75,8 @@ public class FactoryPanelScreen extends AbstractSimiScreen {
int y = guiTop; int y = guiTop;
if (addressBox == null) { if (addressBox == null) {
addressBox = addressBox = new AddressEditBox(this, new NoShadowFontWrapper(font), x + 38, y + 30 + middleHeight(), 110,
new AddressEditBox(this, new NoShadowFontWrapper(font), x + 38, y + 30 + middleHeight(), 110, 10); 10, false);
addressBox.setValue(behaviour.recipeAddress); addressBox.setValue(behaviour.recipeAddress);
addressBox.setTextColor(0x555555); addressBox.setTextColor(0x555555);
} }

View file

@ -45,7 +45,7 @@ public class PackageFilterScreen extends AbstractFilterScreen<PackageFilterMenu>
int x = leftPos; int x = leftPos;
int y = topPos; int y = topPos;
addressBox = new AddressEditBox(this, this.font, x + 44, y + 28, 140, 9); addressBox = new AddressEditBox(this, this.font, x + 44, y + 28, 140, 9, false);
addressBox.setTextColor(0xffffff); addressBox.setTextColor(0xffffff);
addressBox.setValue(menu.address); addressBox.setValue(menu.address);
addressBox.setResponder(this::onAddressEdited); addressBox.setResponder(this::onAddressEdited);
@ -57,7 +57,7 @@ public class PackageFilterScreen extends AbstractFilterScreen<PackageFilterMenu>
@Override @Override
public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) {
super.render(graphics, mouseX, mouseY, partialTicks); super.render(graphics, mouseX, mouseY, partialTicks);
PoseStack ms = graphics.pose(); PoseStack ms = graphics.pose();
ms.pushPose(); ms.pushPose();
ms.translate(leftPos + 16, topPos + 23, 0); ms.translate(leftPos + 16, topPos + 23, 0);
@ -90,7 +90,6 @@ public class PackageFilterScreen extends AbstractFilterScreen<PackageFilterMenu>
public boolean charTyped(char pCodePoint, int pModifiers) { public boolean charTyped(char pCodePoint, int pModifiers) {
return super.charTyped(pCodePoint, pModifiers); return super.charTyped(pCodePoint, pModifiers);
} }
@Override @Override
protected void contentsCleared() { protected void contentsCleared() {

View file

@ -11,6 +11,7 @@ import com.simibubi.create.content.equipment.clipboard.ClipboardEntry;
import com.simibubi.create.content.equipment.clipboard.ClipboardOverrides; import com.simibubi.create.content.equipment.clipboard.ClipboardOverrides;
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.blockEntity.behaviour.animatedContainer.AnimatedContainerBehaviour;
import com.simibubi.create.foundation.item.SmartInventory; import com.simibubi.create.foundation.item.SmartInventory;
import com.simibubi.create.foundation.utility.CreateLang; import com.simibubi.create.foundation.utility.CreateLang;
@ -42,6 +43,8 @@ public abstract class PackagePortBlockEntity extends SmartBlockEntity implements
public PackagePortTarget target; public PackagePortTarget target;
public SmartInventory inventory; public SmartInventory inventory;
protected AnimatedContainerBehaviour<PackagePortMenu> openTracker;
private LazyOptional<IItemHandler> itemHandler; private LazyOptional<IItemHandler> itemHandler;
public PackagePortBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) { public PackagePortBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
@ -129,7 +132,12 @@ public abstract class PackagePortBlockEntity extends SmartBlockEntity implements
} }
@Override @Override
public void addBehaviours(List<BlockEntityBehaviour> behaviours) {} public void addBehaviours(List<BlockEntityBehaviour> behaviours) {
behaviours.add(openTracker = new AnimatedContainerBehaviour<>(this, PackagePortMenu.class));
openTracker.onOpenChanged(this::onOpenChange);
}
protected abstract void onOpenChange(boolean open);
public InteractionResult use(Player player) { public InteractionResult use(Player player) {
if (player == null || player.isCrouching()) if (player == null || player.isCrouching())
@ -165,7 +173,7 @@ public abstract class PackagePortBlockEntity extends SmartBlockEntity implements
List<ClipboardEntry> page = null; List<ClipboardEntry> page = null;
for (List<ClipboardEntry> freePage : list) { for (List<ClipboardEntry> freePage : list) {
if (freePage.size() > 16) if (freePage.size() > 11)
continue; continue;
page = freePage; page = freePage;
break; break;
@ -179,9 +187,10 @@ public abstract class PackagePortBlockEntity extends SmartBlockEntity implements
page.add(new ClipboardEntry(false, Components.literal("#" + addressFilter))); page.add(new ClipboardEntry(false, Components.literal("#" + addressFilter)));
player.displayClientMessage(CreateLang.temporaryText("'" + addressFilter + "' added to Clipboard") player.displayClientMessage(CreateLang.temporaryText("'" + addressFilter + "' added to Clipboard")
.component(), true); .component(), true);
ClipboardEntry.saveAll(list, mainHandItem); ClipboardEntry.saveAll(list, mainHandItem);
mainHandItem.getTag().putInt("Type", ClipboardOverrides.ClipboardType.WRITTEN.ordinal()); mainHandItem.getTag()
.putInt("Type", ClipboardOverrides.ClipboardType.WRITTEN.ordinal());
} }
@Override @Override

View file

@ -1,6 +1,8 @@
package com.simibubi.create.content.logistics.packagePort; package com.simibubi.create.content.logistics.packagePort;
import com.simibubi.create.AllMenuTypes; import com.simibubi.create.AllMenuTypes;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.blockEntity.behaviour.animatedContainer.AnimatedContainerBehaviour;
import com.simibubi.create.foundation.gui.menu.MenuBase; import com.simibubi.create.foundation.gui.menu.MenuBase;
import com.simibubi.create.foundation.item.SmartInventory; import com.simibubi.create.foundation.item.SmartInventory;
@ -24,6 +26,8 @@ public class PackagePortMenu extends MenuBase<PackagePortBlockEntity> {
public PackagePortMenu(MenuType<?> type, int id, Inventory inv, PackagePortBlockEntity be) { public PackagePortMenu(MenuType<?> type, int id, Inventory inv, PackagePortBlockEntity be) {
super(type, id, inv, be); super(type, id, inv, be);
BlockEntityBehaviour.get(be, AnimatedContainerBehaviour.TYPE)
.startOpen(player);
} }
public static PackagePortMenu create(int id, Inventory inv, PackagePortBlockEntity be) { public static PackagePortMenu create(int id, Inventory inv, PackagePortBlockEntity be) {
@ -79,6 +83,9 @@ public class PackagePortMenu extends MenuBase<PackagePortBlockEntity> {
@Override @Override
public void removed(Player playerIn) { public void removed(Player playerIn) {
super.removed(playerIn); super.removed(playerIn);
if (!playerIn.level().isClientSide)
BlockEntityBehaviour.get(contentHolder, AnimatedContainerBehaviour.TYPE)
.stopOpen(playerIn);
} }
} }

View file

@ -29,6 +29,7 @@ import net.minecraftforge.items.ItemHandlerHelper;
public class FrogportBlockEntity extends PackagePortBlockEntity { public class FrogportBlockEntity extends PackagePortBlockEntity {
public ItemStack animatedPackage; public ItemStack animatedPackage;
public LerpedFloat manualOpenAnimationProgress;
public LerpedFloat animationProgress; public LerpedFloat animationProgress;
public LerpedFloat anticipationProgress; public LerpedFloat anticipationProgress;
public boolean currentlyDepositing; public boolean currentlyDepositing;
@ -41,6 +42,9 @@ public class FrogportBlockEntity extends PackagePortBlockEntity {
super(type, pos, state); super(type, pos, state);
animationProgress = LerpedFloat.linear(); animationProgress = LerpedFloat.linear();
anticipationProgress = LerpedFloat.linear(); anticipationProgress = LerpedFloat.linear();
manualOpenAnimationProgress = LerpedFloat.linear()
.startWithValue(0)
.chase(0, 0.35, Chaser.LINEAR);
} }
public boolean isAnimationInProgress() { public boolean isAnimationInProgress() {
@ -68,8 +72,13 @@ public class FrogportBlockEntity extends PackagePortBlockEntity {
public void sendAnticipate() { public void sendAnticipate() {
if (isAnimationInProgress()) if (isAnimationInProgress())
return; return;
sendAnticipate = true; for (int i = 0; i < inventory.getSlots(); i++)
sendData(); if (inventory.getStackInSlot(i)
.isEmpty()) {
sendAnticipate = true;
sendData();
return;
}
} }
public void anticipate() { public void anticipate() {
@ -83,7 +92,10 @@ public class FrogportBlockEntity extends PackagePortBlockEntity {
if (anticipationProgress.getValue() == 1) if (anticipationProgress.getValue() == 1)
anticipationProgress.updateChaseTarget(0); anticipationProgress.updateChaseTarget(0);
manualOpenAnimationProgress.updateChaseTarget(openTracker.openCount > 0 ? 1 : 0);
anticipationProgress.tickChaser(); anticipationProgress.tickChaser();
manualOpenAnimationProgress.tickChaser();
if (!isAnimationInProgress()) if (!isAnimationInProgress())
return; return;
@ -178,6 +190,9 @@ public class FrogportBlockEntity extends PackagePortBlockEntity {
} }
} }
@Override
protected void onOpenChange(boolean open) {}
public void tryPullingFromOwnAndAdjacentInventories() { public void tryPullingFromOwnAndAdjacentInventories() {
if (isAnimationInProgress()) if (isAnimationInProgress())
return; return;

View file

@ -84,6 +84,10 @@ public class FrogportRenderer extends SmartBlockEntityRenderer<FrogportBlockEnti
headPitch *= headPitchModifier; headPitch *= headPitchModifier;
headPitch = Math.max(headPitch, blockEntity.manualOpenAnimationProgress.getValue(partialTicks) * 60);
tongueLength = Math.max(tongueLength, blockEntity.manualOpenAnimationProgress.getValue(partialTicks) * 0.25f);
body.center() body.center()
.rotateYDegrees(yaw) .rotateYDegrees(yaw)
.uncenter() .uncenter()

View file

@ -116,6 +116,9 @@ public class FrogportVisual extends AbstractBlockEntityVisual<FrogportBlockEntit
headPitch *= headPitchModifier; headPitch *= headPitchModifier;
headPitch = Math.max(headPitch, blockEntity.manualOpenAnimationProgress.getValue(partialTicks) * 60);
tongueLength = Math.max(tongueLength, blockEntity.manualOpenAnimationProgress.getValue(partialTicks) * 0.25f);
body.setIdentityTransform() body.setIdentityTransform()
.translate(getVisualPosition()) .translate(getVisualPosition())
.center() .center()

View file

@ -13,6 +13,8 @@ import net.createmod.catnip.utility.animation.LerpedFloat;
import net.createmod.catnip.utility.animation.LerpedFloat.Chaser; import net.createmod.catnip.utility.animation.LerpedFloat.Chaser;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.world.item.BoneMealItem; import net.minecraft.world.item.BoneMealItem;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
@ -23,7 +25,7 @@ public class PostboxBlockEntity extends PackagePortBlockEntity {
public WeakReference<GlobalStation> trackedGlobalStation; public WeakReference<GlobalStation> trackedGlobalStation;
public LerpedFloat flag; public LerpedFloat flag;
private boolean sendParticles; private boolean sendParticles;
public PostboxBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) { public PostboxBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
@ -55,17 +57,24 @@ public class PostboxBlockEntity extends PackagePortBlockEntity {
flag.tickChaser(); flag.tickChaser();
if (currentTarget == 0 && settled != flag.getValue() > .15f) if (currentTarget == 0 && settled != flag.getValue() > .15f)
AllSoundEvents.CONTRAPTION_DISASSEMBLE.playAt(level, worldPosition, 0.75f, 1.5f, true); AllSoundEvents.CONTRAPTION_DISASSEMBLE.playAt(level, worldPosition, 0.75f, 1.5f, true);
if (sendParticles) { if (sendParticles) {
sendParticles = false; sendParticles = false;
BoneMealItem.addGrowthParticles(level, worldPosition, 40); BoneMealItem.addGrowthParticles(level, worldPosition, 40);
} }
} }
@Override
protected void onOpenChange(boolean open) {
level.setBlockAndUpdate(worldPosition, getBlockState().setValue(PostboxBlock.OPEN, open));
level.playSound(null, worldPosition, open ? SoundEvents.BARREL_OPEN : SoundEvents.BARREL_CLOSE,
SoundSource.BLOCKS);
}
public void spawnParticles() { public void spawnParticles() {
sendParticles = true; sendParticles = true;
} }
@Override @Override
protected void write(CompoundTag tag, boolean clientPacket) { protected void write(CompoundTag tag, boolean clientPacket) {
super.write(tag, clientPacket); super.write(tag, clientPacket);
@ -73,7 +82,7 @@ public class PostboxBlockEntity extends PackagePortBlockEntity {
NBTHelper.putMarker(tag, "Particles"); NBTHelper.putMarker(tag, "Particles");
sendParticles = false; sendParticles = false;
} }
@Override @Override
protected void read(CompoundTag tag, boolean clientPacket) { protected void read(CompoundTag tag, boolean clientPacket) {
super.read(tag, clientPacket); super.read(tag, clientPacket);

View file

@ -77,6 +77,8 @@ public class LogisticallyLinkedBlockItem extends BlockItem {
if (player == null) if (player == null)
return InteractionResult.FAIL; return InteractionResult.FAIL;
if (player.isShiftKeyDown())
return super.useOn(pContext);
LogisticallyLinkedBehaviour link = BlockEntityBehaviour.get(level, pos, LogisticallyLinkedBehaviour.TYPE); LogisticallyLinkedBehaviour link = BlockEntityBehaviour.get(level, pos, LogisticallyLinkedBehaviour.TYPE);
boolean tuned = isTuned(stack); boolean tuned = isTuned(stack);

View file

@ -2,15 +2,18 @@ package com.simibubi.create.content.logistics.packagerLink;
import java.util.UUID; import java.util.UUID;
import com.simibubi.create.AllBlockEntityTypes; import org.apache.commons.lang3.tuple.Pair;
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
import net.createmod.catnip.CatnipClient; import net.createmod.catnip.CatnipClient;
import net.createmod.catnip.utility.AnimationTickHolder;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.player.LocalPlayer;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.phys.AABB;
import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraft.world.phys.shapes.VoxelShape;
public class LogisticallyLinkedClientHandler { public class LogisticallyLinkedClientHandler {
@ -36,10 +39,20 @@ public class LogisticallyLinkedClientHandler {
.getShape(player.level(), be.getBlockPos()); .getShape(player.level(), be.getBlockPos());
if (shape.isEmpty()) if (shape.isEmpty())
continue; continue;
CatnipClient.OUTLINER.showAABB(behaviour, shape.bounds() if (!player.blockPosition()
.inflate(AllBlockEntityTypes.FACTORY_PANEL.is(be) ? -1 / 16f : 0) .closerThan(be.getBlockPos(), 64))
.move(be.getBlockPos()), 2) continue;
.lineWidth(1 / 16f); for (int i = 0; i < shape.toAabbs()
.size(); i++) {
AABB aabb = shape.toAabbs()
.get(i);
CatnipClient.OUTLINER.showAABB(Pair.of(behaviour, i), aabb.inflate(-1 / 128f)
.move(be.getBlockPos()), 2)
.lineWidth(1 / 32f)
.disableLineNormals()
.colored(AnimationTickHolder.getTicks() % 16 < 8 ? 0x708DAD : 0x90ADCD);
}
} }
} }

View file

@ -70,7 +70,7 @@ public class RedstoneRequesterScreen extends AbstractSimiContainerScreen<Redston
int y = getGuiTop(); int y = getGuiTop();
if (addressBox == null) { if (addressBox == null) {
addressBox = new AddressEditBox(this, new NoShadowFontWrapper(font), x + 50, y + 53, 110, 10); addressBox = new AddressEditBox(this, new NoShadowFontWrapper(font), x + 50, y + 53, 110, 10, false);
addressBox.setValue(menu.contentHolder.encodedTargetAdress); addressBox.setValue(menu.contentHolder.encodedTargetAdress);
addressBox.setTextColor(0x555555); addressBox.setTextColor(0x555555);
} }

View file

@ -148,7 +148,8 @@ public class StockTickerRequestScreen extends AbstractSimiScreen implements Scre
addWidget(searchBox); addWidget(searchBox);
boolean initial = addressBox == null; boolean initial = addressBox == null;
addressBox = new AddressEditBox(this, new NoShadowFontWrapper(font), x + 60, y + windowHeight - 32, 112, 10); addressBox =
new AddressEditBox(this, new NoShadowFontWrapper(font), x + 60, y + windowHeight - 32, 112, 10, true);
addressBox.setTextColor(0x555555); addressBox.setTextColor(0x555555);
if (initial) if (initial)
addressBox.setValue(blockEntity.previouslyUsedAddress); addressBox.setValue(blockEntity.previouslyUsedAddress);

View file

@ -11,8 +11,6 @@ import com.simibubi.create.foundation.block.WrenchableDirectionalBlock;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction; import net.minecraft.core.Direction;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult; import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
@ -73,18 +71,13 @@ public class DeskBellBlock extends WrenchableDirectionalBlock
@Override @Override
public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand, public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand,
BlockHitResult pHit) { BlockHitResult pHit) {
if (pState.getValue(POWERED))
return InteractionResult.CONSUME;
press(pState, pLevel, pPos);
playSound(pPlayer, pLevel, pPos); playSound(pPlayer, pLevel, pPos);
withBlockEntityDo(pLevel, pPos, DeskBellBlockEntity::ding); if (pLevel.isClientSide)
return InteractionResult.SUCCESS; return InteractionResult.SUCCESS;
}
public void press(BlockState pState, Level pLevel, BlockPos pPos) {
pLevel.setBlock(pPos, pState.setValue(POWERED, true), 3); pLevel.setBlock(pPos, pState.setValue(POWERED, true), 3);
updateNeighbours(pState, pLevel, pPos); updateNeighbours(pState, pLevel, pPos);
pLevel.scheduleTick(pPos, this, 20); withBlockEntityDo(pLevel, pPos, DeskBellBlockEntity::ding);
return InteractionResult.SUCCESS;
} }
public void playSound(@Nullable Player pPlayer, LevelAccessor pLevel, BlockPos pPos) { public void playSound(@Nullable Player pPlayer, LevelAccessor pLevel, BlockPos pPos) {
@ -115,13 +108,7 @@ public class DeskBellBlock extends WrenchableDirectionalBlock
return true; return true;
} }
@Override public void unPress(BlockState pState, Level pLevel, BlockPos pPos) {
public void tick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSource pRandom) {
if (pState.getValue(POWERED))
unPress(pState, pLevel, pPos);
}
protected void unPress(BlockState pState, Level pLevel, BlockPos pPos) {
pLevel.setBlock(pPos, pState.setValue(POWERED, false), 3); pLevel.setBlock(pPos, pState.setValue(POWERED, false), 3);
updateNeighbours(pState, pLevel, pPos); updateNeighbours(pState, pLevel, pPos);
} }

View file

@ -2,6 +2,7 @@ package com.simibubi.create.content.redstone.deskBell;
import java.util.List; import java.util.List;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
@ -10,6 +11,7 @@ import net.createmod.catnip.utility.animation.LerpedFloat;
import net.createmod.catnip.utility.animation.LerpedFloat.Chaser; import net.createmod.catnip.utility.animation.LerpedFloat.Chaser;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.util.Mth;
import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
@ -17,19 +19,37 @@ public class DeskBellBlockEntity extends SmartBlockEntity {
public LerpedFloat animation = LerpedFloat.linear() public LerpedFloat animation = LerpedFloat.linear()
.startWithValue(0); .startWithValue(0);
public boolean ding; public boolean ding;
int blockStateTimer;
float animationOffset;
public DeskBellBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) { public DeskBellBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
super(type, pos, state); super(type, pos, state);
blockStateTimer = 0;
} }
@Override @Override
public void tick() { public void tick() {
super.tick(); super.tick();
animation.tickChaser(); animation.tickChaser();
if (level.isClientSide)
return;
if (blockStateTimer == 0)
return;
blockStateTimer--;
if (blockStateTimer > 0)
return;
BlockState blockState = getBlockState();
if (blockState.getValue(DeskBellBlock.POWERED))
AllBlocks.DESK_BELL.get()
.unPress(blockState, level, worldPosition);
} }
@Override @Override
protected void write(CompoundTag tag, boolean clientPacket) { protected void write(CompoundTag tag, boolean clientPacket) {
super.write(tag, clientPacket); super.write(tag, clientPacket);
@ -37,7 +57,7 @@ public class DeskBellBlockEntity extends SmartBlockEntity {
NBTHelper.putMarker(tag, "Ding"); NBTHelper.putMarker(tag, "Ding");
ding = false; ding = false;
} }
@Override @Override
protected void read(CompoundTag tag, boolean clientPacket) { protected void read(CompoundTag tag, boolean clientPacket) {
super.read(tag, clientPacket); super.read(tag, clientPacket);
@ -47,11 +67,13 @@ public class DeskBellBlockEntity extends SmartBlockEntity {
public void ding() { public void ding() {
if (!level.isClientSide) { if (!level.isClientSide) {
blockStateTimer = 20;
ding = true; ding = true;
sendData(); sendData();
return; return;
} }
animationOffset = level.random.nextFloat() * 2 * Mth.PI;
animation.startWithValue(1) animation.startWithValue(1)
.chase(0, 0.05, Chaser.LINEAR); .chase(0, 0.05, Chaser.LINEAR);
} }

View file

@ -48,8 +48,8 @@ public class DeskBellRenderer extends SmartBlockEntityRenderer<DeskBellBlockEnti
.rotateYDegrees(AngleHelper.horizontalAngle(facing)) .rotateYDegrees(AngleHelper.horizontalAngle(facing))
.rotateXDegrees(AngleHelper.verticalAngle(facing) + 90) .rotateXDegrees(AngleHelper.verticalAngle(facing) + 90)
.translate(0, -1 / 16, 0) .translate(0, -1 / 16, 0)
.rotateXDegrees(f2 * 8 * Mth.sin(p * Mth.PI * 4)) .rotateXDegrees(f2 * 8 * Mth.sin(p * Mth.PI * 4 + blockEntity.animationOffset))
.rotateZDegrees(f2 * 8 * Mth.cos(p * Mth.PI * 4)) .rotateZDegrees(f2 * 8 * Mth.cos(p * Mth.PI * 4 + blockEntity.animationOffset))
.translate(0, 1 / 16, 0) .translate(0, 1 / 16, 0)
.scale(0.995f) .scale(0.995f)
.uncenter() .uncenter()

View file

@ -26,8 +26,8 @@ public class DestinationSuggestions extends CommandSuggestions {
private int yOffset; private int yOffset;
public DestinationSuggestions(Minecraft pMinecraft, Screen pScreen, EditBox pInput, Font pFont, public DestinationSuggestions(Minecraft pMinecraft, Screen pScreen, EditBox pInput, Font pFont,
List<IntAttached<String>> viableStations, int yOffset) { List<IntAttached<String>> viableStations, boolean anchorToBottom, int yOffset) {
super(pMinecraft, pScreen, pInput, pFont, true, true, 0, 7, false, 0xee_303030); super(pMinecraft, pScreen, pInput, pFont, true, true, 0, 7, anchorToBottom, 0xee_303030);
this.textBox = pInput; this.textBox = pInput;
this.font = pFont; this.font = pFont;
this.viableStations = viableStations; this.viableStations = viableStations;

View file

@ -297,7 +297,7 @@ public class ScheduleScreen extends AbstractSimiContainerScreen<ScheduleMenu> im
if (!(e instanceof EditBox destinationBox)) if (!(e instanceof EditBox destinationBox))
return; return;
destinationSuggestions = new DestinationSuggestions(this.minecraft, this, destinationBox, this.font, destinationSuggestions = new DestinationSuggestions(this.minecraft, this, destinationBox, this.font,
getViableStations(field), topPos + 33); getViableStations(field), false, topPos + 33);
destinationSuggestions.setAllowSuggestions(true); destinationSuggestions.setAllowSuggestions(true);
destinationSuggestions.updateCommandInfo(); destinationSuggestions.updateCommandInfo();
destinationBox.setResponder(this::onDestinationEdited); destinationBox.setResponder(this::onDestinationEdited);

View file

@ -0,0 +1,107 @@
package com.simibubi.create.foundation.blockEntity.behaviour.animatedContainer;
import java.util.function.Consumer;
import com.simibubi.create.foundation.blockEntity.SmartBlockEntity;
import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.gui.menu.MenuBase;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level;
import net.minecraft.world.phys.AABB;
public class AnimatedContainerBehaviour<M extends MenuBase<? extends SmartBlockEntity>> extends BlockEntityBehaviour {
public static final BehaviourType<AnimatedContainerBehaviour<?>> TYPE = new BehaviourType<>();
public int openCount;
private Class<M> menuClass;
private Consumer<Boolean> openChanged;
public AnimatedContainerBehaviour(SmartBlockEntity be, Class<M> menuClass) {
super(be);
this.menuClass = menuClass;
openCount = 0;
}
public void onOpenChanged(Consumer<Boolean> openChanged) {
this.openChanged = openChanged;
}
@Override
public void read(CompoundTag compound, boolean clientPacket) {
super.read(compound, clientPacket);
if (clientPacket)
openCount = compound.getInt("OpenCount");
}
@Override
public void write(CompoundTag compound, boolean clientPacket) {
super.write(compound, clientPacket);
if (clientPacket)
compound.putInt("OpenCount", openCount);
}
@Override
public void lazyTick() {
updateOpenCount();
super.lazyTick();
}
void updateOpenCount() {
Level level = getWorld();
if (level.isClientSide)
return;
if (openCount == 0)
return;
int prevOpenCount = openCount;
openCount = 0;
for (Player playerentity : level.getEntitiesOfClass(Player.class, new AABB(getPos()).inflate(8)))
if (menuClass.isInstance(playerentity.containerMenu)
&& menuClass.cast(playerentity.containerMenu).contentHolder == blockEntity)
openCount++;
if (prevOpenCount != openCount) {
if (openChanged != null && prevOpenCount == 0 && openCount > 0)
openChanged.accept(true);
if (openChanged != null && prevOpenCount > 0 && openCount == 0)
openChanged.accept(false);
blockEntity.sendData();
}
}
public void startOpen(Player player) {
if (player.isSpectator())
return;
if (getWorld().isClientSide)
return;
if (openCount < 0)
openCount = 0;
openCount++;
if (openCount == 1 && openChanged != null)
openChanged.accept(true);
blockEntity.sendData();
}
public void stopOpen(Player player) {
if (player.isSpectator())
return;
if (getWorld().isClientSide)
return;
openCount--;
if (openCount == 0 && openChanged != null)
openChanged.accept(false);
blockEntity.sendData();
}
@Override
public BehaviourType<?> getType() {
return TYPE;
}
}

View file

@ -2,6 +2,7 @@ package com.simibubi.create.foundation.data.recipe;
import java.util.function.Supplier; import java.util.function.Supplier;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllRecipeTypes; import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.AllTags.AllItemTags; import com.simibubi.create.AllTags.AllItemTags;
@ -10,9 +11,15 @@ import net.minecraft.tags.TagKey;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.ItemLike;
import net.minecraftforge.common.Tags.Items;
public class ItemApplicationRecipeGen extends ProcessingRecipeGen { public class ItemApplicationRecipeGen extends ProcessingRecipeGen {
GeneratedRecipe BOUND_CARDBOARD_BLOCK = create("bound_cardboard_inworld",
b -> b.require(AllBlocks.CARDBOARD_BLOCK.asItem())
.require(Items.STRING)
.output(AllBlocks.BOUND_CARDBOARD_BLOCK.asStack()));
GeneratedRecipe ANDESITE = woodCasing("andesite", I::andesiteAlloy, I::andesiteCasing); GeneratedRecipe ANDESITE = woodCasing("andesite", I::andesiteAlloy, I::andesiteCasing);
GeneratedRecipe COPPER = woodCasingTag("copper", I::copper, I::copperCasing); GeneratedRecipe COPPER = woodCasingTag("copper", I::copper, I::copperCasing);
GeneratedRecipe BRASS = woodCasingTag("brass", I::brass, I::brassCasing); GeneratedRecipe BRASS = woodCasingTag("brass", I::brass, I::brassCasing);

View file

@ -121,13 +121,10 @@ public class StandardRecipeGen extends CreateRecipeProvider {
.pattern("CC") .pattern("CC")
.pattern("CC")), .pattern("CC")),
BOUND_CARDBOARD_BLOCK = create(AllBlocks.BOUND_CARDBOARD_BLOCK).returns(8) BOUND_CARDBOARD_BLOCK = create(AllBlocks.BOUND_CARDBOARD_BLOCK).returns(1)
.unlockedBy(I::cardboard) .unlockedBy(I::cardboard)
.viaShaped(b -> b.define('C', AllBlocks.CARDBOARD_BLOCK.get()) .viaShapeless(b -> b.requires(AllBlocks.CARDBOARD_BLOCK.get())
.define('S', Tags.Items.STRING) .requires(Items.STRING)),
.pattern("CCC")
.pattern("CSC")
.pattern("CCC")),
CARDBOARD_FROM_BLOCK = create(AllItems.CARDBOARD).withSuffix("_from_block") CARDBOARD_FROM_BLOCK = create(AllItems.CARDBOARD).withSuffix("_from_block")
.returns(4) .returns(4)

View file

@ -99,11 +99,14 @@ public class InputEvents {
LinkedControllerClientHandler.deactivateInLectern(); LinkedControllerClientHandler.deactivateInLectern();
TrainRelocator.onClicked(event); TrainRelocator.onClicked(event);
if (ChainConveyorInteractionHandler.onUse()) if (ChainConveyorInteractionHandler.onUse()) {
event.setCanceled(true); event.setCanceled(true);
else if (PackagePortTargetSelectionHandler.onUse()) return;
} else if (PackagePortTargetSelectionHandler.onUse()) {
event.setCanceled(true); event.setCanceled(true);
return;
}
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> { DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> {
if (ChainPackageInteractionHandler.onUse()) if (ChainPackageInteractionHandler.onUse())
event.setCanceled(true); event.setCanceled(true);

View file

@ -333,8 +333,10 @@
"create.clipboard.actions": "Clipboard Actions", "create.clipboard.actions": "Clipboard Actions",
"create.clipboard.to_copy": "%1$s to Copy settings", "create.clipboard.to_copy": "%1$s to Copy settings",
"create.clipboard.copy_other_clipboard": "%1$s to Copy entries from this Clipboard",
"create.clipboard.to_paste": "%1$s to Paste settings", "create.clipboard.to_paste": "%1$s to Paste settings",
"create.clipboard.copied_from": "Copying settings from %1$s", "create.clipboard.copied_from": "Copying settings from %1$s",
"create.clipboard.copied_from_clipboard": "Added entries from Clipboard",
"create.clipboard.pasted_to": "Applied settings to %1$s", "create.clipboard.pasted_to": "Applied settings to %1$s",
"create.schematicAndQuill.dimensions": "Schematic Size: %1$sx%2$sx%3$s", "create.schematicAndQuill.dimensions": "Schematic Size: %1$sx%2$sx%3$s",

View file

@ -6,6 +6,28 @@
"particle": "create:block/ladder_andesite" "particle": "create:block/ladder_andesite"
}, },
"elements": [ "elements": [
{
"name": "hoop_right",
"from": [2, 16, 14],
"to": [4, 18, 18],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [14, 4, 16, 6], "texture": "#0", "cullface": "up"},
"south": {"uv": [16, 4, 14, 6], "texture": "#0", "cullface": "up"},
"up": {"uv": [14, 0, 16, 4], "rotation": 180, "texture": "#0", "cullface": "up"}
}
},
{
"name": "hoop_right_backface",
"from": [2, 18, 14],
"to": [4, 16, 18],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 19, 16]},
"faces": {
"north": {"uv": [16, 4, 14, 6], "rotation": 180, "texture": "#0", "cullface": "up"},
"south": {"uv": [14, 4, 16, 6], "rotation": 180, "texture": "#0", "cullface": "up"},
"down": {"uv": [14, 0, 16, 4], "rotation": 180, "texture": "#0", "cullface": "up"}
}
},
{ {
"name": "ladder", "name": "ladder",
"from": [2, 0, 14], "from": [2, 0, 14],
@ -13,8 +35,8 @@
"shade": false, "shade": false,
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": { "faces": {
"east": {"uv": [12, 0, 14, 16], "texture": "#0"}, "east": {"uv": [12, 0, 14, 16], "texture": "#0", "cullface": "south"},
"west": {"uv": [14, 0, 12, 16], "texture": "#0"} "west": {"uv": [14, 0, 12, 16], "texture": "#0", "cullface": "south"}
} }
}, },
{ {
@ -33,8 +55,8 @@
"shade": false, "shade": false,
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]}, "rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": { "faces": {
"east": {"uv": [14, 0, 12, 16], "texture": "#0"}, "east": {"uv": [14, 0, 12, 16], "texture": "#0", "cullface": "south"},
"west": {"uv": [12, 0, 14, 16], "texture": "#0"} "west": {"uv": [12, 0, 14, 16], "texture": "#0", "cullface": "south"}
} }
}, },
{ {
@ -67,42 +89,22 @@
"south": {"uv": [14, 4, 16, 6], "rotation": 180, "texture": "#0", "cullface": "up"}, "south": {"uv": [14, 4, 16, 6], "rotation": 180, "texture": "#0", "cullface": "up"},
"down": {"uv": [14, 0, 16, 4], "rotation": 180, "texture": "#0", "cullface": "up"} "down": {"uv": [14, 0, 16, 4], "rotation": 180, "texture": "#0", "cullface": "up"}
} }
},
{
"name": "hoop_right",
"from": [2, 16, 14],
"to": [4, 18, 18],
"rotation": {"angle": 0, "axis": "y", "origin": [8, 8, 8]},
"faces": {
"north": {"uv": [14, 4, 16, 6], "texture": "#0", "cullface": "up"},
"south": {"uv": [16, 4, 14, 6], "texture": "#0", "cullface": "up"},
"up": {"uv": [14, 0, 16, 4], "rotation": 180, "texture": "#0", "cullface": "up"}
}
},
{
"name": "hoop_right_backface",
"from": [2, 18, 14],
"to": [4, 16, 18],
"rotation": {"angle": 0, "axis": "y", "origin": [13, 19, 16]},
"faces": {
"north": {"uv": [16, 4, 14, 6], "rotation": 180, "texture": "#0", "cullface": "up"},
"south": {"uv": [14, 4, 16, 6], "rotation": 180, "texture": "#0", "cullface": "up"},
"down": {"uv": [14, 0, 16, 4], "rotation": 180, "texture": "#0", "cullface": "up"}
}
} }
], ],
"groups": [ "groups": [
0,
1,
{ {
"name": "Ladder", "name": "Ladder",
"origin": [0, 0, 0], "origin": [0, 0, 0],
"color": 0, "color": 0,
"children": [0, 1] "children": [2, 3]
}, },
{ {
"name": "Hoops", "name": "Hoops",
"origin": [0, 0, 0], "origin": [0, 0, 0],
"color": 0, "color": 0,
"children": [2, 3, 4, 5] "children": [4, 5, 6, 7]
} }
] ]
} }

View file

@ -4,7 +4,7 @@
"textures": { "textures": {
"0": "create:block/post_box/post_box_white", "0": "create:block/post_box/post_box_white",
"1": "create:block/post_box/post_box_white_closed", "1": "create:block/post_box/post_box_white_closed",
"particle": "create:block/post_box/post_box_white" "particle": "#0"
}, },
"elements": [ "elements": [
{ {

View file

@ -1,5 +1,5 @@
{ {
"parent": "create:block/package_postbox/block_open", "parent": "create:block/package_postbox/block_closed",
"textures": { "textures": {
"1": "create:block/post_box/post_box_white_open" "1": "create:block/post_box/post_box_white_open"
} }