diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index d01f7f693..2c0a3e73e 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -53,6 +53,7 @@ b59324f051f21d8ce1a48a08f4721a61a3c414d6 assets/create/blockstates/chute.json e5e3757e99c139d67b2a70288466d8a74d818841 assets/create/blockstates/cogwheel.json 36f54136a7756c97f71bc6b47ef4e8e575e72879 assets/create/blockstates/content_observer.json cfea7283f0ebd2432d67e80a523f2a12e24c0bd5 assets/create/blockstates/controller_rail.json +2a956df55577ce02384af372a15f41ec626b84b0 assets/create/blockstates/copper_backtank.json f8eff64c75fc599e9a44a003f54ae9931cd8ce7c assets/create/blockstates/copper_block.json cabf6b8c59eb0e3d56a0a5a856ca058bb3200882 assets/create/blockstates/copper_casing.json 3355a852cdc717e257ca19b3db836068964733e3 assets/create/blockstates/copper_ore.json @@ -406,21 +407,21 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j 6801fa1f466f172700e573e5b8ee8ee5f9ca4583 assets/create/blockstates/yellow_valve_handle.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.json -0e10e87986a76f18efeb1255f2c025d1aad8f8fa assets/create/lang/en_ud.json -949bac58ef9534024eac6d9082f5d241ce5b91f3 assets/create/lang/en_us.json -26ab60b925659e6daac2e449267d202c68cafe94 assets/create/lang/unfinished/de_de.json -78086e1c23ce96db3a9ec3d304d7418f39ed96fa assets/create/lang/unfinished/es_es.json -62fcca040385405c7655ea6e4b524b2a5e652e4c assets/create/lang/unfinished/es_mx.json -0f527cc6472caec6ec090985c5000e6f7f93208f assets/create/lang/unfinished/fr_fr.json -812f7e66a1d5a06a7b81a41216ee2151e678db69 assets/create/lang/unfinished/it_it.json -8122ad97eac98b1f549a08e623066be1ffd3a29e assets/create/lang/unfinished/ja_jp.json -2c3a1bd28a6a08bec850cc36735204c59045b188 assets/create/lang/unfinished/ko_kr.json -27559156601b57cc2e9fae07a92c7f79a7f4e473 assets/create/lang/unfinished/nl_nl.json -f401f044ec0785b9399d29d2a82f0f998a2a4db7 assets/create/lang/unfinished/pl_pl.json -fa22d8055979012a45a6648009ef0094be4560d8 assets/create/lang/unfinished/pt_br.json -d1b6b069a4547c107c58af4f8837f3cc843e1613 assets/create/lang/unfinished/ru_ru.json -b1650c7805cfe03c6b3b9d43f96964b695f55415 assets/create/lang/unfinished/zh_cn.json -8052350b58969035d456f882fa5624ee16a0024c assets/create/lang/unfinished/zh_tw.json +a6d814f94926d88764c38862cc4ece9c367e023b assets/create/lang/en_ud.json +80e3112fe5ab12a9bbe7c272ab50904eee351f44 assets/create/lang/en_us.json +9b8c1f501cb57098f3ac67c8fd4532246a0c59bb assets/create/lang/unfinished/de_de.json +9d0482aa7a410bdb9b44bb7c1e24bda0343e1306 assets/create/lang/unfinished/es_es.json +6e401a93ef63da54673d125892893468f04931be assets/create/lang/unfinished/es_mx.json +466fe4336c8c45fab9027e18103f8c7ef5c94fef assets/create/lang/unfinished/fr_fr.json +62d87f787237fbf2ace70eafb536cf5283c4dd16 assets/create/lang/unfinished/it_it.json +e83d8ed48ebf35ce6ba3fac10efff80ce9ffc050 assets/create/lang/unfinished/ja_jp.json +448bdf719bd40bb4cb8f013d29e1c65c1277f4ff assets/create/lang/unfinished/ko_kr.json +a4229b2f23223f31a1b869d5a07ff61128ddd2e8 assets/create/lang/unfinished/nl_nl.json +9d1594172ba55eab5b96bd48f5204b082493e5e8 assets/create/lang/unfinished/pl_pl.json +ba271a34ebf9c23c239fcdf94d71623bfcaaefb1 assets/create/lang/unfinished/pt_br.json +0c78fdaa30db8d54122bb055167ee41e4d1e010c assets/create/lang/unfinished/ru_ru.json +899752fff0af288e71fb1f7c771910395c701477 assets/create/lang/unfinished/zh_cn.json +a7189982351b90b3cde43529a0fbdef696bda22e assets/create/lang/unfinished/zh_tw.json 487a511a01b2a4531fb672f917922312db78f958 assets/create/models/block/acacia_window.json b48060cba1a382f373a05bf0039054053eccf076 assets/create/models/block/acacia_window_pane_noside.json 3066db1bf03cffa1a9c7fbacf47ae586632f4eb3 assets/create/models/block/acacia_window_pane_noside_alt.json @@ -1261,6 +1262,7 @@ c1da21be9f1af4f7a2ef4ec9cd92195d65ada316 assets/create/models/item/clockwork_bea dcb09deae110077bcddf090996b51cc66e9a7de3 assets/create/models/item/cogwheel.json 7717e3b21cff39f497f07687c70c1fa40eaa756d assets/create/models/item/content_observer.json 9dbd63c9e1b09a663fd4b83d76e3ab5967086167 assets/create/models/item/controller_rail.json +10397036fc0bb1e18a767cfd7b19b10d805a83fe assets/create/models/item/copper_backtank.json 965a90a882d85dba93b30af9bce7ecf8e68ce747 assets/create/models/item/copper_block.json 759bcb5fe7dfdd628716f9b4ff19a5ab00393381 assets/create/models/item/copper_casing.json c2a320162daa2d24cef969d1d14a0cbd55eb574f assets/create/models/item/copper_ingot.json @@ -1317,6 +1319,8 @@ a215bca75c32124c4cb070065967de1d56c6c57f assets/create/models/item/diorite_cobbl 645a16dfb3619cedf2046e1d0869a27394e6460a assets/create/models/item/diorite_cobblestone_stairs.json 32ebea959ce34458ac2f5ae105f9b415ab18ae4c assets/create/models/item/diorite_cobblestone_wall.json e0ecc0a20cf9dd54ccfc48e0041d5220b2c8316e assets/create/models/item/diorite_pillar.json +6006f88e56d74a3fd75a9dddb25af39075e0482b assets/create/models/item/diving_boots.json +df8cfe7e8eb527329094396e11222e9097e309d7 assets/create/models/item/diving_helmet.json 1bd32eb16dee4bbf313a8813a7f1461ea5feeffe assets/create/models/item/dolomite.json 4c5e12f1acb8c4abc24b9dd80e5cbbf3a5cbd89c assets/create/models/item/dolomite_bricks.json ebb596ce665b085e501ee2fd9a5371ce53e40553 assets/create/models/item/dolomite_bricks_slab.json @@ -2420,6 +2424,7 @@ d76113310fc56eca6382d44df174096f2210d416 data/create/loot_tables/blocks/clutch.j 673ba3a5deae9133b917d16c9eb87fe4c2873c8a data/create/loot_tables/blocks/cogwheel.json 096af6b5df6e87d36cb936eea9b00982a554f4af data/create/loot_tables/blocks/content_observer.json 80c2cb21714651116a71f449368c06bb22e841ce data/create/loot_tables/blocks/controller_rail.json +662b8d41803ef166d20850653b36759de719206c data/create/loot_tables/blocks/copper_backtank.json f38802b919c49f162f102d6e5d94113f05bf4ab1 data/create/loot_tables/blocks/copper_block.json 5a65a18ea787130ac7b8f5652bfa5ed187446649 data/create/loot_tables/blocks/copper_casing.json 31a51237763c374b7cdf39b9b62c14e965871047 data/create/loot_tables/blocks/copper_ore.json diff --git a/src/generated/resources/assets/create/blockstates/copper_backtank.json b/src/generated/resources/assets/create/blockstates/copper_backtank.json new file mode 100644 index 000000000..129133b16 --- /dev/null +++ b/src/generated/resources/assets/create/blockstates/copper_backtank.json @@ -0,0 +1,19 @@ +{ + "variants": { + "facing=north": { + "model": "create:block/copper_backtank/block" + }, + "facing=south": { + "model": "create:block/copper_backtank/block", + "y": 180 + }, + "facing=west": { + "model": "create:block/copper_backtank/block", + "y": 270 + }, + "facing=east": { + "model": "create:block/copper_backtank/block", + "y": 90 + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index 5d42d7042..12c9bc03a 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -54,6 +54,7 @@ "block.create.cogwheel": "\u05DF\u01DD\u01DD\u0265\u028Dbo\u0186", "block.create.content_observer": "\u0279\u01DD\u028C\u0279\u01DDsqO \u0287u\u01DD\u0287uo\u0186", "block.create.controller_rail": "\u05DF\u0131\u0250\u1D1A \u0279\u01DD\u05DF\u05DFo\u0279\u0287uo\u0186", + "block.create.copper_backtank": "\u029Eu\u0250\u0287\u029E\u0254\u0250\u15FA \u0279\u01DDddo\u0186", "block.create.copper_block": "\u0279\u01DDddo\u0186 \u025Fo \u029E\u0254o\u05DF\u15FA", "block.create.copper_casing": "bu\u0131s\u0250\u0186 \u0279\u01DDddo\u0186", "block.create.copper_ore": "\u01DD\u0279O \u0279\u01DDddo\u0186", @@ -431,6 +432,7 @@ "item.create.chocolate_glazed_berries": "s\u01DD\u0131\u0279\u0279\u01DD\u15FA p\u01DDz\u0250\u05DF\u2141 \u01DD\u0287\u0250\u05DFo\u0254o\u0265\u0186", "item.create.chromatic_compound": "punod\u026Fo\u0186 \u0254\u0131\u0287\u0250\u026Fo\u0279\u0265\u0186", "item.create.cinder_flour": "\u0279no\u05DF\u2132 \u0279\u01DDpu\u0131\u0186", + "item.create.copper_backtank": "\u029Eu\u0250\u0287\u029E\u0254\u0250\u15FA \u0279\u01DDddo\u0186", "item.create.copper_ingot": "\u0287obuI \u0279\u01DDddo\u0186", "item.create.copper_nugget": "\u0287\u01DDbbnN \u0279\u01DDddo\u0186", "item.create.copper_sheet": "\u0287\u01DD\u01DD\u0265S \u0279\u01DDddo\u0186", @@ -449,6 +451,8 @@ "item.create.crushed_tin_ore": "\u01DD\u0279O u\u0131\u27D8 p\u01DD\u0265sn\u0279\u0186", "item.create.crushed_uranium_ore": "\u01DD\u0279O \u026Fn\u0131u\u0250\u0279\u2229 p\u01DD\u0265sn\u0279\u0186", "item.create.crushed_zinc_ore": "\u01DD\u0279O \u0254u\u0131Z p\u01DD\u0265sn\u0279\u0186", + "item.create.diving_boots": "s\u0287oo\u15FA bu\u0131\u028C\u0131\u15E1", + "item.create.diving_helmet": "\u0287\u01DD\u026F\u05DF\u01DDH bu\u0131\u028C\u0131\u15E1", "item.create.dough": "\u0265bno\u15E1", "item.create.electron_tube": "\u01DDqn\u27D8 uo\u0279\u0287\u0254\u01DD\u05DF\u018E", "item.create.empty_blaze_burner": "\u0279\u01DDu\u0279n\u15FA \u01DDz\u0250\u05DF\u15FA \u028E\u0287d\u026F\u018E", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index 99e1675fc..329397aea 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -57,6 +57,7 @@ "block.create.cogwheel": "Cogwheel", "block.create.content_observer": "Content Observer", "block.create.controller_rail": "Controller Rail", + "block.create.copper_backtank": "Copper Backtank", "block.create.copper_block": "Block of Copper", "block.create.copper_casing": "Copper Casing", "block.create.copper_ore": "Copper Ore", @@ -437,6 +438,7 @@ "item.create.chocolate_glazed_berries": "Chocolate Glazed Berries", "item.create.chromatic_compound": "Chromatic Compound", "item.create.cinder_flour": "Cinder Flour", + "item.create.copper_backtank": "Copper Backtank", "item.create.copper_ingot": "Copper Ingot", "item.create.copper_nugget": "Copper Nugget", "item.create.copper_sheet": "Copper Sheet", @@ -455,6 +457,8 @@ "item.create.crushed_tin_ore": "Crushed Tin Ore", "item.create.crushed_uranium_ore": "Crushed Uranium Ore", "item.create.crushed_zinc_ore": "Crushed Zinc Ore", + "item.create.diving_boots": "Diving Boots", + "item.create.diving_helmet": "Diving Helmet", "item.create.dough": "Dough", "item.create.electron_tube": "Electron Tube", "item.create.empty_blaze_burner": "Empty Blaze Burner", diff --git a/src/generated/resources/assets/create/lang/unfinished/de_de.json b/src/generated/resources/assets/create/lang/unfinished/de_de.json index d28a04eb6..57b3d2f08 100644 --- a/src/generated/resources/assets/create/lang/unfinished/de_de.json +++ b/src/generated/resources/assets/create/lang/unfinished/de_de.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 935", + "_": "Missing Localizations: 939", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Zahnrad", "block.create.content_observer": "Inhaltsbeobachter", "block.create.controller_rail": "Steuerungsschiene", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Kupfer Block", "block.create.copper_casing": "Kupferrahmen", "block.create.copper_ore": "Kupfererz", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "Schokoladenglasierte Beeren", "item.create.chromatic_compound": "Chromatische Verbindung", "item.create.cinder_flour": "Aschenmehl", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "Kupferbarren", "item.create.copper_nugget": "Kupferklumpen", "item.create.copper_sheet": "Kupferblech", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "Zerkleinertes Zinnerz", "item.create.crushed_uranium_ore": "Zerkleinertes Uranerz", "item.create.crushed_zinc_ore": "Zerkleinertes Zinkerz", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Teig", "item.create.electron_tube": "Elektronenröhre", "item.create.empty_blaze_burner": "Leerer Lohenbrenner", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_es.json b/src/generated/resources/assets/create/lang/unfinished/es_es.json index 838d09dcf..a40f532be 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_es.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_es.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 636", + "_": "Missing Localizations: 640", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Rueda dentada", "block.create.content_observer": "Observador de contenidos", "block.create.controller_rail": "Raíl de control", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Bloque de cobre", "block.create.copper_casing": "Revestidor de caliza", "block.create.copper_ore": "Mineral de cobre", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", "item.create.chromatic_compound": "Compuesto cromático", "item.create.cinder_flour": "Harina de ceniza", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "Lingote de cobre", "item.create.copper_nugget": "Pepita de cobre", "item.create.copper_sheet": "Lámina de cobre", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "Mineral de estaño molido", "item.create.crushed_uranium_ore": "Mineral de uranio molido", "item.create.crushed_zinc_ore": "Mineral de zinc molido", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Masilla", "item.create.electron_tube": "Tubo de electrones", "item.create.empty_blaze_burner": "Quemador de Blaze vacío", diff --git a/src/generated/resources/assets/create/lang/unfinished/es_mx.json b/src/generated/resources/assets/create/lang/unfinished/es_mx.json index 5e4233492..1b3d7fca1 100644 --- a/src/generated/resources/assets/create/lang/unfinished/es_mx.json +++ b/src/generated/resources/assets/create/lang/unfinished/es_mx.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1259", + "_": "Missing Localizations: 1263", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Rueda Dentada", "block.create.content_observer": "Observador de Contenido", "block.create.controller_rail": "Vía de Control", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Bloque de Cobre", "block.create.copper_casing": "Carcasa de Cobre", "block.create.copper_ore": "Mineral de Cobre", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", "item.create.chromatic_compound": "Compuesto Cromático", "item.create.cinder_flour": "Ceniza Molida", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "Lingote de Cobre", "item.create.copper_nugget": "Pepita de Cobre", "item.create.copper_sheet": "Lámina de Cobre", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "Mineral de Estaño Molido", "item.create.crushed_uranium_ore": "Mineral de Uranio Molido", "item.create.crushed_zinc_ore": "Mineral de Zinc Molido", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Masa", "item.create.electron_tube": "Válvula Electrónica", "item.create.empty_blaze_burner": "Quemador de Blaze Vacío", diff --git a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json index 5dbf5571b..f012ee374 100644 --- a/src/generated/resources/assets/create/lang/unfinished/fr_fr.json +++ b/src/generated/resources/assets/create/lang/unfinished/fr_fr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1187", + "_": "Missing Localizations: 1191", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Roue dentée", "block.create.content_observer": "Observateur de contenu", "block.create.controller_rail": "Rails controlleurs", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Bloc de cuivre", "block.create.copper_casing": "Revêtement en cuivre", "block.create.copper_ore": "Minerai de cuivre", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", "item.create.chromatic_compound": "Composé chromatique", "item.create.cinder_flour": "Farine de braise", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "Lingot de cuivre", "item.create.copper_nugget": "Pépite de cuivre", "item.create.copper_sheet": "Plaques de cuivre", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "Etain concassé", "item.create.crushed_uranium_ore": "Uranium concassé", "item.create.crushed_zinc_ore": "Zinc concassé", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Pâte", "item.create.electron_tube": "Tube électronique", "item.create.empty_blaze_burner": "Brûleur à blaze vide", diff --git a/src/generated/resources/assets/create/lang/unfinished/it_it.json b/src/generated/resources/assets/create/lang/unfinished/it_it.json index 82e91b1f4..372763b7c 100644 --- a/src/generated/resources/assets/create/lang/unfinished/it_it.json +++ b/src/generated/resources/assets/create/lang/unfinished/it_it.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 653", + "_": "Missing Localizations: 657", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Ruota dentata", "block.create.content_observer": "Osservatore dei contenuti", "block.create.controller_rail": "Binario di controllo", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Blocco di rame", "block.create.copper_casing": "Involucro di rame", "block.create.copper_ore": "Rame grezzo", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", "item.create.chromatic_compound": "Composto cromatico", "item.create.cinder_flour": "Cenere farinosa", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "Lingotto di rame", "item.create.copper_nugget": "Pepita di rame", "item.create.copper_sheet": "Lamiera di rame", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "Stagno grezzo frantumato", "item.create.crushed_uranium_ore": "Uranio grezzo frantumato", "item.create.crushed_zinc_ore": "Zinco grezzo frantumato", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Impasto", "item.create.electron_tube": "Valvola", "item.create.empty_blaze_burner": "Inceneritore di blaze vuoto", diff --git a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json index bae1281d3..3d36576f0 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ja_jp.json +++ b/src/generated/resources/assets/create/lang/unfinished/ja_jp.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 17", + "_": "Missing Localizations: 21", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "歯車", "block.create.content_observer": "コンテンツオブザーバー", "block.create.controller_rail": "コントローラーレール", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "銅ブロック", "block.create.copper_casing": "銅ケーシング", "block.create.copper_ore": "銅鉱石", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "チョコレートグレーズドベリー", "item.create.chromatic_compound": "色彩の化合物", "item.create.cinder_flour": "ネザーラックの粉", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "銅インゴット", "item.create.copper_nugget": "銅塊", "item.create.copper_sheet": "銅板", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "砕いた錫鉱石", "item.create.crushed_uranium_ore": "砕いたウラン鉱石", "item.create.crushed_zinc_ore": "砕いた亜鉛鉱石", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "生地", "item.create.electron_tube": "電子管", "item.create.empty_blaze_burner": "空のブレイズバーナー", diff --git a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json index ee9042656..27b30614d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ko_kr.json +++ b/src/generated/resources/assets/create/lang/unfinished/ko_kr.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 706", + "_": "Missing Localizations: 710", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "톱니바퀴", "block.create.content_observer": "정보 감지기", "block.create.controller_rail": "방향 레일", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "구리 블록", "block.create.copper_casing": "구리 케이스", "block.create.copper_ore": "구리 광석", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", "item.create.chromatic_compound": "색채 혼합물", "item.create.cinder_flour": "잿가루", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "구리 주괴", "item.create.copper_nugget": "구리 조각", "item.create.copper_sheet": "구리 판", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "분쇄된 아연 광석", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "반죽", "item.create.electron_tube": "전지 튜브", "item.create.empty_blaze_burner": "빈 블레이즈 버너", diff --git a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json index a1da4d3be..b591fd3c1 100644 --- a/src/generated/resources/assets/create/lang/unfinished/nl_nl.json +++ b/src/generated/resources/assets/create/lang/unfinished/nl_nl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1570", + "_": "Missing Localizations: 1574", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Tandwiel", "block.create.content_observer": "UNLOCALIZED: Content Observer", "block.create.controller_rail": "UNLOCALIZED: Controller Rail", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "UNLOCALIZED: Block of Copper", "block.create.copper_casing": "UNLOCALIZED: Copper Casing", "block.create.copper_ore": "UNLOCALIZED: Copper Ore", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "Koperstaaf", "item.create.copper_nugget": "Koper klompje", "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Deeg", "item.create.electron_tube": "UNLOCALIZED: Electron Tube", "item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner", diff --git a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json index b907c7c33..6c650e81d 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pl_pl.json +++ b/src/generated/resources/assets/create/lang/unfinished/pl_pl.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 31", + "_": "Missing Localizations: 35", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Koło zębate", "block.create.content_observer": "Detektor zawartości", "block.create.controller_rail": "Tory sterujące", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Blok miedzi", "block.create.copper_casing": "Miedziana Obudowa", "block.create.copper_ore": "Ruda miedzi", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "Jagody w czekoladzie", "item.create.chromatic_compound": "Związek chromatyczny", "item.create.cinder_flour": "Rozżarzona mąka", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "Sztabka miedzi", "item.create.copper_nugget": "Bryłka miedzi", "item.create.copper_sheet": "Arkusz miedzi", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "Rozkruszona ruda cyny", "item.create.crushed_uranium_ore": "Rozkruszona ruda uranu", "item.create.crushed_zinc_ore": "Rozkruszona ruda cynku", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Ciasto", "item.create.electron_tube": "Lampa elektronowa", "item.create.empty_blaze_burner": "Pusty płomienny palnik", diff --git a/src/generated/resources/assets/create/lang/unfinished/pt_br.json b/src/generated/resources/assets/create/lang/unfinished/pt_br.json index 338fb9e10..8dba2f866 100644 --- a/src/generated/resources/assets/create/lang/unfinished/pt_br.json +++ b/src/generated/resources/assets/create/lang/unfinished/pt_br.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 1622", + "_": "Missing Localizations: 1626", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Roda Dentada", "block.create.content_observer": "UNLOCALIZED: Content Observer", "block.create.controller_rail": "UNLOCALIZED: Controller Rail", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "UNLOCALIZED: Block of Copper", "block.create.copper_casing": "UNLOCALIZED: Copper Casing", "block.create.copper_ore": "UNLOCALIZED: Copper Ore", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", "item.create.chromatic_compound": "UNLOCALIZED: Chromatic Compound", "item.create.cinder_flour": "UNLOCALIZED: Cinder Flour", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "UNLOCALIZED: Copper Ingot", "item.create.copper_nugget": "UNLOCALIZED: Copper Nugget", "item.create.copper_sheet": "UNLOCALIZED: Copper Sheet", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "UNLOCALIZED: Crushed Tin Ore", "item.create.crushed_uranium_ore": "UNLOCALIZED: Crushed Uranium Ore", "item.create.crushed_zinc_ore": "UNLOCALIZED: Crushed Zinc Ore", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Massa", "item.create.electron_tube": "UNLOCALIZED: Electron Tube", "item.create.empty_blaze_burner": "UNLOCALIZED: Empty Blaze Burner", diff --git a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json index c03df85e7..d3a7127fe 100644 --- a/src/generated/resources/assets/create/lang/unfinished/ru_ru.json +++ b/src/generated/resources/assets/create/lang/unfinished/ru_ru.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 550", + "_": "Missing Localizations: 554", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "Шестерня", "block.create.content_observer": "Наблюдетель за содержимым", "block.create.controller_rail": "Контролирующая рельса", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "Медный блок", "block.create.copper_casing": "Медный корпус", "block.create.copper_ore": "Медная руда", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "Ягоды в шоколадной глазури", "item.create.chromatic_compound": "Хроматический компаунд", "item.create.cinder_flour": "Незераковая пыль", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "Медный слиток", "item.create.copper_nugget": "Кусочек меди", "item.create.copper_sheet": "Медный лист", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "Дроблёная оловянная руда", "item.create.crushed_uranium_ore": "Дроблёная урановая руда", "item.create.crushed_zinc_ore": "Дроблёная цинковая руда", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "Тесто", "item.create.electron_tube": "Электронная лампа", "item.create.empty_blaze_burner": "Пустая горелека Всполоха", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json index 15c2d7434..3c39e3730 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_cn.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_cn.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 36", + "_": "Missing Localizations: 40", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "齿轮", "block.create.content_observer": "物品侦测器", "block.create.controller_rail": "控制铁轨", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "铜块", "block.create.copper_casing": "铜机壳", "block.create.copper_ore": "铜矿石", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "巧克力包层浆果", "item.create.chromatic_compound": "异彩化合物", "item.create.cinder_flour": "下界面粉", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "铜锭", "item.create.copper_nugget": "铜粒", "item.create.copper_sheet": "铜板", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "粉碎锡矿石", "item.create.crushed_uranium_ore": "粉碎铀矿石", "item.create.crushed_zinc_ore": "粉碎锌矿石", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "面团", "item.create.electron_tube": "电子管", "item.create.empty_blaze_burner": "空的烈焰人燃烧室", diff --git a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json index 2beea3cc9..d74d17d2a 100644 --- a/src/generated/resources/assets/create/lang/unfinished/zh_tw.json +++ b/src/generated/resources/assets/create/lang/unfinished/zh_tw.json @@ -1,5 +1,5 @@ { - "_": "Missing Localizations: 655", + "_": "Missing Localizations: 659", "_": "->------------------------] Game Elements [------------------------<-", @@ -58,6 +58,7 @@ "block.create.cogwheel": "齒輪", "block.create.content_observer": "物品偵測器", "block.create.controller_rail": "控制鐵軌", + "block.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "block.create.copper_block": "銅磚", "block.create.copper_casing": "銅機殼", "block.create.copper_ore": "銅礦石", @@ -438,6 +439,7 @@ "item.create.chocolate_glazed_berries": "UNLOCALIZED: Chocolate Glazed Berries", "item.create.chromatic_compound": "異彩化合物", "item.create.cinder_flour": "地獄麵粉", + "item.create.copper_backtank": "UNLOCALIZED: Copper Backtank", "item.create.copper_ingot": "銅錠", "item.create.copper_nugget": "銅粒", "item.create.copper_sheet": "銅板", @@ -456,6 +458,8 @@ "item.create.crushed_tin_ore": "碎狀錫礦石", "item.create.crushed_uranium_ore": "碎狀鈾礦石", "item.create.crushed_zinc_ore": "碎狀鋅礦石", + "item.create.diving_boots": "UNLOCALIZED: Diving Boots", + "item.create.diving_helmet": "UNLOCALIZED: Diving Helmet", "item.create.dough": "麵團", "item.create.electron_tube": "真空管", "item.create.empty_blaze_burner": "空的烈焰使者動力爐", diff --git a/src/generated/resources/assets/create/models/item/copper_backtank.json b/src/generated/resources/assets/create/models/item/copper_backtank.json new file mode 100644 index 000000000..67c8a0d7e --- /dev/null +++ b/src/generated/resources/assets/create/models/item/copper_backtank.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/copper_backtank/item" +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diving_boots.json b/src/generated/resources/assets/create/models/item/diving_boots.json new file mode 100644 index 000000000..88c9dccb5 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/diving_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "create:item/diving_boots" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/create/models/item/diving_helmet.json b/src/generated/resources/assets/create/models/item/diving_helmet.json new file mode 100644 index 000000000..f287c2ca8 --- /dev/null +++ b/src/generated/resources/assets/create/models/item/diving_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "create:item/diving_helmet" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/create/advancements/aesthetics.json b/src/generated/resources/data/create/advancements/aesthetics.json index 59a86f429..d723cbe38 100644 --- a/src/generated/resources/data/create/advancements/aesthetics.json +++ b/src/generated/resources/data/create/advancements/aesthetics.json @@ -28,8 +28,8 @@ "trigger": "create:bracket_apply", "conditions": { "accepted_entries": [ - "create:large_cogwheel", - "create:cogwheel" + "create:cogwheel", + "create:large_cogwheel" ] } }, diff --git a/src/generated/resources/data/create/loot_tables/blocks/copper_backtank.json b/src/generated/resources/data/create/loot_tables/blocks/copper_backtank.json new file mode 100644 index 000000000..b5466bfc9 --- /dev/null +++ b/src/generated/resources/data/create/loot_tables/blocks/copper_backtank.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:copy_name", + "source": "block_entity" + }, + { + "function": "minecraft:copy_nbt", + "source": "block_entity", + "ops": [ + { + "source": "Air", + "target": "Air", + "op": "replace" + } + ] + } + ], + "name": "create:copper_backtank" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/AllBlockPartials.java b/src/main/java/com/simibubi/create/AllBlockPartials.java index 102fc4412..d7402294c 100644 --- a/src/main/java/com/simibubi/create/AllBlockPartials.java +++ b/src/main/java/com/simibubi/create/AllBlockPartials.java @@ -98,6 +98,8 @@ public class AllBlockPartials { GOGGLES = get("goggles"), EJECTOR_TOP = get("weighted_ejector/top"), + + COPPER_BACKTANK_SHAFT = get("copper_backtank/block_shaft_input"), COUPLING_ATTACHMENT = getEntity("minecart_coupling/attachment"), COUPLING_RING = getEntity("minecart_coupling/ring"), diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index bf7e9dc14..a4de234f8 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -115,6 +115,7 @@ import com.simibubi.create.content.contraptions.relays.encased.GearshiftBlock; import com.simibubi.create.content.contraptions.relays.gauge.GaugeBlock; import com.simibubi.create.content.contraptions.relays.gauge.GaugeGenerator; import com.simibubi.create.content.contraptions.relays.gearbox.GearboxBlock; +import com.simibubi.create.content.curiosities.armor.CopperBacktankBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelBlock; import com.simibubi.create.content.logistics.block.belts.tunnel.BrassTunnelCTBehaviour; @@ -180,6 +181,15 @@ import net.minecraft.data.ShapedRecipeBuilder; import net.minecraft.item.DyeColor; import net.minecraft.item.Item; import net.minecraft.item.Rarity; +import net.minecraft.loot.ConstantRange; +import net.minecraft.loot.ItemLootEntry; +import net.minecraft.loot.LootPool; +import net.minecraft.loot.LootTable; +import net.minecraft.loot.LootTable.Builder; +import net.minecraft.loot.conditions.ILootCondition.IBuilder; +import net.minecraft.loot.conditions.SurvivesExplosion; +import net.minecraft.loot.functions.CopyName; +import net.minecraft.loot.functions.CopyNbt; import net.minecraft.state.properties.PistonType; import net.minecraft.tags.BlockTags; import net.minecraft.tags.ItemTags; @@ -465,7 +475,7 @@ public class AllBlocks { .loot((lt, block) -> lt.registerLootTable(block, BlazeBurnerBlock.buildLootTable())) .blockstate((c, p) -> p.simpleBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) .item(BlazeBurnerBlockItem::withBlaze) - .model(AssetLookup.customItemModel("blaze_burner", "block_with_blaze")) + .model(AssetLookup.customBlockItemModel("blaze_burner", "block_with_blaze")) .build() .register(); @@ -633,7 +643,7 @@ public class AllBlocks { .onRegister(CreateRegistrate.blockModel(() -> FluidTankModel::standard)) .addLayer(() -> RenderType::getCutoutMipped) .item(FluidTankItem::new) - .model(AssetLookup.customItemModel("_", "block_single_window")) + .model(AssetLookup.customBlockItemModel("_", "block_single_window")) .build() .register(); @@ -1272,6 +1282,30 @@ public class AllBlocks { .transform(customItemModel("diodes", "latch_off")) .register(); + // Curiosities + + static { + REGISTRATE.startSection(AllSections.CURIOSITIES); + } + + public static final BlockEntry COPPER_BACKTANK = + REGISTRATE.block("copper_backtank", CopperBacktankBlock::new) + .initialProperties(SharedProperties::softMetal) + .blockstate((c, p) -> p.horizontalBlock(c.getEntry(), AssetLookup.partialBaseModel(c, p))) + .transform(StressConfigDefaults.setImpact(4.0)) + .loot((lt, block) -> { + Builder builder = LootTable.builder(); + IBuilder survivesExplosion = SurvivesExplosion.builder(); + lt.registerLootTable(block, builder.addLootPool(LootPool.builder() + .acceptCondition(survivesExplosion) + .rolls(ConstantRange.of(1)) + .addEntry(ItemLootEntry.builder(AllItems.COPPER_BACKTANK.get()) + .acceptFunction(CopyName.builder(CopyName.Source.BLOCK_ENTITY)) + .acceptFunction(CopyNbt.func_215881_a(CopyNbt.Source.BLOCK_ENTITY) + .func_216056_a("Air", "Air"))))); + }) + .register(); + // Materials static { diff --git a/src/main/java/com/simibubi/create/AllItems.java b/src/main/java/com/simibubi/create/AllItems.java index 9d68df344..a525b8388 100644 --- a/src/main/java/com/simibubi/create/AllItems.java +++ b/src/main/java/com/simibubi/create/AllItems.java @@ -29,6 +29,10 @@ import com.simibubi.create.content.curiosities.CombustibleItem; import com.simibubi.create.content.curiosities.RefinedRadianceItem; import com.simibubi.create.content.curiosities.ShadowSteelItem; import com.simibubi.create.content.curiosities.TreeFertilizerItem; +import com.simibubi.create.content.curiosities.armor.CopperArmorItem; +import com.simibubi.create.content.curiosities.armor.CopperBacktankItem; +import com.simibubi.create.content.curiosities.armor.DivingBootsItem; +import com.simibubi.create.content.curiosities.armor.DivingHelmetItem; import com.simibubi.create.content.curiosities.symmetry.SymmetryWandItem; import com.simibubi.create.content.curiosities.symmetry.client.SymmetryWandModel; import com.simibubi.create.content.curiosities.tools.ExtendoGripItem; @@ -47,6 +51,7 @@ import com.simibubi.create.foundation.item.TagDependentIngredientItem; import com.simibubi.create.foundation.item.TooltipHelper; import com.tterrag.registrate.util.entry.ItemEntry; +import net.minecraft.item.BlockItem; import net.minecraft.item.Food; import net.minecraft.item.Item; import net.minecraft.item.Rarity; @@ -168,12 +173,12 @@ public class AllItems { public static final ItemEntry VERTICAL_GEARBOX = REGISTRATE.item("vertical_gearbox", VerticalGearboxItem::new) - .model(AssetLookup.customItemModel("gearbox", "item_vertical")) + .model(AssetLookup.customBlockItemModel("gearbox", "item_vertical")) .register(); public static final ItemEntry EMPTY_BLAZE_BURNER = REGISTRATE.item("empty_blaze_burner", BlazeBurnerBlockItem::empty) - .model(AssetLookup.customItemModel("blaze_burner", "block")) + .model(AssetLookup.customBlockItemModel("blaze_burner", "block")) .register(); public static final ItemEntry GOGGLES = REGISTRATE.item("goggles", GogglesItem::new) @@ -208,13 +213,13 @@ public class AllItems { .transform(CreateRegistrate.customRenderedItem(() -> ExtendoGripModel::new)) .model(AssetLookup.itemModelWithPartials()) .register(); - + public static final ItemEntry WAND_OF_SYMMETRY = REGISTRATE.item("wand_of_symmetry", SymmetryWandItem::new) .transform(CreateRegistrate.customRenderedItem(() -> SymmetryWandModel::new)) .model(AssetLookup.itemModelWithPartials()) .register(); - + public static final ItemEntry WORLDSHAPER = REGISTRATE.item("handheld_worldshaper", WorldshaperItem::new) .properties(p -> p.rarity(Rarity.EPIC)) @@ -260,6 +265,19 @@ public class AllItems { REGISTRATE.item("tree_fertilizer", TreeFertilizerItem::new) .register(); + public static final ItemEntry + + DIVING_HELMET = REGISTRATE.item("diving_helmet", DivingHelmetItem::new) + .register(), + + COPPER_BACKTANK = REGISTRATE + .item("copper_backtank", p -> new CopperBacktankItem(p, new BlockItem(AllBlocks.COPPER_BACKTANK.get(), p))) + .model(AssetLookup.customGenericItemModel("_", "item")) + .register(), + + DIVING_BOOTS = REGISTRATE.item("diving_boots", DivingBootsItem::new) + .register(); + // Schematics static { diff --git a/src/main/java/com/simibubi/create/AllShapes.java b/src/main/java/com/simibubi/create/AllShapes.java index 3afa8656a..6ffb1c167 100644 --- a/src/main/java/com/simibubi/create/AllShapes.java +++ b/src/main/java/com/simibubi/create/AllShapes.java @@ -141,6 +141,8 @@ public class AllShapes { BASIN_COLLISION_SHAPE = shape(0, 2, 0, 16, 13, 16).erase(2, 5, 2, 14, 16, 14) .add(2, 0, 2, 14, 2, 14) .build(), + BACKTANK = shape(3, 0, 3, 13, 12, 13).add(SIX_VOXEL_POLE.get(Axis.Y)) + .build(), SPEED_CONTROLLER = shape(0, 0, 0, 16, 4, 16).add(1, 1, 1, 15, 13, 15) .add(0, 8, 0, 16, 14, 16) .build(), diff --git a/src/main/java/com/simibubi/create/AllTileEntities.java b/src/main/java/com/simibubi/create/AllTileEntities.java index 33476b929..329786289 100644 --- a/src/main/java/com/simibubi/create/AllTileEntities.java +++ b/src/main/java/com/simibubi/create/AllTileEntities.java @@ -116,6 +116,9 @@ import com.simibubi.create.content.contraptions.relays.gearbox.GearboxInstance; import com.simibubi.create.content.contraptions.relays.gearbox.GearboxRenderer; import com.simibubi.create.content.contraptions.relays.gearbox.GearboxTileEntity; import com.simibubi.create.content.contraptions.relays.gearbox.GearshiftTileEntity; +import com.simibubi.create.content.curiosities.armor.CopperBacktankInstance; +import com.simibubi.create.content.curiosities.armor.CopperBacktankRenderer; +import com.simibubi.create.content.curiosities.armor.CopperBacktankTileEntity; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelInstance; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelRenderer; import com.simibubi.create.content.logistics.block.belts.tunnel.BeltTunnelTileEntity; @@ -654,6 +657,13 @@ public class AllTileEntities { .validBlocks(AllBlocks.ADJUSTABLE_PULSE_REPEATER) .renderer(() -> AdjustableRepeaterRenderer::new) .register(); + + public static final TileEntityEntry COPPER_BACKTANK = Create.registrate() + .tileEntity("copper_backtank", CopperBacktankTileEntity::new) + .instance(() -> CopperBacktankInstance::new) + .validBlocks(AllBlocks.COPPER_BACKTANK) + .renderer(() -> CopperBacktankRenderer::new) + .register(); public static void register() {} } diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index 2940b484d..a5447788e 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -10,6 +10,7 @@ import javax.annotation.Nullable; import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.content.contraptions.components.structureMovement.render.ContraptionRenderDispatcher; import com.simibubi.create.content.contraptions.relays.encased.CasingConnectivity; +import com.simibubi.create.content.curiosities.armor.CopperBacktankArmorLayer; import com.simibubi.create.content.schematics.ClientSchematicLoader; import com.simibubi.create.content.schematics.client.SchematicAndQuillHandler; import com.simibubi.create.content.schematics.client.SchematicHandler; @@ -118,6 +119,10 @@ public class CreateClient { ((IReloadableResourceManager) resourceManager).addReloadListener(new ResourceReloadHandler()); AllBlockPartials.clientInit(); + + event.enqueueWork(() -> { + CopperBacktankArmorLayer.register(); + }); } public static void onTextureStitch(TextureStitchEvent.Pre event) { diff --git a/src/main/java/com/simibubi/create/content/AllSections.java b/src/main/java/com/simibubi/create/content/AllSections.java index 81569f408..5b04c6380 100644 --- a/src/main/java/com/simibubi/create/content/AllSections.java +++ b/src/main/java/com/simibubi/create/content/AllSections.java @@ -21,13 +21,13 @@ public enum AllSections { /** Decorative blocks */ PALETTES(Palette.Green), + + /** Helpful gadgets and other shenanigans */ + CURIOSITIES(Palette.Purple), /** Base materials, ingredients and tools */ MATERIALS(Palette.Green), - /** Helpful gadgets and other shenanigans */ - CURIOSITIES(Palette.Purple), - /** Fallback section */ UNASSIGNED(Palette.Gray) diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java index 444c963cf..f942d4983 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/BeltBlock.java @@ -187,6 +187,10 @@ public class BeltBlock extends HorizontalKineticBlock implements ITE { + return Ingredient.fromItems(AllItems.COPPER_INGOT.get()); + }) + + ; + + private static final int[] MAX_DAMAGE_ARRAY = new int[] { 13, 15, 16, 11 }; + private final String name; + private final int maxDamageFactor; + private final int[] damageReductionAmountArray; + private final int enchantability; + private final SoundEvent soundEvent; + private final float toughness; + private final float knockbackResistance; + private final LazyValue repairMaterial; + + private AllArmorMaterials(String p_i231593_3_, int p_i231593_4_, int[] p_i231593_5_, int p_i231593_6_, + SoundEvent p_i231593_7_, float p_i231593_8_, float p_i231593_9_, Supplier p_i231593_10_) { + this.name = p_i231593_3_; + this.maxDamageFactor = p_i231593_4_; + this.damageReductionAmountArray = p_i231593_5_; + this.enchantability = p_i231593_6_; + this.soundEvent = p_i231593_7_; + this.toughness = p_i231593_8_; + this.knockbackResistance = p_i231593_9_; + this.repairMaterial = new LazyValue<>(p_i231593_10_); + } + + public int getDurability(EquipmentSlotType p_200896_1_) { + return MAX_DAMAGE_ARRAY[p_200896_1_.getIndex()] * this.maxDamageFactor; + } + + public int getDamageReductionAmount(EquipmentSlotType p_200902_1_) { + return this.damageReductionAmountArray[p_200902_1_.getIndex()]; + } + + public int getEnchantability() { + return this.enchantability; + } + + public SoundEvent getSoundEvent() { + return this.soundEvent; + } + + public Ingredient getRepairMaterial() { + return this.repairMaterial.getValue(); + } + + @OnlyIn(Dist.CLIENT) + public String getName() { + return this.name; + } + + public float getToughness() { + return this.toughness; + } + + public float getKnockbackResistance() { + return this.knockbackResistance; + } + +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperArmorItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperArmorItem.java new file mode 100644 index 000000000..01ccb623e --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperArmorItem.java @@ -0,0 +1,28 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.simibubi.create.Create; + +import net.minecraft.entity.Entity; +import net.minecraft.inventory.EquipmentSlotType; +import net.minecraft.item.ArmorItem; +import net.minecraft.item.ItemStack; + +public class CopperArmorItem extends ArmorItem { + + public CopperArmorItem(EquipmentSlotType p_i48534_2_, Properties p_i48534_3_) { + super(AllArmorMaterials.COPPER, p_i48534_2_, p_i48534_3_); + } + + public boolean isWornBy(Entity entity) { + for (ItemStack itemStack : entity.getArmorInventoryList()) + if (itemStack.getItem() == this) + return true; + return false; + } + + @Override + public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlotType slot, String type) { + return String.format("%s:textures/models/armor/copper.png", Create.ID); + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java new file mode 100644 index 000000000..7e307582c --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankArmorLayer.java @@ -0,0 +1,81 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.AllBlocks; +import com.simibubi.create.AllItems; +import com.simibubi.create.CreateClient; +import com.simibubi.create.foundation.render.SuperByteBuffer; + +import net.minecraft.block.BlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.IRenderTypeBuffer.Impl; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRendererManager; +import net.minecraft.client.renderer.entity.LivingRenderer; +import net.minecraft.client.renderer.entity.layers.LayerRenderer; +import net.minecraft.client.renderer.entity.model.BipedModel; +import net.minecraft.client.renderer.entity.model.EntityModel; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.Pose; +import net.minecraft.util.Direction; + +public class CopperBacktankArmorLayer> extends LayerRenderer { + + private LivingRenderer renderer; + + public CopperBacktankArmorLayer(LivingRenderer renderer) { + super(renderer); + this.renderer = renderer; + renderer.addLayer(this); + } + + @Override + public void render(MatrixStack ms, IRenderTypeBuffer buffer, int light, LivingEntity entity, float yaw, float pitch, + float pt, float p_225628_8_, float p_225628_9_, float p_225628_10_) { + + if (entity.getPose() == Pose.SLEEPING) + return; + if (!AllItems.COPPER_BACKTANK.get() + .isWornBy(entity)) + return; + + M entityModel = renderer.getEntityModel(); + if (!(entityModel instanceof BipedModel)) + return; + + ms.push(); + BipedModel model = (BipedModel) entityModel; + BlockState renderedState = AllBlocks.COPPER_BACKTANK.getDefaultState() + .with(CopperBacktankBlock.HORIZONTAL_FACING, Direction.SOUTH); + RenderType renderType = RenderType.getSolid(); + SuperByteBuffer backtank = CreateClient.bufferCache.renderBlock(renderedState); + + model.bipedBody.rotate(ms); + ms.translate(-1 / 2f, 10 / 16f, 1f); + ms.scale(1, -1, -1); + + backtank.light(light) + .renderInto(ms, buffer.getBuffer(renderType)); + if (buffer instanceof Impl) + ((Impl) buffer).draw(renderType); + ms.pop(); + + } + + public static void register() { + EntityRendererManager renderManager = Minecraft.getInstance() + .getRenderManager(); + registerOn(renderManager.playerRenderer); + for (EntityRenderer renderer : renderManager.renderers.values()) + registerOn(renderer); + } + + private static void registerOn(EntityRenderer entityRenderer) { + if (!(entityRenderer instanceof LivingRenderer)) + return; + new CopperBacktankArmorLayer<>((LivingRenderer) entityRenderer); + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankBlock.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankBlock.java new file mode 100644 index 000000000..028b40d53 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankBlock.java @@ -0,0 +1,111 @@ +package com.simibubi.create.content.curiosities.armor; + +import java.util.Optional; + +import com.simibubi.create.AllItems; +import com.simibubi.create.AllShapes; +import com.simibubi.create.AllTileEntities; +import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock; +import com.simibubi.create.foundation.block.ITE; + +import net.minecraft.block.BlockState; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.EquipmentSlotType; +import net.minecraft.item.BlockItem; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.Direction; +import net.minecraft.util.Direction.Axis; +import net.minecraft.util.Hand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockRayTraceResult; +import net.minecraft.util.math.shapes.ISelectionContext; +import net.minecraft.util.math.shapes.VoxelShape; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.world.IBlockReader; +import net.minecraft.world.IWorldReader; +import net.minecraft.world.World; +import net.minecraftforge.common.util.FakePlayer; + +public class CopperBacktankBlock extends HorizontalKineticBlock implements ITE { + + public CopperBacktankBlock(Properties properties) { + super(properties); + } + + @Override + public boolean hasShaftTowards(IWorldReader world, BlockPos pos, BlockState state, Direction face) { + return face == Direction.UP; + } + + @Override + public Axis getRotationAxis(BlockState state) { + return Axis.Y; + } + + @Override + public void onBlockPlacedBy(World worldIn, BlockPos pos, BlockState state, LivingEntity placer, ItemStack stack) { + super.onBlockPlacedBy(worldIn, pos, state, placer, stack); + if (worldIn.isRemote) + return; + if (stack == null) + return; + withTileEntityDo(worldIn, pos, te -> { + te.setAirLevel(stack.getOrCreateTag() + .getInt("Air")); + if (stack.hasDisplayName()) + te.setCustomName(stack.getDisplayName()); + }); + } + + @Override + public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand p_225533_5_, + BlockRayTraceResult p_225533_6_) { + if (player instanceof FakePlayer) + return ActionResultType.PASS; + if (player.getHeldItemMainhand().getItem() instanceof BlockItem) + return ActionResultType.PASS; + if (!player.getItemStackFromSlot(EquipmentSlotType.CHEST) + .isEmpty()) + return ActionResultType.PASS; + if (!world.isRemote) { + player.setItemStackToSlot(EquipmentSlotType.CHEST, getItem(world, pos, state)); + world.destroyBlock(pos, false); + } + return ActionResultType.SUCCESS; + } + + @Override + public ItemStack getItem(IBlockReader p_185473_1_, BlockPos p_185473_2_, BlockState p_185473_3_) { + ItemStack item = AllItems.COPPER_BACKTANK.asStack(); + Optional tileEntityOptional = getTileEntityOptional(p_185473_1_, p_185473_2_); + int air = tileEntityOptional.map(CopperBacktankTileEntity::getAirLevel) + .orElse(0); + ITextComponent customName = tileEntityOptional.map(CopperBacktankTileEntity::getCustomName) + .orElse(null); + item.getOrCreateTag() + .putInt("Air", air); + if (customName != null) + item.setDisplayName(customName); + return item; + } + + @Override + public VoxelShape getShape(BlockState p_220053_1_, IBlockReader p_220053_2_, BlockPos p_220053_3_, + ISelectionContext p_220053_4_) { + return AllShapes.BACKTANK; + } + + @Override + public TileEntity createTileEntity(BlockState state, IBlockReader world) { + return AllTileEntities.COPPER_BACKTANK.create(); + } + + @Override + public Class getTileEntityClass() { + return CopperBacktankTileEntity.class; + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankInstance.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankInstance.java new file mode 100644 index 000000000..067dca850 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankInstance.java @@ -0,0 +1,21 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.contraptions.base.RotatingData; +import com.simibubi.create.content.contraptions.base.SingleRotatingInstance; +import com.simibubi.create.foundation.render.backend.instancing.InstancedModel; +import com.simibubi.create.foundation.render.backend.instancing.InstancedTileRenderer; + +public class CopperBacktankInstance extends SingleRotatingInstance { + + public CopperBacktankInstance(InstancedTileRenderer modelManager, KineticTileEntity tile) { + super(modelManager, tile); + } + + @Override + protected InstancedModel getModel() { + return getRotatingMaterial().getModel(AllBlockPartials.COPPER_BACKTANK_SHAFT, blockState); + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankItem.java new file mode 100644 index 000000000..571f8097d --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankItem.java @@ -0,0 +1,67 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.simibubi.create.foundation.config.AllConfigs; + +import net.minecraft.inventory.EquipmentSlotType; +import net.minecraft.item.BlockItem; +import net.minecraft.item.ItemGroup; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUseContext; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.ActionResultType; +import net.minecraft.util.NonNullList; +import net.minecraft.util.math.MathHelper; + +public class CopperBacktankItem extends CopperArmorItem { + + private BlockItem blockItem; + + public CopperBacktankItem(Properties p_i48534_3_, BlockItem blockItem) { + super(EquipmentSlotType.CHEST, p_i48534_3_); + this.blockItem = blockItem; + } + + @Override + public ActionResultType onItemUse(ItemUseContext p_195939_1_) { + return blockItem.onItemUse(p_195939_1_); + } + + @Override + public boolean isDamageable() { + return false; + } + + @Override + public int getRGBDurabilityForDisplay(ItemStack stack) { + return 0xefefef; + } + + @Override + public void fillItemGroup(ItemGroup p_150895_1_, NonNullList p_150895_2_) { + if (!isInGroup(p_150895_1_)) + return; + + ItemStack stack = new ItemStack(this); + CompoundNBT nbt = new CompoundNBT(); + nbt.putInt("Air", AllConfigs.SERVER.curiosities.maxAirInBacktank.get()); + stack.setTag(nbt); + p_150895_2_.add(stack); + } + + @Override + public double getDurabilityForDisplay(ItemStack stack) { + return 1 - MathHelper + .clamp(getRemainingAir(stack) / ((float) AllConfigs.SERVER.curiosities.maxAirInBacktank.get()), 0, 1); + } + + @Override + public boolean showDurabilityBar(ItemStack stack) { + return true; + } + + public static int getRemainingAir(ItemStack stack) { + CompoundNBT orCreateTag = stack.getOrCreateTag(); + return orCreateTag.getInt("Air"); + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankRenderer.java new file mode 100644 index 000000000..3dbbb57ca --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankRenderer.java @@ -0,0 +1,22 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.simibubi.create.AllBlockPartials; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer; +import com.simibubi.create.foundation.render.PartialBufferer; +import com.simibubi.create.foundation.render.SuperByteBuffer; + +import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; + +public class CopperBacktankRenderer extends KineticTileEntityRenderer { + + public CopperBacktankRenderer(TileEntityRendererDispatcher dispatcher) { + super(dispatcher); + } + + @Override + protected SuperByteBuffer getRotatedModel(KineticTileEntity te) { + return PartialBufferer.get(AllBlockPartials.COPPER_BACKTANK_SHAFT, te.getBlockState()); + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java new file mode 100644 index 000000000..a6baf7515 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/CopperBacktankTileEntity.java @@ -0,0 +1,107 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.simibubi.create.AllItems; +import com.simibubi.create.Create; +import com.simibubi.create.content.contraptions.base.KineticTileEntity; +import com.simibubi.create.content.contraptions.particle.AirParticleData; +import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.utility.VecHelper; + +import net.minecraft.block.BlockState; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.particles.ParticleTypes; +import net.minecraft.tileentity.TileEntityType; +import net.minecraft.util.INameable; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.math.vector.Vector3d; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TranslationTextComponent; + +public class CopperBacktankTileEntity extends KineticTileEntity implements INameable { + + public int airLevel; + public int airLevelTimer; + private ITextComponent customName; + + public CopperBacktankTileEntity(TileEntityType typeIn) { + super(typeIn); + } + + @Override + public void tick() { + super.tick(); + if (getSpeed() == 0) + return; + if (airLevelTimer > 0) { + airLevelTimer--; + return; + } + + Integer max = AllConfigs.SERVER.curiosities.maxAirInBacktank.get(); + if (world.isRemote) { + Vector3d centerOf = VecHelper.getCenterOf(pos); + Vector3d v = VecHelper.offsetRandomly(centerOf, Create.random, .65f); + Vector3d m = centerOf.subtract(v); + if (airLevel == max) { + if (Create.random.nextFloat() < 1 / 8f) { + world.addParticle(ParticleTypes.HAPPY_VILLAGER, v.x, v.y, v.z, 0, 0, 0); + } + } else + world.addParticle(new AirParticleData(1, .05f), v.x, v.y, v.z, m.x, m.y, m.z); + return; + } + + if (airLevel == max) + return; + + float abs = Math.abs(getSpeed()); + int increment = MathHelper.clamp(((int) abs - 100) / 20, 1, 5); + airLevel = Math.min(max, airLevel + increment); + if (airLevel == max) + sendData(); + airLevelTimer = MathHelper.clamp((int) (128f - abs / 5f) - 108, 0, 20); + } + + public int getAirLevel() { + return airLevel; + } + + public void setAirLevel(int airLevel) { + this.airLevel = airLevel; + sendData(); + } + + public void setCustomName(ITextComponent customName) { + this.customName = customName; + } + + public ITextComponent getCustomName() { + return customName; + } + + @Override + protected void write(CompoundNBT compound, boolean clientPacket) { + super.write(compound, clientPacket); + compound.putInt("Air", airLevel); + compound.putInt("Timer", airLevelTimer); + if (this.customName != null) + compound.putString("CustomName", ITextComponent.Serializer.toJson(this.customName)); + } + + @Override + protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) { + super.fromTag(state, compound, clientPacket); + airLevel = compound.getInt("Air"); + airLevelTimer = compound.getInt("Timer"); + if (compound.contains("CustomName", 8)) + this.customName = ITextComponent.Serializer.fromJson(compound.getString("CustomName")); + } + + @Override + public ITextComponent getName() { + return this.customName != null ? this.customName + : new TranslationTextComponent(AllItems.COPPER_BACKTANK.get() + .getTranslationKey()); + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java new file mode 100644 index 000000000..9b83bbb72 --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingBootsItem.java @@ -0,0 +1,68 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.simibubi.create.AllItems; +import com.simibubi.create.foundation.utility.NBTHelper; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.Pose; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.inventory.EquipmentSlotType; +import net.minecraft.util.math.vector.Vector3d; +import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; +import net.minecraftforge.fml.common.ObfuscationReflectionHelper; + +@EventBusSubscriber +public class DivingBootsItem extends CopperArmorItem { + + public DivingBootsItem(Properties p_i48534_3_) { + super(EquipmentSlotType.FEET, p_i48534_3_); + } + + @SubscribeEvent + public static void accellerateDescentUnderwater(LivingUpdateEvent event) { + LivingEntity entity = event.getEntityLiving(); + if (!affects(entity)) + return; + + Vector3d motion = entity.getMotion(); + Boolean isJumping = ObfuscationReflectionHelper.getPrivateValue(LivingEntity.class, entity, "field_70703_bu"); + entity.onGround |= entity.collidedVertically; + + if (isJumping && entity.onGround) { + motion = motion.add(0, .5f, 0); + entity.onGround = false; + } else { + motion = motion.add(0, -0.05f, 0); + } + + float multiplier = 1.3f; + if (motion.mul(1, 0, 1) + .length() < 0.145f && (entity.moveForward > 0 || entity.moveStrafing != 0) && !entity.isSneaking()) + motion = motion.mul(multiplier, 1, multiplier); + entity.setMotion(motion); + } + + protected static boolean affects(LivingEntity entity) { + if (!AllItems.DIVING_BOOTS.get() + .isWornBy(entity)) { + entity.getPersistentData() + .remove("HeavyBoots"); + return false; + } + + NBTHelper.putMarker(entity.getPersistentData(), "HeavyBoots"); + if (!entity.isInWater()) + return false; + if (entity.getPose() == Pose.SWIMMING) + return false; + if (entity instanceof PlayerEntity) { + PlayerEntity playerEntity = (PlayerEntity) entity; + if (playerEntity.abilities.isFlying) + return false; + } + return true; + } + +} diff --git a/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java new file mode 100644 index 000000000..54faa9e9f --- /dev/null +++ b/src/main/java/com/simibubi/create/content/curiosities/armor/DivingHelmetItem.java @@ -0,0 +1,64 @@ +package com.simibubi.create.content.curiosities.armor; + +import com.simibubi.create.AllItems; + +import net.minecraft.entity.LivingEntity; +import net.minecraft.inventory.EquipmentSlotType; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.potion.EffectInstance; +import net.minecraft.potion.Effects; +import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod.EventBusSubscriber; + +@EventBusSubscriber +public class DivingHelmetItem extends CopperArmorItem { + + public DivingHelmetItem(Properties p_i48534_3_) { + super(EquipmentSlotType.HEAD, p_i48534_3_); + } + + @SubscribeEvent + public static void breatheUnderwater(LivingUpdateEvent event) { + LivingEntity entity = event.getEntityLiving(); + boolean second = entity.world.getGameTime() % 20 == 0; + boolean drowning = entity.getAir() == 0; + + if (!second && !drowning) + return; + + if (!AllItems.DIVING_HELMET.get() + .isWornBy(entity)) + return; + if (!entity.isInWater()) + return; + + ItemStack backtank = ItemStack.EMPTY; + for (ItemStack itemStack : entity.getArmorInventoryList()) { + if (AllItems.COPPER_BACKTANK.isIn(itemStack)) { + backtank = itemStack; + break; + } + } + + if (backtank.isEmpty()) + return; + + CompoundNBT tag = backtank.getOrCreateTag(); + int airRemaining = tag.getInt("Air"); + if (airRemaining == 0) + return; + + if (drowning) + entity.setAir(10); + if (!second) + return; + + entity.setAir(Math.min(entity.getMaxAir(), entity.getAir() + 10)); + entity.addPotionEffect(new EffectInstance(Effects.WATER_BREATHING, 30, 0, true, false, true)); + tag.putInt("Air", airRemaining - 1); + backtank.setTag(tag); + } + +} diff --git a/src/main/java/com/simibubi/create/events/ClientEvents.java b/src/main/java/com/simibubi/create/events/ClientEvents.java index 12ff632ff..fd1569ec3 100644 --- a/src/main/java/com/simibubi/create/events/ClientEvents.java +++ b/src/main/java/com/simibubi/create/events/ClientEvents.java @@ -6,6 +6,7 @@ import java.util.List; import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.systems.RenderSystem; import com.simibubi.create.AllFluids; +import com.simibubi.create.AllItems; import com.simibubi.create.Create; import com.simibubi.create.CreateClient; import com.simibubi.create.content.contraptions.KineticDebugger; @@ -29,6 +30,7 @@ import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperR import com.simibubi.create.content.logistics.block.depot.EjectorTargetHandler; import com.simibubi.create.content.logistics.block.mechanicalArm.ArmInteractionPointHandler; import com.simibubi.create.foundation.config.AllConfigs; +import com.simibubi.create.foundation.fluid.FluidHelper; import com.simibubi.create.foundation.item.ItemDescription; import com.simibubi.create.foundation.item.TooltipHelper; import com.simibubi.create.foundation.networking.AllPackets; @@ -90,7 +92,7 @@ public class ClientEvents { World world = Minecraft.getInstance().world; if (!isGameActive()) return; - + if (event.phase == Phase.START) { AirCurrent.tickClientPlayerSounds(); return; @@ -271,11 +273,20 @@ public class ClientEvents { if (fluid.isEquivalentTo(AllFluids.CHOCOLATE.get())) { event.setDensity(5f); event.setCanceled(true); + return; } if (fluid.isEquivalentTo(AllFluids.HONEY.get())) { event.setDensity(1.5f); event.setCanceled(true); + return; + } + + if (FluidHelper.isWater(fluid) && AllItems.DIVING_HELMET.get() + .isWornBy(Minecraft.getInstance().renderViewEntity)) { + event.setDensity(0.010f); + event.setCanceled(true); + return; } } diff --git a/src/main/java/com/simibubi/create/foundation/config/CCuriosities.java b/src/main/java/com/simibubi/create/foundation/config/CCuriosities.java index fda20ec53..2ca4dafa1 100644 --- a/src/main/java/com/simibubi/create/foundation/config/CCuriosities.java +++ b/src/main/java/com/simibubi/create/foundation/config/CCuriosities.java @@ -4,6 +4,7 @@ public class CCuriosities extends ConfigBase { public ConfigInt maxSymmetryWandRange = i(50, 10, "maxSymmetryWandRange", Comments.symmetryRange); public ConfigInt placementAssistRange = i(12, 3, "placementAssistRange", Comments.placementRange); + public ConfigInt maxAirInBacktank = i(900, 1, "maxAirInBacktank", Comments.maxAirInBacktank); // public ConfigInt zapperUndoLogLength = i(10, 0, "zapperUndoLogLength", Comments.zapperUndoLogLength); NYI @Override @@ -13,6 +14,8 @@ public class CCuriosities extends ConfigBase { private static class Comments { static String symmetryRange = "The Maximum Distance to an active mirror for the symmetry wand to trigger."; + static String maxAirInBacktank = + "The Maximum volume of Air that can be stored in a backtank = Seconds of underwater breathing"; static String placementRange = "The Maximum Distance a Block placed by Create's placement assist will have to its interaction point."; // static String zapperUndoLogLength = "The maximum amount of operations, a blockzapper can remember for undoing. (0 to disable undo)"; diff --git a/src/main/java/com/simibubi/create/foundation/data/AssetLookup.java b/src/main/java/com/simibubi/create/foundation/data/AssetLookup.java index 80a0b8c6f..f677efa7c 100644 --- a/src/main/java/com/simibubi/create/foundation/data/AssetLookup.java +++ b/src/main/java/com/simibubi/create/foundation/data/AssetLookup.java @@ -57,7 +57,17 @@ public class AssetLookup { * models/block/folders[0]/folders[1]/.../item.json "_" will be replaced by the * item name */ - public static NonNullBiConsumer, RegistrateItemModelProvider> customItemModel( + public static NonNullBiConsumer, RegistrateItemModelProvider> customBlockItemModel( + String... folders) { + return (c, p) -> { + String path = "block"; + for (String string : folders) + path += "/" + ("_".equals(string) ? c.getName() : string); + p.withExistingParent(c.getName(), p.modLoc(path)); + }; + } + + public static NonNullBiConsumer, RegistrateItemModelProvider> customGenericItemModel( String... folders) { return (c, p) -> { String path = "block"; diff --git a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java index 48a2bac64..5a110f8b7 100644 --- a/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java +++ b/src/main/java/com/simibubi/create/foundation/data/BuilderTransformers.java @@ -63,7 +63,7 @@ public class BuilderTransformers { .transform(StressConfigDefaults.setNoImpact()) .loot((p, b) -> p.registerDropping(b, AllBlocks.SHAFT.get())) .item() - .model(AssetLookup.customItemModel("encased_shaft", "item_" + casing)) + .model(AssetLookup.customBlockItemModel("encased_shaft", "item_" + casing)) .build(); } diff --git a/src/main/java/com/simibubi/create/foundation/data/ModelGen.java b/src/main/java/com/simibubi/create/foundation/data/ModelGen.java index aec5e178a..ff8cf6679 100644 --- a/src/main/java/com/simibubi/create/foundation/data/ModelGen.java +++ b/src/main/java/com/simibubi/create/foundation/data/ModelGen.java @@ -42,7 +42,7 @@ public class ModelGen { } public static NonNullFunction, P> customItemModel(String... path) { - return b -> b.model(AssetLookup.customItemModel(path)) + return b -> b.model(AssetLookup.customBlockItemModel(path)) .build(); } diff --git a/src/main/java/com/simibubi/create/foundation/item/CreateItemGroupBase.java b/src/main/java/com/simibubi/create/foundation/item/CreateItemGroupBase.java index 82d5afc13..379c84c76 100644 --- a/src/main/java/com/simibubi/create/foundation/item/CreateItemGroupBase.java +++ b/src/main/java/com/simibubi/create/foundation/item/CreateItemGroupBase.java @@ -58,7 +58,10 @@ public abstract class CreateItemGroupBase extends ItemGroup { continue; ItemStack stack = new ItemStack(item); IBakedModel model = itemRenderer.getItemModelWithOverrides(stack, world, null); - if ((model.isGui3d() && AllSections.of(stack) != AllSections.CURIOSITIES) != specialItems) + if (AllSections.of(stack) != AllSections.KINETICS) { + if (specialItems) + continue; + } else if (model.isGui3d() != specialItems) continue; item.fillItemGroup(this, items); } diff --git a/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnEntityMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnEntityMixin.java new file mode 100644 index 000000000..d295d6fa4 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnEntityMixin.java @@ -0,0 +1,30 @@ +package com.simibubi.create.foundation.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import net.minecraft.entity.Entity; +import net.minecraft.nbt.CompoundNBT; +import net.minecraftforge.common.capabilities.CapabilityProvider; + +@Mixin(Entity.class) +public abstract class HeavyBootsOnEntityMixin extends CapabilityProvider { + + protected HeavyBootsOnEntityMixin(Class baseClass) { + super(baseClass); + } + + @Shadow + public abstract CompoundNBT getPersistentData(); + + @Inject(at = @At("HEAD"), method = "canSwim", cancellable = true) + public void noSwimmingWithHeavyBootsOn(CallbackInfoReturnable cir) { + CompoundNBT persistentData = getPersistentData(); + if (persistentData.contains("HeavyBoots")) + cir.setReturnValue(false); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnPlayerMixin.java b/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnPlayerMixin.java new file mode 100644 index 000000000..3ab84bb01 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/mixin/HeavyBootsOnPlayerMixin.java @@ -0,0 +1,32 @@ +package com.simibubi.create.foundation.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import com.mojang.authlib.GameProfile; + +import net.minecraft.client.entity.player.AbstractClientPlayerEntity; +import net.minecraft.client.entity.player.ClientPlayerEntity; +import net.minecraft.client.world.ClientWorld; +import net.minecraft.nbt.CompoundNBT; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn(Dist.CLIENT) +@Mixin(ClientPlayerEntity.class) +public abstract class HeavyBootsOnPlayerMixin extends AbstractClientPlayerEntity { + + public HeavyBootsOnPlayerMixin(ClientWorld p_i50991_1_, GameProfile p_i50991_2_) { + super(p_i50991_1_, p_i50991_2_); + } + + @Inject(at = @At("HEAD"), method = "canSwim", cancellable = true) + public void noSwimmingWithHeavyBootsOn(CallbackInfoReturnable cir) { + CompoundNBT persistentData = getPersistentData(); + if (persistentData.contains("HeavyBoots")) + cir.setReturnValue(false); + } + +} diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index f5b2f4588..7f1d7e995 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -55,6 +55,9 @@ public net.minecraft.client.renderer.GameRenderer func_215311_a(Lnet/minecraft/c public net.minecraft.client.renderer.FirstPersonRenderer field_187467_d # itemStackMainHand public net.minecraft.client.renderer.FirstPersonRenderer field_187468_e # itemStackOffHand +# EntityRendererManager +public net.minecraft.client.renderer.entity.EntityRendererManager field_178637_m # playerRenderer + # IResizeCallback public net.minecraft.util.palette.IResizeCallback diff --git a/src/main/resources/assets/create/models/block/copper_backtank/block.json b/src/main/resources/assets/create/models/block/copper_backtank/block.json new file mode 100644 index 000000000..12c379ff8 --- /dev/null +++ b/src/main/resources/assets/create/models/block/copper_backtank/block.json @@ -0,0 +1,183 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "create:block/copper_backtank", + "particle": "create:block/copper_backtank" + }, + "elements": [ + { + "from": [5, 4, 10.5], + "to": [7, 9, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "south": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"} + } + }, + { + "from": [5, 4, 10.5], + "to": [7, 9, 11.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "south": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"} + } + }, + { + "from": [5, 6, 8.5], + "to": [7, 7, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [6.5, 11.5, 5.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"} + } + }, + { + "from": [5, 6, 8.5], + "to": [7, 7, 13.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [6.5, 11.5, 5.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"} + } + }, + { + "from": [9, 4, 10.5], + "to": [11, 9, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "south": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [9, 4, 10.5], + "to": [11, 9, 11.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "south": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [9, 6, 8.5], + "to": [11, 7, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [5.5, 11.5, 6.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"} + } + }, + { + "from": [9, 6, 8.5], + "to": [11, 7, 13.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [5.5, 11.5, 6.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 4, 11], + "faces": { + "north": {"uv": [8.5, 4, 11.5, 6], "texture": "#0"}, + "east": {"uv": [4.5, 4, 7.5, 6], "texture": "#0"}, + "south": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, + "west": {"uv": [4.5, 4, 7.5, 6], "texture": "#0"}, + "down": {"uv": [4.5, 6.5, 7.5, 9.5], "texture": "#0"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 12, 11], + "faces": { + "north": {"uv": [8.5, 0, 11.5, 1], "texture": "#0"}, + "east": {"uv": [4.5, 0, 7.5, 1], "texture": "#0"}, + "south": {"uv": [0.5, 0, 3.5, 1], "texture": "#0"}, + "west": {"uv": [4.5, 0, 7.5, 1], "texture": "#0"}, + "up": {"uv": [0.5, 6.5, 3.5, 9.5], "texture": "#0"} + } + }, + { + "from": [4, 4, 4], + "to": [12, 10, 12], + "faces": { + "north": {"uv": [8, 1, 12, 4], "texture": "#0"}, + "east": {"uv": [4, 1, 8, 4], "texture": "#0"}, + "south": {"uv": [0, 1, 4, 4], "texture": "#0"}, + "west": {"uv": [4, 1, 8, 4], "texture": "#0"}, + "up": {"uv": [0, 6, 4, 10], "texture": "#0"}, + "down": {"uv": [4, 6, 8, 10], "texture": "#0"} + } + }, + { + "from": [4, 4, 9], + "to": [12, 10, 11], + "faces": { + "south": {"uv": [0, 12.5, 1, 13], "texture": "#0"} + } + }, + { + "from": [5, 2, 3], + "to": [11, 11, 5], + "faces": { + "north": {"uv": [1, 11.5, 4, 16], "texture": "#0"}, + "east": {"uv": [5, 11.5, 4, 16], "texture": "#0"}, + "south": {"uv": [0, 0, 6, 9], "texture": "#0"}, + "west": {"uv": [4, 11.5, 5, 16], "texture": "#0"}, + "up": {"uv": [1, 10.5, 4, 11.5], "texture": "#0"}, + "down": {"uv": [0, 11.5, 1, 14.5], "rotation": 90, "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "Gears", + "origin": [1, 2.5, 0.5], + "children": [0, 1, 2, 3, 4, 5, 6, 7] + }, + { + "name": "Tank", + "origin": [0, 0, 0], + "children": [8, 9, 10, 11, 12] + }, + { + "name": "Axle", + "origin": [8, 8, 8], + "children": [] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/copper_backtank/block_shaft_input.json b/src/main/resources/assets/create/models/block/copper_backtank/block_shaft_input.json new file mode 100644 index 000000000..53bfa1a20 --- /dev/null +++ b/src/main/resources/assets/create/models/block/copper_backtank/block_shaft_input.json @@ -0,0 +1,37 @@ +{ + "credit": "Made with Blockbench", + "textures": { + "0": "create:block/copper_backtank", + "particle": "create:block/copper_backtank" + }, + "elements": [ + { + "from": [6.5, 12, 6.5], + "to": [9.5, 13, 9.5], + "faces": { + "north": {"uv": [14.5, 4, 16, 4.5], "texture": "#0"}, + "east": {"uv": [14.5, 3.5, 16, 4], "texture": "#0"}, + "south": {"uv": [14.5, 3.5, 16, 4], "texture": "#0"}, + "west": {"uv": [14.5, 3, 16, 3.5], "texture": "#0"} + } + }, + { + "from": [6, 13, 6], + "to": [10, 16, 10], + "faces": { + "north": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "east": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "south": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "west": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "up": {"uv": [14, 0, 16, 2], "texture": "#0"}, + "down": {"uv": [15.5, 5, 16, 5.5], "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "Axle", + "origin": [8, 8, 8], + "children": [] + }, 0, 1] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/block/copper_backtank/item.json b/src/main/resources/assets/create/models/block/copper_backtank/item.json new file mode 100644 index 000000000..ce9a790e2 --- /dev/null +++ b/src/main/resources/assets/create/models/block/copper_backtank/item.json @@ -0,0 +1,205 @@ +{ + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "create:block/copper_backtank", + "particle": "create:block/copper_backtank" + }, + "elements": [ + { + "from": [5, 4, 10.5], + "to": [7, 9, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "south": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"} + } + }, + { + "from": [5, 4, 10.5], + "to": [7, 9, 11.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "south": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"} + } + }, + { + "from": [5, 6, 8.5], + "to": [7, 7, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [6.5, 11.5, 5.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"} + } + }, + { + "from": [5, 6, 8.5], + "to": [7, 7, 13.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "east": {"uv": [6.5, 11.5, 7, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "west": {"uv": [5.5, 11.5, 6, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [6.5, 11.5, 5.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"} + } + }, + { + "from": [9, 4, 10.5], + "to": [11, 9, 11.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "south": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [9, 4, 10.5], + "to": [11, 9, 11.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11.5, 6.5, 14], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "texture": "#0"}, + "south": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "texture": "#0"}, + "up": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "down": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"} + } + }, + { + "from": [9, 6, 8.5], + "to": [11, 7, 13.5], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [5.5, 11.5, 6.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"} + } + }, + { + "from": [9, 6, 8.5], + "to": [11, 7, 13.5], + "rotation": {"angle": 45, "axis": "x", "origin": [8, 6.5, 11]}, + "faces": { + "north": {"uv": [5.5, 11, 6.5, 11.5], "texture": "#0"}, + "east": {"uv": [5.5, 11.5, 6, 14], "rotation": 270, "texture": "#0"}, + "south": {"uv": [5.5, 11, 6.5, 11.5], "rotation": 180, "texture": "#0"}, + "west": {"uv": [6.5, 11.5, 7, 14], "rotation": 90, "texture": "#0"}, + "up": {"uv": [5.5, 11.5, 6.5, 14], "rotation": 180, "texture": "#0"}, + "down": {"uv": [6.5, 11.5, 5.5, 14], "texture": "#0"} + } + }, + { + "from": [5, 0, 5], + "to": [11, 4, 11], + "faces": { + "north": {"uv": [8.5, 4, 11.5, 6], "texture": "#0"}, + "east": {"uv": [4.5, 4, 7.5, 6], "texture": "#0"}, + "south": {"uv": [0.5, 4, 3.5, 6], "texture": "#0"}, + "west": {"uv": [4.5, 4, 7.5, 6], "texture": "#0"}, + "down": {"uv": [4.5, 6.5, 7.5, 9.5], "texture": "#0"} + } + }, + { + "from": [5, 10, 5], + "to": [11, 12, 11], + "faces": { + "north": {"uv": [8.5, 0, 11.5, 1], "texture": "#0"}, + "east": {"uv": [4.5, 0, 7.5, 1], "texture": "#0"}, + "south": {"uv": [0.5, 0, 3.5, 1], "texture": "#0"}, + "west": {"uv": [4.5, 0, 7.5, 1], "texture": "#0"}, + "up": {"uv": [0.5, 6.5, 3.5, 9.5], "texture": "#0"} + } + }, + { + "from": [4, 4, 4], + "to": [12, 10, 12], + "faces": { + "north": {"uv": [8, 1, 12, 4], "texture": "#0"}, + "east": {"uv": [4, 1, 8, 4], "texture": "#0"}, + "south": {"uv": [0, 1, 4, 4], "texture": "#0"}, + "west": {"uv": [4, 1, 8, 4], "texture": "#0"}, + "up": {"uv": [0, 6, 4, 10], "texture": "#0"}, + "down": {"uv": [4, 6, 8, 10], "texture": "#0"} + } + }, + { + "from": [4, 4, 9], + "to": [12, 10, 11], + "faces": { + "south": {"uv": [0, 12.5, 1, 13], "texture": "#0"} + } + }, + { + "from": [5, 2, 3], + "to": [11, 11, 5], + "faces": { + "north": {"uv": [1, 11.5, 4, 16], "texture": "#0"}, + "east": {"uv": [5, 11.5, 4, 16], "texture": "#0"}, + "south": {"uv": [0, 0, 6, 9], "texture": "#0"}, + "west": {"uv": [4, 11.5, 5, 16], "texture": "#0"}, + "up": {"uv": [1, 10.5, 4, 11.5], "texture": "#0"}, + "down": {"uv": [0, 11.5, 1, 14.5], "rotation": 90, "texture": "#0"} + } + }, + { + "from": [6.5, 12, 6.5], + "to": [9.5, 13, 9.5], + "faces": { + "north": {"uv": [14.5, 4, 16, 4.5], "texture": "#0"}, + "east": {"uv": [14.5, 3.5, 16, 4], "texture": "#0"}, + "south": {"uv": [14.5, 3.5, 16, 4], "texture": "#0"}, + "west": {"uv": [14.5, 3, 16, 3.5], "texture": "#0"} + } + }, + { + "from": [6, 13, 6], + "to": [10, 16, 10], + "faces": { + "north": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "east": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "south": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "west": {"uv": [14, 2, 16, 3.5], "texture": "#0"}, + "up": {"uv": [14, 0, 16, 2], "texture": "#0"}, + "down": {"uv": [15.5, 5, 16, 5.5], "texture": "#0"} + } + } + ], + "groups": [ + { + "name": "Gears", + "origin": [1, 2.5, 0.5], + "children": [0, 1, 2, 3, 4, 5, 6, 7] + }, + { + "name": "Tank", + "origin": [0, 0, 0], + "children": [8, 9, 10, 11, 12] + }, + { + "name": "Axle", + "origin": [8, 8, 8], + "children": [] + }, 13, 14] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/copper_backtank.png b/src/main/resources/assets/create/textures/block/copper_backtank.png new file mode 100644 index 000000000..e58b1103e Binary files /dev/null and b/src/main/resources/assets/create/textures/block/copper_backtank.png differ diff --git a/src/main/resources/assets/create/textures/item/diving_boots.png b/src/main/resources/assets/create/textures/item/diving_boots.png new file mode 100644 index 000000000..9e3dd1cae Binary files /dev/null and b/src/main/resources/assets/create/textures/item/diving_boots.png differ diff --git a/src/main/resources/assets/create/textures/item/diving_helmet.png b/src/main/resources/assets/create/textures/item/diving_helmet.png new file mode 100644 index 000000000..1b14ff1a0 Binary files /dev/null and b/src/main/resources/assets/create/textures/item/diving_helmet.png differ diff --git a/src/main/resources/assets/create/textures/models/armor/copper.png b/src/main/resources/assets/create/textures/models/armor/copper.png new file mode 100644 index 000000000..f54e5281a Binary files /dev/null and b/src/main/resources/assets/create/textures/models/armor/copper.png differ diff --git a/src/main/resources/create.mixins.json b/src/main/resources/create.mixins.json index 6e988aa5a..63452462c 100644 --- a/src/main/resources/create.mixins.json +++ b/src/main/resources/create.mixins.json @@ -4,6 +4,8 @@ "package": "com.simibubi.create.foundation.mixin", "compatibilityLevel": "JAVA_8", "refmap": "create.refmap.json", + "mixins": [ + ], "client": [ "TileWorldHookMixin", "CancelTileEntityRenderMixin", @@ -13,6 +15,7 @@ "RenderHooksMixin", "ShaderCloseMixin", "TileRemoveMixin", + "HeavyBootsOnPlayerMixin", "EntityContraptionInteractionMixin", "StoreProjectionMatrixMixin" ],