mirror of
https://github.com/Jozufozu/Flywheel.git
synced 2024-12-29 08:26:37 +01:00
Subcreatica, Part II
- Diving helmets now display a timer near the hotbar when underwater - Copper backtanks now play an effect when accumulated air is maxed - Copper backtank blocks can now be waterlogged - Copper backtank cogs now animate - Fixed subtitle of equip sounds
This commit is contained in:
parent
3c4e504f61
commit
b38dd90431
31 changed files with 445 additions and 185 deletions
|
@ -53,7 +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
|
||||
961b615124ea9a5a5735e8a79f81a702de7da2cf 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
|
||||
|
@ -408,20 +408,20 @@ a3a11524cd3515fc01d905767b4b7ea782adaf03 assets/create/blockstates/yellow_seat.j
|
|||
7f39521b211441f5c3e06d60c5978cebe16cacfb assets/create/blockstates/zinc_block.json
|
||||
b7181bcd8182b2f17088e5aa881f374c9c65470c assets/create/blockstates/zinc_ore.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
|
||||
95f238e0df097f74a7845a58a02d27c3989305ce assets/create/lang/en_us.json
|
||||
e03638c344f9f80f5cee92c5e4ce4986478e65a5 assets/create/lang/unfinished/de_de.json
|
||||
dae908c13b54fa5123bad98dd38ba35d58edaaf0 assets/create/lang/unfinished/es_es.json
|
||||
bf9142028bbd21a4441381c06c3b4557e60e49c5 assets/create/lang/unfinished/es_mx.json
|
||||
e4f70996f672bc50e8cfeaccd150075c0a07a917 assets/create/lang/unfinished/fr_fr.json
|
||||
34c1226afddeaf7824fc1aaf65f40505b3811a91 assets/create/lang/unfinished/it_it.json
|
||||
17a4ed49d461a537ca8e59fc95d12909780105d7 assets/create/lang/unfinished/ja_jp.json
|
||||
dd1e77bf533b4bf0e7fa358d48ce5643d08b21c3 assets/create/lang/unfinished/ko_kr.json
|
||||
0faf1940b7c9664be63d02b3685ed0252528a9ce assets/create/lang/unfinished/nl_nl.json
|
||||
996e1392e3ffcdb6d41a66cf6bd752e301c52b12 assets/create/lang/unfinished/pl_pl.json
|
||||
49e35e88d59fb49cb1889e960a18371d0616b963 assets/create/lang/unfinished/pt_br.json
|
||||
af5ee82802fc0e42012c575cd9da1cf36b88b035 assets/create/lang/unfinished/ru_ru.json
|
||||
63db3153b522775cad4f91eb509e14568bfb0c3c assets/create/lang/unfinished/zh_cn.json
|
||||
f533c7c7c1cc2b11908377bd807ff006902d5e34 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
|
||||
|
@ -1651,8 +1651,8 @@ d080b1b25e5bc8baf5aee68691b08c7f12ece3b0 assets/create/models/item/windmill_bear
|
|||
866fbb0ce2878a73e0440d1caf6534c8bd7c384f assets/create/models/item/zinc_ingot.json
|
||||
a80fb25a0b655e76be986b5b49fcb0f03461a1ab assets/create/models/item/zinc_nugget.json
|
||||
b1689617190c05ef34bd18456b0c7ae09bb3210f assets/create/models/item/zinc_ore.json
|
||||
7b73f40a65af0c2288c886928c609ec783c0fc40 assets/create/sounds.json
|
||||
0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json
|
||||
3fd540489a0038a78c6b02f81e89d95e53596b2b assets/create/sounds.json
|
||||
5d0cc4c0255dc241e61c173b31ddca70c88d08e4 data/create/advancements/aesthetics.json
|
||||
187921fa131b06721bfaf63f2623a28c141aae9a data/create/advancements/andesite_alloy.json
|
||||
0ea2db7173b5be28b289ea7c9a6a0cf5805c60c7 data/create/advancements/andesite_casing.json
|
||||
83c046bd200623933545c9e4326f782fb02c87fa data/create/advancements/arm_blaze_burner.json
|
||||
|
|
|
@ -1,17 +1,32 @@
|
|||
{
|
||||
"variants": {
|
||||
"facing=north": {
|
||||
"facing=north,waterlogged=false": {
|
||||
"model": "create:block/copper_backtank/block"
|
||||
},
|
||||
"facing=south": {
|
||||
"facing=south,waterlogged=false": {
|
||||
"model": "create:block/copper_backtank/block",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west": {
|
||||
"facing=west,waterlogged=false": {
|
||||
"model": "create:block/copper_backtank/block",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east": {
|
||||
"facing=east,waterlogged=false": {
|
||||
"model": "create:block/copper_backtank/block",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,waterlogged=true": {
|
||||
"model": "create:block/copper_backtank/block"
|
||||
},
|
||||
"facing=south,waterlogged=true": {
|
||||
"model": "create:block/copper_backtank/block",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,waterlogged=true": {
|
||||
"model": "create:block/copper_backtank/block",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,waterlogged=true": {
|
||||
"model": "create:block/copper_backtank/block",
|
||||
"y": 90
|
||||
}
|
||||
|
|
|
@ -1146,6 +1146,7 @@
|
|||
"create.subtitle.blaze_munch": "Blaze Burner munches",
|
||||
"create.subtitle.schematicannon_launch_block": "Schematicannon fires",
|
||||
"create.subtitle.funnel_flap": "Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "Schematicannon dings",
|
||||
"create.subtitle.scroll_value": "Scroll-input clicks",
|
||||
"create.subtitle.mechanical_press_activation": "Mechanical Press clangs",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 939",
|
||||
"_": "Missing Localizations: 940",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1147,6 +1147,7 @@
|
|||
"create.subtitle.blaze_munch": "Lohe kaut glücklich",
|
||||
"create.subtitle.schematicannon_launch_block": "Bauplankanone schießt",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "Bauplankanone endet",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.mechanical_press_activation": "Mechanische Presse wird aktiviert",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 640",
|
||||
"_": "Missing Localizations: 641",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1147,6 +1147,7 @@
|
|||
"create.subtitle.blaze_munch": "Blaze mastica felizmente",
|
||||
"create.subtitle.schematicannon_launch_block": "Disparos de Schematicannon",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "Acabados de Schematicannon",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.mechanical_press_activation": "La Prensa Mecánica se activa",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1263",
|
||||
"_": "Missing Localizations: 1264",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1147,6 +1147,7 @@
|
|||
"create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches",
|
||||
"create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1191",
|
||||
"_": "Missing Localizations: 1192",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1147,6 +1147,7 @@
|
|||
"create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches",
|
||||
"create.subtitle.schematicannon_launch_block": "Tir de schémacanon",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "Fin de schémacanon",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.mechanical_press_activation": "Activation de la presse mechanique",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 657",
|
||||
"_": "Missing Localizations: 658",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1147,6 +1147,7 @@
|
|||
"create.subtitle.blaze_munch": "Il blaze lo gusta felicemente",
|
||||
"create.subtitle.schematicannon_launch_block": "Tiri del cannoneschematico",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "Finiture cannoneschematico",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.mechanical_press_activation": "Pressa meccanica attiva",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 21",
|
||||
"_": "Missing Localizations: 22",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1147,6 +1147,7 @@
|
|||
"create.subtitle.blaze_munch": "ブレイズの咀嚼音",
|
||||
"create.subtitle.schematicannon_launch_block": "概略図砲が発射する",
|
||||
"create.subtitle.funnel_flap": "ファンネルがはためく",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "概略図砲が作業を終える",
|
||||
"create.subtitle.scroll_value": "スクロールのカチカチ音",
|
||||
"create.subtitle.mechanical_press_activation": "メカニカルプレスがガーンと鳴る",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 710",
|
||||
"_": "Missing Localizations: 711",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1147,6 +1147,7 @@
|
|||
"create.subtitle.blaze_munch": "블레이즈가 행복하게 섭취함",
|
||||
"create.subtitle.schematicannon_launch_block": "청사진 대포가 발포함",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "청사진 대포가 끝남",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.mechanical_press_activation": "압착기가 가동됨",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1574",
|
||||
"_": "Missing Localizations: 1575",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1147,6 +1147,7 @@
|
|||
"create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches",
|
||||
"create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 35",
|
||||
"_": "Missing Localizations: 36",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1147,6 +1147,7 @@
|
|||
"create.subtitle.blaze_munch": "Płomyk szczęśliwie przeżuwa",
|
||||
"create.subtitle.schematicannon_launch_block": "Schematoarmata strzela",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "Schematoarmata skończyła",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.mechanical_press_activation": "Mechaniczna prasa się uruchamia",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1626",
|
||||
"_": "Missing Localizations: 1627",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1147,6 +1147,7 @@
|
|||
"create.subtitle.blaze_munch": "UNLOCALIZED: Blaze Burner munches",
|
||||
"create.subtitle.schematicannon_launch_block": "UNLOCALIZED: Schematicannon fires",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 554",
|
||||
"_": "Missing Localizations: 555",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1147,6 +1147,7 @@
|
|||
"create.subtitle.blaze_munch": "Всполох радостно жуёт",
|
||||
"create.subtitle.schematicannon_launch_block": "Выстрелы схематичной пушки",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "Схематичная пушка закончила работу",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.mechanical_press_activation": "Механический пресс активирован",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 40",
|
||||
"_": "Missing Localizations: 41",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1147,6 +1147,7 @@
|
|||
"create.subtitle.blaze_munch": "烈焰人:咀嚼",
|
||||
"create.subtitle.schematicannon_launch_block": "蓝图加农炮:发射",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "蓝图加农炮:叮",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.mechanical_press_activation": "辊压机:工作中",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 659",
|
||||
"_": "Missing Localizations: 660",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -1147,6 +1147,7 @@
|
|||
"create.subtitle.blaze_munch": "烈焰使者開心地吃著",
|
||||
"create.subtitle.schematicannon_launch_block": "藍圖大炮發射",
|
||||
"create.subtitle.funnel_flap": "UNLOCALIZED: Funnel Flaps",
|
||||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.schematicannon_finish": "藍圖大炮完成任務",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.mechanical_press_activation": "液壓機工作",
|
||||
|
|
|
@ -49,6 +49,15 @@
|
|||
],
|
||||
"subtitle": "create.subtitle.contraption_disassemble"
|
||||
},
|
||||
"copper_armor_equip": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "minecraft:item.armor.equip_gold",
|
||||
"type": "event"
|
||||
}
|
||||
],
|
||||
"subtitle": "create.subtitle.copper_armor_equip"
|
||||
},
|
||||
"crafter_click": {
|
||||
"sounds": [
|
||||
{
|
||||
|
|
|
@ -28,8 +28,8 @@
|
|||
"trigger": "create:bracket_apply",
|
||||
"conditions": {
|
||||
"accepted_entries": [
|
||||
"create:cogwheel",
|
||||
"create:large_cogwheel"
|
||||
"create:large_cogwheel",
|
||||
"create:cogwheel"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
|
|
@ -100,6 +100,7 @@ public class AllBlockPartials {
|
|||
EJECTOR_TOP = get("weighted_ejector/top"),
|
||||
|
||||
COPPER_BACKTANK_SHAFT = get("copper_backtank/block_shaft_input"),
|
||||
COPPER_BACKTANK_COGS = get("copper_backtank/block_cogs"),
|
||||
|
||||
COUPLING_ATTACHMENT = getEntity("minecart_coupling/attachment"),
|
||||
COUPLING_RING = getEntity("minecart_coupling/ring"),
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
package com.simibubi.create;
|
||||
|
||||
import static com.simibubi.create.AllTags.forgeItemTag;
|
||||
import static com.simibubi.create.AllTags.AllItemTags.CREATE_INGOTS;
|
||||
import static com.simibubi.create.AllTags.AllItemTags.CRUSHED_ORES;
|
||||
import static com.simibubi.create.AllTags.AllItemTags.NUGGETS;
|
||||
import static com.simibubi.create.AllTags.AllItemTags.PLATES;
|
||||
import static com.simibubi.create.AllTags.forgeItemTag;
|
||||
import static com.simibubi.create.content.AllSections.CURIOSITIES;
|
||||
import static com.simibubi.create.content.AllSections.KINETICS;
|
||||
import static com.simibubi.create.content.AllSections.LOGISTICS;
|
||||
|
@ -261,23 +261,24 @@ public class AllItems {
|
|||
REGISTRATE.startSection(CURIOSITIES);
|
||||
}
|
||||
|
||||
public static final ItemEntry<TreeFertilizerItem> TREE_FERTILIZER =
|
||||
REGISTRATE.item("tree_fertilizer", TreeFertilizerItem::new)
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<? extends CopperArmorItem>
|
||||
|
||||
DIVING_HELMET = REGISTRATE.item("diving_helmet", DivingHelmetItem::new)
|
||||
.register(),
|
||||
|
||||
COPPER_BACKTANK = REGISTRATE
|
||||
COPPER_BACKTANK =
|
||||
REGISTRATE
|
||||
.item("copper_backtank", p -> new CopperBacktankItem(p, new BlockItem(AllBlocks.COPPER_BACKTANK.get(), p)))
|
||||
.model(AssetLookup.<CopperBacktankItem>customGenericItemModel("_", "item"))
|
||||
.register(),
|
||||
|
||||
DIVING_HELMET = REGISTRATE.item("diving_helmet", DivingHelmetItem::new)
|
||||
.register(),
|
||||
|
||||
DIVING_BOOTS = REGISTRATE.item("diving_boots", DivingBootsItem::new)
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<TreeFertilizerItem> TREE_FERTILIZER =
|
||||
REGISTRATE.item("tree_fertilizer", TreeFertilizerItem::new)
|
||||
.register();
|
||||
|
||||
// Schematics
|
||||
|
||||
static {
|
||||
|
|
|
@ -148,6 +148,11 @@ public class AllSoundEvents {
|
|||
.category(SoundCategory.BLOCKS)
|
||||
.build(),
|
||||
|
||||
COPPER_ARMOR_EQUIP = create("copper_armor_equip").subtitle("Diving equipment clinks")
|
||||
.playExisting(SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 1f, 1f)
|
||||
.category(SoundCategory.PLAYERS)
|
||||
.build(),
|
||||
|
||||
BLAZE_MUNCH = create("blaze_munch").subtitle("Blaze Burner munches")
|
||||
.playExisting(SoundEvents.ENTITY_GENERIC_EAT, .5f, 1f)
|
||||
.category(SoundCategory.BLOCKS)
|
||||
|
@ -163,6 +168,11 @@ public class AllSoundEvents {
|
|||
entry.register(registry);
|
||||
}
|
||||
|
||||
public static void prepare() {
|
||||
for (SoundEntry entry : entries.values())
|
||||
entry.prepare();
|
||||
}
|
||||
|
||||
public static JsonElement provideLangEntries() {
|
||||
JsonObject object = new JsonObject();
|
||||
for (SoundEntry entry : entries.values())
|
||||
|
@ -278,6 +288,8 @@ public class AllSoundEvents {
|
|||
this.category = category;
|
||||
}
|
||||
|
||||
public abstract void prepare();
|
||||
|
||||
public abstract void register(IForgeRegistry<SoundEvent> registry);
|
||||
|
||||
public abstract void write(JsonObject json);
|
||||
|
@ -348,16 +360,21 @@ public class AllSoundEvents {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void register(IForgeRegistry<SoundEvent> registry) {
|
||||
public void prepare() {
|
||||
for (int i = 0; i < wrappedEvents.size(); i++) {
|
||||
ResourceLocation location = Create.asResource(getIdOf(i));
|
||||
SoundEvent sound = new SoundEvent(location).setRegistryName(location);
|
||||
registry.register(sound);
|
||||
compiledEvents.add(Pair.of(sound, wrappedEvents.get(i)
|
||||
.getSecond()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register(IForgeRegistry<SoundEvent> registry) {
|
||||
for (Pair<SoundEvent, Couple<Float>> pair : compiledEvents)
|
||||
registry.register(pair.getFirst());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SoundEvent getMainEvent() {
|
||||
return compiledEvents.get(0)
|
||||
|
@ -415,9 +432,14 @@ public class AllSoundEvents {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void register(IForgeRegistry<SoundEvent> registry) {
|
||||
public void prepare() {
|
||||
ResourceLocation location = getLocation();
|
||||
registry.register(event = new SoundEvent(location).setRegistryName(location));
|
||||
event = new SoundEvent(location).setRegistryName(location);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register(IForgeRegistry<SoundEvent> registry) {
|
||||
registry.register(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -78,6 +78,7 @@ public class Create {
|
|||
IEventBus modEventBus = FMLJavaModLoadingContext.get()
|
||||
.getModEventBus();
|
||||
|
||||
AllSoundEvents.prepare();
|
||||
AllBlocks.register();
|
||||
AllItems.register();
|
||||
AllFluids.register();
|
||||
|
|
|
@ -3,21 +3,20 @@ package com.simibubi.create.content.curiosities.armor;
|
|||
import java.util.function.Supplier;
|
||||
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
|
||||
import net.minecraft.inventory.EquipmentSlotType;
|
||||
import net.minecraft.item.IArmorMaterial;
|
||||
import net.minecraft.item.crafting.Ingredient;
|
||||
import net.minecraft.util.LazyValue;
|
||||
import net.minecraft.util.SoundEvent;
|
||||
import net.minecraft.util.SoundEvents;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
public enum AllArmorMaterials implements IArmorMaterial {
|
||||
|
||||
COPPER("copper", 7, new int[] { 1, 3, 5, 2 }, 25, SoundEvents.ITEM_ARMOR_EQUIP_GOLD, 0.0F, 0.0F, () -> {
|
||||
return Ingredient.fromItems(AllItems.COPPER_INGOT.get());
|
||||
})
|
||||
COPPER("copper", 7, new int[] { 1, 3, 4, 2 }, 25, AllSoundEvents.COPPER_ARMOR_EQUIP.getMainEvent(), 0.0F, 0.0F,
|
||||
() -> Ingredient.fromItems(AllItems.COPPER_INGOT.get()))
|
||||
|
||||
;
|
||||
|
||||
|
|
|
@ -1,13 +1,20 @@
|
|||
package com.simibubi.create.content.curiosities.armor;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.AllBlockPartials;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.CreateClient;
|
||||
import com.simibubi.create.foundation.gui.GuiGameElement;
|
||||
import com.simibubi.create.foundation.render.SuperByteBuffer;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.MainWindow;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer.Impl;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
|
@ -19,7 +26,11 @@ 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.tags.FluidTags;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.StringUtils;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.StringTextComponent;
|
||||
|
||||
public class CopperBacktankArmorLayer<T extends LivingEntity, M extends EntityModel<T>> extends LayerRenderer<T, M> {
|
||||
|
||||
|
@ -50,14 +61,28 @@ public class CopperBacktankArmorLayer<T extends LivingEntity, M extends EntityMo
|
|||
BlockState renderedState = AllBlocks.COPPER_BACKTANK.getDefaultState()
|
||||
.with(CopperBacktankBlock.HORIZONTAL_FACING, Direction.SOUTH);
|
||||
RenderType renderType = RenderType.getSolid();
|
||||
|
||||
SuperByteBuffer backtank = CreateClient.bufferCache.renderBlock(renderedState);
|
||||
SuperByteBuffer cogs =
|
||||
CreateClient.bufferCache.renderPartial(AllBlockPartials.COPPER_BACKTANK_COGS, 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));
|
||||
|
||||
cogs.matrixStacker()
|
||||
.centre()
|
||||
.rotateY(180)
|
||||
.unCentre()
|
||||
.translate(0, 6.5f / 16, 11f / 16)
|
||||
.rotate(Direction.EAST, AngleHelper.rad(2 * AnimationTickHolder.getRenderTime(entity.world) % 360))
|
||||
.translate(0, -6.5f / 16, -11f / 16);
|
||||
|
||||
cogs.light(light)
|
||||
.renderInto(ms, buffer.getBuffer(renderType));
|
||||
|
||||
if (buffer instanceof Impl)
|
||||
((Impl) buffer).draw(renderType);
|
||||
ms.pop();
|
||||
|
@ -78,4 +103,39 @@ public class CopperBacktankArmorLayer<T extends LivingEntity, M extends EntityMo
|
|||
new CopperBacktankArmorLayer<>((LivingRenderer<?, ?>) entityRenderer);
|
||||
}
|
||||
|
||||
public static void renderRemainingAirOverlay(MatrixStack ms, Impl buffers, int light, int overlay, float pt) {
|
||||
ClientPlayerEntity player = Minecraft.getInstance().player;
|
||||
if (player == null)
|
||||
return;
|
||||
if (player.isSpectator() || player.isCreative())
|
||||
return;
|
||||
if (!player.getPersistentData()
|
||||
.contains("VisualBacktankAir"))
|
||||
return;
|
||||
if (!player.areEyesInFluid(FluidTags.WATER))
|
||||
return;
|
||||
|
||||
int timeLeft = player.getPersistentData()
|
||||
.getInt("VisualBacktankAir");
|
||||
|
||||
ms.push();
|
||||
|
||||
MainWindow window = Minecraft.getInstance()
|
||||
.getWindow();
|
||||
ms.translate(window.getScaledWidth() / 2 + 90, window.getScaledHeight() - 53, 0);
|
||||
|
||||
ITextComponent text = new StringTextComponent(StringUtils.ticksToElapsedTime(timeLeft * 20));
|
||||
GuiGameElement.of(AllItems.COPPER_BACKTANK.asStack())
|
||||
.at(0, 0)
|
||||
.render(ms);
|
||||
int color = 0xFF_FFFFFF;
|
||||
if (timeLeft < 60 && timeLeft % 2 == 0) {
|
||||
color = ColorHelper.mixColors(0xFF_FF0000, color, Math.max(timeLeft / 60f, .25f));
|
||||
}
|
||||
Minecraft.getInstance().fontRenderer.drawWithShadow(ms, text, 16, 5, color);
|
||||
buffers.draw();
|
||||
|
||||
ms.pop();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -8,31 +8,74 @@ import com.simibubi.create.AllTileEntities;
|
|||
import com.simibubi.create.content.contraptions.base.HorizontalKineticBlock;
|
||||
import com.simibubi.create.foundation.block.ITE;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.IWaterLoggable;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.fluid.FluidState;
|
||||
import net.minecraft.fluid.Fluids;
|
||||
import net.minecraft.inventory.EquipmentSlotType;
|
||||
import net.minecraft.item.BlockItem;
|
||||
import net.minecraft.item.BlockItemUseContext;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.pathfinding.PathType;
|
||||
import net.minecraft.state.StateContainer.Builder;
|
||||
import net.minecraft.state.properties.BlockStateProperties;
|
||||
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.SoundCategory;
|
||||
import net.minecraft.util.SoundEvents;
|
||||
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.IWorld;
|
||||
import net.minecraft.world.IWorldReader;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.FakePlayer;
|
||||
|
||||
public class CopperBacktankBlock extends HorizontalKineticBlock implements ITE<CopperBacktankTileEntity> {
|
||||
public class CopperBacktankBlock extends HorizontalKineticBlock
|
||||
implements ITE<CopperBacktankTileEntity>, IWaterLoggable {
|
||||
|
||||
public CopperBacktankBlock(Properties properties) {
|
||||
super(properties);
|
||||
setDefaultState(super.getDefaultState().with(BlockStateProperties.WATERLOGGED, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidState getFluidState(BlockState state) {
|
||||
return state.get(BlockStateProperties.WATERLOGGED) ? Fluids.WATER.getStillFluidState(false)
|
||||
: Fluids.EMPTY.getDefaultState();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void fillStateContainer(Builder<Block, BlockState> builder) {
|
||||
builder.add(BlockStateProperties.WATERLOGGED);
|
||||
super.fillStateContainer(builder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState updatePostPlacement(BlockState state, Direction direction, BlockState neighbourState,
|
||||
IWorld world, BlockPos pos, BlockPos neighbourPos) {
|
||||
if (state.get(BlockStateProperties.WATERLOGGED)) {
|
||||
world.getPendingFluidTicks()
|
||||
.scheduleTick(pos, Fluids.WATER, Fluids.WATER.getTickRate(world));
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockItemUseContext context) {
|
||||
FluidState ifluidstate = context.getWorld()
|
||||
.getFluidState(context.getPos());
|
||||
return super.getStateForPlacement(context).with(BlockStateProperties.WATERLOGGED,
|
||||
Boolean.valueOf(ifluidstate.getFluid() == Fluids.WATER));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -63,14 +106,20 @@ public class CopperBacktankBlock extends HorizontalKineticBlock implements ITE<C
|
|||
@Override
|
||||
public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand p_225533_5_,
|
||||
BlockRayTraceResult p_225533_6_) {
|
||||
if (player == null)
|
||||
return ActionResultType.PASS;
|
||||
if (player instanceof FakePlayer)
|
||||
return ActionResultType.PASS;
|
||||
if (player.getHeldItemMainhand().getItem() instanceof BlockItem)
|
||||
if (player.isSneaking())
|
||||
return ActionResultType.PASS;
|
||||
if (player.getHeldItemMainhand()
|
||||
.getItem() instanceof BlockItem)
|
||||
return ActionResultType.PASS;
|
||||
if (!player.getItemStackFromSlot(EquipmentSlotType.CHEST)
|
||||
.isEmpty())
|
||||
return ActionResultType.PASS;
|
||||
if (!world.isRemote) {
|
||||
world.playSound(null, pos, SoundEvents.ENTITY_ITEM_PICKUP, SoundCategory.PLAYERS, .75f, 1);
|
||||
player.setItemStackToSlot(EquipmentSlotType.CHEST, getItem(world, pos, state));
|
||||
world.destroyBlock(pos, false);
|
||||
}
|
||||
|
@ -108,4 +157,9 @@ public class CopperBacktankBlock extends HorizontalKineticBlock implements ITE<C
|
|||
return CopperBacktankTileEntity.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean allowsMovement(BlockState state, IBlockReader reader, BlockPos pos, PathType type) {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,12 +1,19 @@
|
|||
package com.simibubi.create.content.curiosities.armor;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.AllBlockPartials;
|
||||
import com.simibubi.create.CreateClient;
|
||||
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 com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
import net.minecraft.client.renderer.RenderType;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
||||
import net.minecraft.util.Direction;
|
||||
|
||||
public class CopperBacktankRenderer extends KineticTileEntityRenderer {
|
||||
|
||||
|
@ -14,6 +21,26 @@ public class CopperBacktankRenderer extends KineticTileEntityRenderer {
|
|||
super(dispatcher);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void renderSafe(KineticTileEntity te, float partialTicks, MatrixStack ms, IRenderTypeBuffer buffer,
|
||||
int light, int overlay) {
|
||||
super.renderSafe(te, partialTicks, ms, buffer, light, overlay);
|
||||
|
||||
SuperByteBuffer cogs =
|
||||
CreateClient.bufferCache.renderPartial(AllBlockPartials.COPPER_BACKTANK_COGS, te.getBlockState());
|
||||
cogs.matrixStacker()
|
||||
.centre()
|
||||
.rotateY(180 + AngleHelper.horizontalAngle(te.getBlockState()
|
||||
.get(CopperBacktankBlock.HORIZONTAL_FACING)))
|
||||
.unCentre()
|
||||
.translate(0, 6.5f / 16, 11f / 16)
|
||||
.rotate(Direction.EAST,
|
||||
AngleHelper.rad(te.getSpeed() / 4f * AnimationTickHolder.getRenderTime(te.getWorld()) % 360))
|
||||
.translate(0, -6.5f / 16, -11f / 16);
|
||||
cogs.light(light)
|
||||
.renderInto(ms, buffer.getBuffer(RenderType.getSolid()));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SuperByteBuffer getRotatedModel(KineticTileEntity te) {
|
||||
return PartialBufferer.get(AllBlockPartials.COPPER_BACKTANK_SHAFT, te.getBlockState());
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.simibubi.create.content.curiosities.armor;
|
||||
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.particle.AirParticleData;
|
||||
|
@ -11,6 +12,7 @@ import net.minecraft.block.BlockState;
|
|||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.particles.ParticleTypes;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
import net.minecraft.util.INameable;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.math.vector.Vector3d;
|
||||
|
@ -37,16 +39,12 @@ public class CopperBacktankTileEntity extends KineticTileEntity implements IName
|
|||
return;
|
||||
}
|
||||
|
||||
Integer max = AllConfigs.SERVER.curiosities.maxAirInBacktank.get();
|
||||
int max = getMaxAir();
|
||||
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
|
||||
if (airLevel != max)
|
||||
world.addParticle(new AirParticleData(1, .05f), v.x, v.y, v.z, m.x, m.y, m.z);
|
||||
return;
|
||||
}
|
||||
|
@ -62,6 +60,10 @@ public class CopperBacktankTileEntity extends KineticTileEntity implements IName
|
|||
airLevelTimer = MathHelper.clamp((int) (128f - abs / 5f) - 108, 0, 20);
|
||||
}
|
||||
|
||||
protected int getMaxAir() {
|
||||
return AllConfigs.SERVER.curiosities.maxAirInBacktank.get();
|
||||
}
|
||||
|
||||
public int getAirLevel() {
|
||||
return airLevel;
|
||||
}
|
||||
|
@ -91,10 +93,26 @@ public class CopperBacktankTileEntity extends KineticTileEntity implements IName
|
|||
@Override
|
||||
protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) {
|
||||
super.fromTag(state, compound, clientPacket);
|
||||
int prev = airLevel;
|
||||
airLevel = compound.getInt("Air");
|
||||
airLevelTimer = compound.getInt("Timer");
|
||||
if (compound.contains("CustomName", 8))
|
||||
this.customName = ITextComponent.Serializer.fromJson(compound.getString("CustomName"));
|
||||
if (prev != 0 && prev != airLevel && airLevel == getMaxAir() && clientPacket)
|
||||
playFilledEffect();
|
||||
}
|
||||
|
||||
protected void playFilledEffect() {
|
||||
AllSoundEvents.CONFIRM.playAt(world, pos, 0.4f, 1, true);
|
||||
Vector3d baseMotion = new Vector3d(.25, 0.1, 0);
|
||||
Vector3d baseVec = VecHelper.getCenterOf(pos);
|
||||
for (int i = 0; i < 360; i += 10) {
|
||||
Vector3d m = VecHelper.rotate(baseMotion, i, Axis.Y);
|
||||
Vector3d v = baseVec.add(m.normalize()
|
||||
.scale(.25f));
|
||||
|
||||
world.addParticle(ParticleTypes.SPIT, v.x, v.y, v.z, m.x, m.y, m.z);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -104,4 +122,9 @@ public class CopperBacktankTileEntity extends KineticTileEntity implements IName
|
|||
.getTranslationKey());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldRenderAsTE() {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import net.minecraft.item.ItemStack;
|
|||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.potion.EffectInstance;
|
||||
import net.minecraft.potion.Effects;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
|
||||
|
@ -22,11 +23,13 @@ public class DivingHelmetItem extends CopperArmorItem {
|
|||
@SubscribeEvent
|
||||
public static void breatheUnderwater(LivingUpdateEvent event) {
|
||||
LivingEntity entity = event.getEntityLiving();
|
||||
boolean second = entity.world.getGameTime() % 20 == 0;
|
||||
World world = entity.world;
|
||||
boolean second = world.getGameTime() % 20 == 0;
|
||||
boolean drowning = entity.getAir() == 0;
|
||||
|
||||
if (!second && !drowning)
|
||||
return;
|
||||
if (world.isRemote)
|
||||
entity.getPersistentData()
|
||||
.remove("VisualBacktankAir");
|
||||
|
||||
if (!AllItems.DIVING_HELMET.get()
|
||||
.isWornBy(entity))
|
||||
|
@ -52,6 +55,11 @@ public class DivingHelmetItem extends CopperArmorItem {
|
|||
|
||||
if (drowning)
|
||||
entity.setAir(10);
|
||||
|
||||
if (world.isRemote)
|
||||
entity.getPersistentData()
|
||||
.putInt("VisualBacktankAir", airRemaining);
|
||||
|
||||
if (!second)
|
||||
return;
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.tra
|
|||
import com.simibubi.create.content.contraptions.components.turntable.TurntableHandler;
|
||||
import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorHandler;
|
||||
import com.simibubi.create.content.curiosities.armor.CopperBacktankArmorLayer;
|
||||
import com.simibubi.create.content.curiosities.tools.ExtendoGripRenderHandler;
|
||||
import com.simibubi.create.content.curiosities.zapper.ZapperItem;
|
||||
import com.simibubi.create.content.curiosities.zapper.ZapperRenderHandler;
|
||||
|
@ -55,6 +56,7 @@ import com.simibubi.create.foundation.utility.worldWrappers.WrappedClientWorld;
|
|||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ActiveRenderInfo;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer.Impl;
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||
import net.minecraft.client.world.ClientWorld;
|
||||
import net.minecraft.fluid.Fluid;
|
||||
|
@ -200,12 +202,20 @@ public class ClientEvents {
|
|||
|
||||
@SubscribeEvent
|
||||
public static void onRenderOverlay(RenderGameOverlayEvent.Post event) {
|
||||
MatrixStack ms = event.getMatrixStack();
|
||||
Impl buffers = Minecraft.getInstance()
|
||||
.getBufferBuilders()
|
||||
.getEntityVertexConsumers();
|
||||
int light = 0xF000F0;
|
||||
int overlay = OverlayTexture.DEFAULT_UV;
|
||||
float pt = event.getPartialTicks();
|
||||
|
||||
if (event.getType() == ElementType.AIR)
|
||||
CopperBacktankArmorLayer.renderRemainingAirOverlay(ms, buffers, light, overlay, pt);
|
||||
if (event.getType() != ElementType.HOTBAR)
|
||||
return;
|
||||
|
||||
onRenderHotbar(event.getMatrixStack(), Minecraft.getInstance()
|
||||
.getBufferBuilders()
|
||||
.getEntityVertexConsumers(), 0xF000F0, OverlayTexture.DEFAULT_UV, event.getPartialTicks());
|
||||
onRenderHotbar(ms, buffers, light, overlay, pt);
|
||||
}
|
||||
|
||||
public static void onRenderHotbar(MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay,
|
||||
|
|
|
@ -5,110 +5,6 @@
|
|||
"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],
|
||||
|
@ -164,15 +60,10 @@
|
|||
}
|
||||
],
|
||||
"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]
|
||||
"children": [0, 1, 2, 3, 4]
|
||||
},
|
||||
{
|
||||
"name": "Axle",
|
||||
|
|
|
@ -0,0 +1,125 @@
|
|||
{
|
||||
"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"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"groups": [
|
||||
{
|
||||
"name": "Gears",
|
||||
"origin": [1, 2.5, 0.5],
|
||||
"children": [0, 1, 2, 3, 4, 5, 6, 7]
|
||||
},
|
||||
{
|
||||
"name": "Axle",
|
||||
"origin": [8, 8, 8],
|
||||
"children": []
|
||||
}
|
||||
]
|
||||
}
|
Loading…
Reference in a new issue