Vegetable accelerator
- Added the Potato Cannon - Extendogrips now have durability, which is not consumed while wearing a copper backtank (same applies for potato cannon) - Added a few projectile types for testing
This commit is contained in:
parent
760486adb6
commit
5a30c3bcdb
48 changed files with 1757 additions and 138 deletions
|
@ -407,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
|
||||
c71f5246d2cb8e9913d1552d23fcc82c43cde7a0 assets/create/lang/en_ud.json
|
||||
1e395855b99f48b50dc6eed77ba715237867bebf assets/create/lang/en_us.json
|
||||
ca34a1523c0b9787666923c189167cf239e85f1c assets/create/lang/unfinished/de_de.json
|
||||
3ba4235fbc33ee28e7a6ef779d391a00858f0f52 assets/create/lang/unfinished/es_es.json
|
||||
049ca87082069d80b22dd204296a14f67c01931a assets/create/lang/unfinished/es_mx.json
|
||||
df29299d27809d115f352ae82935d6b406d08754 assets/create/lang/unfinished/fr_fr.json
|
||||
0bb18404e068bbfc0332474fc78f5ce0440ee295 assets/create/lang/unfinished/it_it.json
|
||||
0250be349a9364792717bb8d9bc680c6faa6291f assets/create/lang/unfinished/ja_jp.json
|
||||
a70d2a2a75879a8ea0dea59964c2b20ae67033fd assets/create/lang/unfinished/ko_kr.json
|
||||
1294137911d5b8e9aba264f1a1ce80644250354a assets/create/lang/unfinished/nl_nl.json
|
||||
66f09bc9549c733d4bc3d8d31005f119efd952eb assets/create/lang/unfinished/pl_pl.json
|
||||
4474c63c836597d1751bf86ee0166a3ca5e01db6 assets/create/lang/unfinished/pt_br.json
|
||||
a95d5f9b37ec32a7c477c21f21d035471ea6ad24 assets/create/lang/unfinished/ru_ru.json
|
||||
11c5105e97c88463511b200afebbcbdc58f1d116 assets/create/lang/unfinished/zh_cn.json
|
||||
044db0d49cdcde32ba69bf34fa4117b8c9b5d40c assets/create/lang/unfinished/zh_tw.json
|
||||
a653b0f1c3025a3cd6500a94f8bd33476bd7a307 assets/create/lang/en_ud.json
|
||||
a439c55743394b9a8d64c8e83f15a7ff4d7916d5 assets/create/lang/en_us.json
|
||||
a71e12072b830c74e35ad0bc6f57222b89210194 assets/create/lang/unfinished/de_de.json
|
||||
b18e9d79be48ced653d6b74c933f90de9b3f33df assets/create/lang/unfinished/es_es.json
|
||||
6b52b20eab6aeb55b47343ca9ca14fd411608444 assets/create/lang/unfinished/es_mx.json
|
||||
6a7abf7fa4d567de46c200f6de1336e6b1a4d3b1 assets/create/lang/unfinished/fr_fr.json
|
||||
bf287988337c6da1a4972328eee17a941f934ecf assets/create/lang/unfinished/it_it.json
|
||||
51c0fe08a014501775f6c04c31232a704265ddbb assets/create/lang/unfinished/ja_jp.json
|
||||
21bd6861640a1e0d10c0d9c6fb694e6290c41d3f assets/create/lang/unfinished/ko_kr.json
|
||||
a6ac4ed14e89192928bbaee12d4d87eff62c7044 assets/create/lang/unfinished/nl_nl.json
|
||||
e4a1c5579c6a9341aa64e5c6375778f5af71a483 assets/create/lang/unfinished/pl_pl.json
|
||||
abd17be74ff3142252645365f8526d1a799d8c2f assets/create/lang/unfinished/pt_br.json
|
||||
ca4a80fc40e2c86fd6c2f5514d81803c6908fcb6 assets/create/lang/unfinished/ru_ru.json
|
||||
428e0831c3dfc80b888d675a4159af54105efc56 assets/create/lang/unfinished/zh_cn.json
|
||||
e49b570ee482802accb0b76638de5b7f7f417deb 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
|
||||
|
@ -1565,6 +1565,7 @@ e95125318055b8557afd7d108488cf0bdd81fe49 assets/create/models/item/polished_scor
|
|||
d98a1d479dff88d7a6f084f2c9de8fbbf80961ef assets/create/models/item/polished_weathered_limestone_wall.json
|
||||
0e5638cdbf04d7af2222ec15fbe1d960385ea237 assets/create/models/item/portable_fluid_interface.json
|
||||
3bc60b0d9884c2ee0f1dd530e90fceb699eea737 assets/create/models/item/portable_storage_interface.json
|
||||
b97c891ebe74e7850ef1f982e4cc043338baa30f assets/create/models/item/potato_cannon.json
|
||||
417c301eb7e54f14c564975570f59d048cc88987 assets/create/models/item/powdered_obsidian.json
|
||||
1e501c1f2e9250aaaadcf17db62646d08177d4e1 assets/create/models/item/powered_latch.json
|
||||
3a6dfc7f36e31ebfcd650c3144a7f2210e8a4f9f assets/create/models/item/powered_toggle_latch.json
|
||||
|
@ -1653,7 +1654,7 @@ 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
|
||||
6490fa0587db770cf7c794b47f3bcd2b691f4226 assets/create/sounds.json
|
||||
f4c38d16e998aa2dbad4a827035fd5754c060104 assets/create/sounds.json
|
||||
0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json
|
||||
187921fa131b06721bfaf63f2623a28c141aae9a data/create/advancements/andesite_alloy.json
|
||||
0ea2db7173b5be28b289ea7c9a6a0cf5805c60c7 data/create/advancements/andesite_casing.json
|
||||
|
@ -1680,9 +1681,9 @@ d1015e059a2f2008a364b6d045a011a6d671f20d data/create/advancements/copper_casing.
|
|||
d1fbc14303c7327e9fc02e505e7e434591b7f785 data/create/advancements/crushing_wheel.json
|
||||
e9e1789de5cd5577a801a09d489a13f2c98779dc data/create/advancements/cuckoo.json
|
||||
2a96fad5b44b62f233c9af5b4a637faf32ce24af data/create/advancements/deployer.json
|
||||
eb8e7c13163923d2f88c999c6eb5afa4b7d2426e data/create/advancements/dual_extendo_grip.json
|
||||
20e04d0ac916996efedc35ab80e2b4ac4001582c data/create/advancements/dual_extendo_grip.json
|
||||
04eaf829696d735244c0e4798dd3bdeb26e13a32 data/create/advancements/electron_tube.json
|
||||
36622ff02345cdc2404230c48de9ed42b1b9bd1d data/create/advancements/extendo_grip.json
|
||||
6cf58b2b705b3db2fe8c2f38d86d82a214eead95 data/create/advancements/extendo_grip.json
|
||||
b1699baaadaac7ebce642c09428519d156e21594 data/create/advancements/fan.json
|
||||
5aa76cba3b40a1c234ffa84a89ecca630990fc0f data/create/advancements/fan_lava.json
|
||||
716a9816558300a3652ed8d8d568517017813f5c data/create/advancements/fan_smoke.json
|
||||
|
|
|
@ -48,7 +48,6 @@
|
|||
"block.create.chiseled_scoria": "\u0250\u0131\u0279o\u0254S p\u01DD\u05DF\u01DDs\u0131\u0265\u0186",
|
||||
"block.create.chiseled_weathered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u05DF\u01DDs\u0131\u0265\u0186",
|
||||
"block.create.chocolate": "\u01DD\u0287\u0250\u05DFo\u0254o\u0265\u0186",
|
||||
"block.create.chromatic_projector": "\u0279o\u0287\u0254\u01DD\u0638o\u0279\u0500 \u0254\u0131\u0287\u0250\u026Fo\u0279\u0265\u0186",
|
||||
"block.create.chute": "\u01DD\u0287n\u0265\u0186",
|
||||
"block.create.clockwork_bearing": "bu\u0131\u0279\u0250\u01DD\u15FA \u029E\u0279o\u028D\u029E\u0254o\u05DF\u0186",
|
||||
"block.create.clutch": "\u0265\u0254\u0287n\u05DF\u0186",
|
||||
|
@ -412,6 +411,7 @@
|
|||
"entity.create.contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186",
|
||||
"entity.create.crafting_blueprint": "\u0287u\u0131\u0279d\u01DDn\u05DF\u15FA bu\u0131\u0287\u025F\u0250\u0279\u0186",
|
||||
"entity.create.gantry_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u028E\u0279\u0287u\u0250\u2141",
|
||||
"entity.create.potato_projectile": "\u01DD\u05DF\u0131\u0287\u0254\u01DD\u0638o\u0279\u0500 o\u0287\u0250\u0287o\u0500",
|
||||
"entity.create.seat": "\u0287\u0250\u01DDS",
|
||||
"entity.create.stationary_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u028E\u0279\u0250uo\u0131\u0287\u0250\u0287S",
|
||||
"entity.create.super_glue": "\u01DDn\u05DF\u2141 \u0279\u01DDdnS",
|
||||
|
@ -475,6 +475,7 @@
|
|||
"item.create.minecart_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u0287\u0279\u0250\u0254\u01DDu\u0131W",
|
||||
"item.create.minecart_coupling": "bu\u0131\u05DFdno\u0186 \u0287\u0279\u0250\u0254\u01DDu\u0131W",
|
||||
"item.create.polished_rose_quartz": "z\u0287\u0279\u0250n\u1F49 \u01DDso\u1D1A p\u01DD\u0265s\u0131\u05DFo\u0500",
|
||||
"item.create.potato_cannon": "uouu\u0250\u0186 o\u0287\u0250\u0287o\u0500",
|
||||
"item.create.powdered_obsidian": "u\u0250\u0131p\u0131sqO p\u01DD\u0279\u01DDp\u028Do\u0500",
|
||||
"item.create.propeller": "\u0279\u01DD\u05DF\u05DF\u01DDdo\u0279\u0500",
|
||||
"item.create.red_sand_paper": "\u0279\u01DDd\u0250\u0500 pu\u0250S p\u01DD\u1D1A",
|
||||
|
|
|
@ -415,6 +415,7 @@
|
|||
"entity.create.contraption": "Contraption",
|
||||
"entity.create.crafting_blueprint": "Crafting Blueprint",
|
||||
"entity.create.gantry_contraption": "Gantry Contraption",
|
||||
"entity.create.potato_projectile": "Potato Projectile",
|
||||
"entity.create.seat": "Seat",
|
||||
"entity.create.stationary_contraption": "Stationary Contraption",
|
||||
"entity.create.super_glue": "Super Glue",
|
||||
|
@ -480,6 +481,7 @@
|
|||
"item.create.minecart_contraption": "Minecart Contraption",
|
||||
"item.create.minecart_coupling": "Minecart Coupling",
|
||||
"item.create.polished_rose_quartz": "Polished Rose Quartz",
|
||||
"item.create.potato_cannon": "Potato Cannon",
|
||||
"item.create.powdered_obsidian": "Powdered Obsidian",
|
||||
"item.create.propeller": "Propeller",
|
||||
"item.create.red_sand_paper": "Red Sand Paper",
|
||||
|
@ -669,6 +671,8 @@
|
|||
"death.attack.create.fan_lava": "%1$s was burned to death by lava fan",
|
||||
"death.attack.create.mechanical_drill": "%1$s was impaled by a Mechanical Drill",
|
||||
"death.attack.create.mechanical_saw": "%1$s got cut in half by a Mechanical Saw",
|
||||
"death.attack.create.potato_cannon": "%1$s was shot by %2$s's Potato Cannon",
|
||||
"death.attack.create.potato_cannon.item": "%1$s was shot by %2$s using %3$s",
|
||||
"death.attack.create.cuckoo_clock_explosion": "%1$s was blown up by tampered cuckoo clock",
|
||||
|
||||
"create.block.deployer.damage_source_name": "a rogue Deployer",
|
||||
|
@ -1165,6 +1169,7 @@
|
|||
"create.subtitle.contraption_disassemble": "Contraption stops",
|
||||
"create.subtitle.mixing": "Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "Mechanical Press bonks",
|
||||
"create.subtitle.fwoomp": "Potato Launcher fwoomps",
|
||||
"create.subtitle.worldshaper_place": "Worldshaper zaps",
|
||||
"create.subtitle.depot_slide": "Item slides",
|
||||
"create.subtitle.saw_activate_stone": "Mechanical Saw activates",
|
||||
|
@ -1179,6 +1184,7 @@
|
|||
"create.subtitle.cogs": "Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Slime squishes",
|
||||
"create.subtitle.wrench_rotate": "Wrench used",
|
||||
"create.subtitle.potato_hit": "Vegetable impacts",
|
||||
"create.subtitle.saw_activate_wood": "Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "Deployer applies polish",
|
||||
"create.subtitle.deny": "Declining boop",
|
||||
|
@ -1243,9 +1249,18 @@
|
|||
"item.create.tree_fertilizer.tooltip.behaviour1": "Grows Trees _regardless_ of their _spacing conditions_",
|
||||
|
||||
"item.create.extendo_grip.tooltip": "EXTENDO GRIP",
|
||||
"item.create.extendo_grip.tooltip.summary": "Boioioing! Greatly _increases reach distance_ of the wielder.",
|
||||
"item.create.extendo_grip.tooltip.summary": "Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.extendo_grip.tooltip.condition1": "When in Off-Hand",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "Increases _reach distance_ of items used in the _Main-Hand_.",
|
||||
"item.create.extendo_grip.tooltip.condition2": "While wearing Copper Backtank",
|
||||
"item.create.extendo_grip.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.potato_cannon.tooltip": "POTATO CANNON",
|
||||
"item.create.potato_cannon.tooltip.summary": "Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.potato_cannon.tooltip.condition1": "When R-Clicked",
|
||||
"item.create.potato_cannon.tooltip.behaviour1": "_Shoots_ a suitable item from your _Inventory_.",
|
||||
"item.create.potato_cannon.tooltip.condition2": "While wearing Copper Backtank",
|
||||
"item.create.potato_cannon.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.filter.tooltip": "FILTER",
|
||||
"item.create.filter.tooltip.summary": "_Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of items_ or several _nested filters_.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1047",
|
||||
"_": "Missing Localizations: 1061",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -416,6 +416,7 @@
|
|||
"entity.create.contraption": "Vorrichtung",
|
||||
"entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
|
||||
"entity.create.gantry_contraption": "Portalkran Vorrichtung",
|
||||
"entity.create.potato_projectile": "UNLOCALIZED: Potato Projectile",
|
||||
"entity.create.seat": "Sitz",
|
||||
"entity.create.stationary_contraption": "Stationäre Vorrichtung",
|
||||
"entity.create.super_glue": "Superkleber",
|
||||
|
@ -481,6 +482,7 @@
|
|||
"item.create.minecart_contraption": "Loren Vorrichtung",
|
||||
"item.create.minecart_coupling": "Lorenkupplung",
|
||||
"item.create.polished_rose_quartz": "Polierter Rosenquarz",
|
||||
"item.create.potato_cannon": "UNLOCALIZED: Potato Cannon",
|
||||
"item.create.powdered_obsidian": "Pulverisierter Obsidian",
|
||||
"item.create.propeller": "Propeller",
|
||||
"item.create.red_sand_paper": "Rotes Schmirgelpapier",
|
||||
|
@ -670,6 +672,8 @@
|
|||
"death.attack.create.fan_lava": "%1$s wurde von Lava verweht",
|
||||
"death.attack.create.mechanical_drill": "%1$s wurde von einem Bohrer durchlöchert",
|
||||
"death.attack.create.mechanical_saw": "%1$s wurde zersägt",
|
||||
"death.attack.create.potato_cannon": "UNLOCALIZED: %1$s was shot by %2$s's Potato Cannon",
|
||||
"death.attack.create.potato_cannon.item": "UNLOCALIZED: %1$s was shot by %2$s using %3$s",
|
||||
"death.attack.create.cuckoo_clock_explosion": "%1$s wurde durch eine falsche Kuckucksuhr gesprengt",
|
||||
|
||||
"create.block.deployer.damage_source_name": "einem Finger",
|
||||
|
@ -1166,6 +1170,7 @@
|
|||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
|
@ -1180,6 +1185,7 @@
|
|||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Schleim matscht",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
|
@ -1244,9 +1250,18 @@
|
|||
"item.create.tree_fertilizer.tooltip.behaviour1": "Lässt Bäume unabhängig vom Platz um sie herum wachsen",
|
||||
|
||||
"item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP",
|
||||
"item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder.",
|
||||
"item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.",
|
||||
"item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON",
|
||||
"item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked",
|
||||
"item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.",
|
||||
"item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.filter.tooltip": "UNLOCALIZED: FILTER",
|
||||
"item.create.filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of items_ or several _nested filters_.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 808",
|
||||
"_": "Missing Localizations: 822",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -416,6 +416,7 @@
|
|||
"entity.create.contraption": "Artilugio",
|
||||
"entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
|
||||
"entity.create.gantry_contraption": "Artilugio de grúa",
|
||||
"entity.create.potato_projectile": "UNLOCALIZED: Potato Projectile",
|
||||
"entity.create.seat": "Asiento",
|
||||
"entity.create.stationary_contraption": "Artilugio estacionario",
|
||||
"entity.create.super_glue": "Super Pegamento",
|
||||
|
@ -481,6 +482,7 @@
|
|||
"item.create.minecart_contraption": "Artilugio de vagoneta",
|
||||
"item.create.minecart_coupling": "Acoplamiento de vagoneta",
|
||||
"item.create.polished_rose_quartz": "Cuarzo rosado pulido",
|
||||
"item.create.potato_cannon": "UNLOCALIZED: Potato Cannon",
|
||||
"item.create.powdered_obsidian": "Obsidiana en polvo",
|
||||
"item.create.propeller": "Hélice",
|
||||
"item.create.red_sand_paper": "Papel de lija rojo",
|
||||
|
@ -670,6 +672,8 @@
|
|||
"death.attack.create.fan_lava": "%1$s murió quemado por un abanico de lava",
|
||||
"death.attack.create.mechanical_drill": "%1$s fue empalado por un taladro mecánico",
|
||||
"death.attack.create.mechanical_saw": "%1$s fue cortado por la mitad por una sierra mecánica",
|
||||
"death.attack.create.potato_cannon": "UNLOCALIZED: %1$s was shot by %2$s's Potato Cannon",
|
||||
"death.attack.create.potato_cannon.item": "UNLOCALIZED: %1$s was shot by %2$s using %3$s",
|
||||
"death.attack.create.cuckoo_clock_explosion": "%1$s fue volado por los aires por un reloj cucú manipulado",
|
||||
|
||||
"create.block.deployer.damage_source_name": "un Desplegador rebelde",
|
||||
|
@ -1166,6 +1170,7 @@
|
|||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
|
@ -1180,6 +1185,7 @@
|
|||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Slime aplastado",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
|
@ -1247,6 +1253,15 @@
|
|||
"item.create.extendo_grip.tooltip.summary": "¡Boioioing! Aumenta enormemente la _distancia de alcance_ del portador",
|
||||
"item.create.extendo_grip.tooltip.condition1": "Cuando está fuera de la mano",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "Aumenta la _distancia de alcance_ de los objetos usados en la _mano principal_",
|
||||
"item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON",
|
||||
"item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked",
|
||||
"item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.",
|
||||
"item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.filter.tooltip": "FILTRO",
|
||||
"item.create.filter.tooltip.summary": "Controla las salidas_ y _entradas_ de los dispositivos logísticos con más _precisión_, comparándolas con un _conjunto de elementos_ o varios _filtros anidados_",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1414",
|
||||
"_": "Missing Localizations: 1428",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -416,6 +416,7 @@
|
|||
"entity.create.contraption": "Artefacto",
|
||||
"entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
|
||||
"entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption",
|
||||
"entity.create.potato_projectile": "UNLOCALIZED: Potato Projectile",
|
||||
"entity.create.seat": "Asiento",
|
||||
"entity.create.stationary_contraption": "Artefacto Estacionario",
|
||||
"entity.create.super_glue": "Super Pegamento",
|
||||
|
@ -481,6 +482,7 @@
|
|||
"item.create.minecart_contraption": "Artefacto de Vagón",
|
||||
"item.create.minecart_coupling": "Acoplamiento de Vagonetas",
|
||||
"item.create.polished_rose_quartz": "Cuarzo Rosa Pulido",
|
||||
"item.create.potato_cannon": "UNLOCALIZED: Potato Cannon",
|
||||
"item.create.powdered_obsidian": "Polvo de Obsidiana",
|
||||
"item.create.propeller": "Hélice",
|
||||
"item.create.red_sand_paper": "Papel de Arena Roja",
|
||||
|
@ -670,6 +672,8 @@
|
|||
"death.attack.create.fan_lava": "UNLOCALIZED: %1$s was burned to death by lava fan",
|
||||
"death.attack.create.mechanical_drill": "UNLOCALIZED: %1$s was impaled by a Mechanical Drill",
|
||||
"death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by a Mechanical Saw",
|
||||
"death.attack.create.potato_cannon": "UNLOCALIZED: %1$s was shot by %2$s's Potato Cannon",
|
||||
"death.attack.create.potato_cannon.item": "UNLOCALIZED: %1$s was shot by %2$s using %3$s",
|
||||
"death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock",
|
||||
|
||||
"create.block.deployer.damage_source_name": "UNLOCALIZED: a rogue Deployer",
|
||||
|
@ -1166,6 +1170,7 @@
|
|||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
|
@ -1180,6 +1185,7 @@
|
|||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "UNLOCALIZED: Slime squishes",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
|
@ -1247,6 +1253,15 @@
|
|||
"item.create.extendo_grip.tooltip.summary": "Boioioing! En gran medida, _aumenta_ _la_ _distancia_ _de_ _alcance_ del portador.",
|
||||
"item.create.extendo_grip.tooltip.condition1": "Cuando está en la mano secundaria",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "Aumenta el rango de alcance de los objetos usados en la _mano_ _principal._",
|
||||
"item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON",
|
||||
"item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked",
|
||||
"item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.",
|
||||
"item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.filter.tooltip": "FILTER",
|
||||
"item.create.filter.tooltip.summary": "_Controla_ las _salidas_ y _entradas_ de los dispositivos logísticos con más _precisión,_ comparándolas con un _conjunto_ _de_ _objetos_ o varios _filtros_ _anidados._",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1299",
|
||||
"_": "Missing Localizations: 1313",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -416,6 +416,7 @@
|
|||
"entity.create.contraption": "Engin",
|
||||
"entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
|
||||
"entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption",
|
||||
"entity.create.potato_projectile": "UNLOCALIZED: Potato Projectile",
|
||||
"entity.create.seat": "Siège",
|
||||
"entity.create.stationary_contraption": "Engin stationnaire",
|
||||
"entity.create.super_glue": "Colle extra-forte",
|
||||
|
@ -481,6 +482,7 @@
|
|||
"item.create.minecart_contraption": "Engin de wagonnet",
|
||||
"item.create.minecart_coupling": "Lien pour wagonnet",
|
||||
"item.create.polished_rose_quartz": "Quartz rose poli",
|
||||
"item.create.potato_cannon": "UNLOCALIZED: Potato Cannon",
|
||||
"item.create.powdered_obsidian": "Obsidienne concassée",
|
||||
"item.create.propeller": "Hélice",
|
||||
"item.create.red_sand_paper": "Papier de verre rouge",
|
||||
|
@ -670,6 +672,8 @@
|
|||
"death.attack.create.fan_lava": "%1$s a été brûlé à mort par un ventilateur de lave",
|
||||
"death.attack.create.mechanical_drill": "%1$s a été empalé par une perceuse mécanique",
|
||||
"death.attack.create.mechanical_saw": "%1$s a été coupé en deux par une scie mécanique",
|
||||
"death.attack.create.potato_cannon": "UNLOCALIZED: %1$s was shot by %2$s's Potato Cannon",
|
||||
"death.attack.create.potato_cannon.item": "UNLOCALIZED: %1$s was shot by %2$s using %3$s",
|
||||
"death.attack.create.cuckoo_clock_explosion": "%1$s a été explosé par un coucou trafiquée",
|
||||
|
||||
"create.block.deployer.damage_source_name": "un déployeur voyou",
|
||||
|
@ -1166,6 +1170,7 @@
|
|||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
|
@ -1180,6 +1185,7 @@
|
|||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Bruit de slime",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
|
@ -1244,9 +1250,18 @@
|
|||
"item.create.tree_fertilizer.tooltip.behaviour1": "Fait pousser des rotors _indépendamment_ de leurs _conditions_ _d'emplacement_",
|
||||
|
||||
"item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP",
|
||||
"item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder.",
|
||||
"item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.",
|
||||
"item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON",
|
||||
"item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked",
|
||||
"item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.",
|
||||
"item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.filter.tooltip": "FILTRE",
|
||||
"item.create.filter.tooltip.summary": "_Contrôle_ les _sorties_ et _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 825",
|
||||
"_": "Missing Localizations: 839",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -416,6 +416,7 @@
|
|||
"entity.create.contraption": "Contrazione",
|
||||
"entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
|
||||
"entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption",
|
||||
"entity.create.potato_projectile": "UNLOCALIZED: Potato Projectile",
|
||||
"entity.create.seat": "Sedile",
|
||||
"entity.create.stationary_contraption": "Contrazione stazionaria",
|
||||
"entity.create.super_glue": "Super colla",
|
||||
|
@ -481,6 +482,7 @@
|
|||
"item.create.minecart_contraption": "Contrazione per carrello da miniera",
|
||||
"item.create.minecart_coupling": "Aggancio per carrelli da miniera",
|
||||
"item.create.polished_rose_quartz": "Quarzo rosa levigato",
|
||||
"item.create.potato_cannon": "UNLOCALIZED: Potato Cannon",
|
||||
"item.create.powdered_obsidian": "Ossidiana in polvere",
|
||||
"item.create.propeller": "Elica",
|
||||
"item.create.red_sand_paper": "Carta vetrata rossa",
|
||||
|
@ -670,6 +672,8 @@
|
|||
"death.attack.create.fan_lava": "%1$s è stato bruciato dal ventilatore di lava",
|
||||
"death.attack.create.mechanical_drill": "%1$s è stato trafitto dal trapano meccanico",
|
||||
"death.attack.create.mechanical_saw": "%1$s è stato tagliato a metà dalla sega meccanica",
|
||||
"death.attack.create.potato_cannon": "UNLOCALIZED: %1$s was shot by %2$s's Potato Cannon",
|
||||
"death.attack.create.potato_cannon.item": "UNLOCALIZED: %1$s was shot by %2$s using %3$s",
|
||||
"death.attack.create.cuckoo_clock_explosion": "%1$s è saltato in aria da un orologio a cucù manomesso",
|
||||
|
||||
"create.block.deployer.damage_source_name": "un disadattato",
|
||||
|
@ -1166,6 +1170,7 @@
|
|||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
|
@ -1180,6 +1185,7 @@
|
|||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Slime schiacciato",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
|
@ -1247,6 +1253,15 @@
|
|||
"item.create.extendo_grip.tooltip.summary": "Boioioing! _Incrementa notevolmente la distanza per piazzare_ di chi lo brandisce.",
|
||||
"item.create.extendo_grip.tooltip.condition1": "Quando in mano secondaria",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "Incrementa la _distanza per piazzare_ degli oggetti usati nella _mano primaria_.",
|
||||
"item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON",
|
||||
"item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked",
|
||||
"item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.",
|
||||
"item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.filter.tooltip": "FILTRO",
|
||||
"item.create.filter.tooltip.summary": "_Controlla_ _gli_ _output_ e gli _input_ dei dispositivi logistici con maggiore _precisione_, confrontandoli con una _serie_ _di_ _oggetti_ o diversi _filtri_ _nidificati_.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 191",
|
||||
"_": "Missing Localizations: 205",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -416,6 +416,7 @@
|
|||
"entity.create.contraption": "からくり",
|
||||
"entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
|
||||
"entity.create.gantry_contraption": "ガントリーからくり",
|
||||
"entity.create.potato_projectile": "UNLOCALIZED: Potato Projectile",
|
||||
"entity.create.seat": "シート",
|
||||
"entity.create.stationary_contraption": "付設からくり",
|
||||
"entity.create.super_glue": "超粘着剤",
|
||||
|
@ -481,6 +482,7 @@
|
|||
"item.create.minecart_contraption": "からくり付きトロッコ",
|
||||
"item.create.minecart_coupling": "トロッコ連結器",
|
||||
"item.create.polished_rose_quartz": "磨かれたローズクォーツ",
|
||||
"item.create.potato_cannon": "UNLOCALIZED: Potato Cannon",
|
||||
"item.create.powdered_obsidian": "黒曜石の粉",
|
||||
"item.create.propeller": "プロペラ",
|
||||
"item.create.red_sand_paper": "赤い紙やすり",
|
||||
|
@ -670,6 +672,8 @@
|
|||
"death.attack.create.fan_lava": "%1$s は溶岩ファンによって焼死した",
|
||||
"death.attack.create.mechanical_drill": "%1$s はメカニカルドリルに突き刺さった",
|
||||
"death.attack.create.mechanical_saw": "%1$s はメカニカルソーで半分にカットされた",
|
||||
"death.attack.create.potato_cannon": "UNLOCALIZED: %1$s was shot by %2$s's Potato Cannon",
|
||||
"death.attack.create.potato_cannon.item": "UNLOCALIZED: %1$s was shot by %2$s using %3$s",
|
||||
"death.attack.create.cuckoo_clock_explosion": "%1$s は改ざんされた鳩時計に爆破された",
|
||||
|
||||
"create.block.deployer.damage_source_name": "悪いデプロイヤー",
|
||||
|
@ -1166,6 +1170,7 @@
|
|||
"create.subtitle.contraption_disassemble": "からくりが止まる",
|
||||
"create.subtitle.mixing": "混ぜる音",
|
||||
"create.subtitle.mechanical_press_activation_belt": "メカニカルプレスがボンと鳴る",
|
||||
"create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.depot_slide": "アイテムが滑る",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
|
@ -1180,6 +1185,7 @@
|
|||
"create.subtitle.cogs": "歯車がゴロゴロと鳴る",
|
||||
"create.subtitle.slime_added": "スライムがぐしゃっとつぶれる",
|
||||
"create.subtitle.wrench_rotate": "レンチを使う",
|
||||
"create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
|
@ -1247,6 +1253,15 @@
|
|||
"item.create.extendo_grip.tooltip.summary": "ビヨヨーン!着用者の_射程_を大幅に_伸ばし_ます。",
|
||||
"item.create.extendo_grip.tooltip.condition1": "オフハンドに装備したとき",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "_メインハンド_で使うアイテムの_射程_を_伸ばし_ます。",
|
||||
"item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON",
|
||||
"item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked",
|
||||
"item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.",
|
||||
"item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.filter.tooltip": "フィルター",
|
||||
"item.create.filter.tooltip.summary": "物流系の装置の_搬入_と_搬出_をより_正確_に_制御_し、_アイテムのセット_またはいくつかの_入れ子になったフィルター_と照合します。",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 878",
|
||||
"_": "Missing Localizations: 892",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -416,6 +416,7 @@
|
|||
"entity.create.contraption": "장치",
|
||||
"entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
|
||||
"entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption",
|
||||
"entity.create.potato_projectile": "UNLOCALIZED: Potato Projectile",
|
||||
"entity.create.seat": "좌석",
|
||||
"entity.create.stationary_contraption": "고정된 장치",
|
||||
"entity.create.super_glue": "강력 접착제",
|
||||
|
@ -481,6 +482,7 @@
|
|||
"item.create.minecart_contraption": "광산 수레 장치",
|
||||
"item.create.minecart_coupling": "광산 수레 커플링",
|
||||
"item.create.polished_rose_quartz": "윤나는 장밋빛 석영",
|
||||
"item.create.potato_cannon": "UNLOCALIZED: Potato Cannon",
|
||||
"item.create.powdered_obsidian": "흑요석 가루",
|
||||
"item.create.propeller": "프로펠러",
|
||||
"item.create.red_sand_paper": "붉은 사포",
|
||||
|
@ -670,6 +672,8 @@
|
|||
"death.attack.create.fan_lava": "%1$s이(가) 용암 바람으로 구워졌습니다",
|
||||
"death.attack.create.mechanical_drill": "%1$s이(가) 드릴에 관통당했습니다",
|
||||
"death.attack.create.mechanical_saw": "%1$s이(가) 톱날에 반으로 갈라져 죽었습니다",
|
||||
"death.attack.create.potato_cannon": "UNLOCALIZED: %1$s was shot by %2$s's Potato Cannon",
|
||||
"death.attack.create.potato_cannon.item": "UNLOCALIZED: %1$s was shot by %2$s using %3$s",
|
||||
"death.attack.create.cuckoo_clock_explosion": "%1$s이(가) 조작된 뻐꾸기 시계에 의해 폭파당했습니다",
|
||||
|
||||
"create.block.deployer.damage_source_name": "배포기",
|
||||
|
@ -1166,6 +1170,7 @@
|
|||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
|
@ -1180,6 +1185,7 @@
|
|||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "슬라임이 철퍽거림",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
|
@ -1247,6 +1253,15 @@
|
|||
"item.create.extendo_grip.tooltip.summary": "띠요오옹! 사용자의 _사거리_를 늘려줍니다.",
|
||||
"item.create.extendo_grip.tooltip.condition1": "다른 손에 있을 때",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "_기존_ _손_에있는 아이템의 사거리를 늘립니다.",
|
||||
"item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON",
|
||||
"item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked",
|
||||
"item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.",
|
||||
"item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.filter.tooltip": "FILTER",
|
||||
"item.create.filter.tooltip.summary": "장치의 _입력_과 _출력_을 필터 _아이템_ 목록에 따라 _조정_합니다.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1682",
|
||||
"_": "Missing Localizations: 1696",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -416,6 +416,7 @@
|
|||
"entity.create.contraption": "UNLOCALIZED: Contraption",
|
||||
"entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
|
||||
"entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption",
|
||||
"entity.create.potato_projectile": "UNLOCALIZED: Potato Projectile",
|
||||
"entity.create.seat": "UNLOCALIZED: Seat",
|
||||
"entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption",
|
||||
"entity.create.super_glue": "UNLOCALIZED: Super Glue",
|
||||
|
@ -481,6 +482,7 @@
|
|||
"item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption",
|
||||
"item.create.minecart_coupling": "UNLOCALIZED: Minecart Coupling",
|
||||
"item.create.polished_rose_quartz": "UNLOCALIZED: Polished Rose Quartz",
|
||||
"item.create.potato_cannon": "UNLOCALIZED: Potato Cannon",
|
||||
"item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian",
|
||||
"item.create.propeller": "Propeller",
|
||||
"item.create.red_sand_paper": "UNLOCALIZED: Red Sand Paper",
|
||||
|
@ -670,6 +672,8 @@
|
|||
"death.attack.create.fan_lava": "%1$s is verbrand door een lava ventilator",
|
||||
"death.attack.create.mechanical_drill": "%1$s is gespietst door een mechanische boor",
|
||||
"death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by a Mechanical Saw",
|
||||
"death.attack.create.potato_cannon": "UNLOCALIZED: %1$s was shot by %2$s's Potato Cannon",
|
||||
"death.attack.create.potato_cannon.item": "UNLOCALIZED: %1$s was shot by %2$s using %3$s",
|
||||
"death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock",
|
||||
|
||||
"create.block.deployer.damage_source_name": "UNLOCALIZED: a rogue Deployer",
|
||||
|
@ -1166,6 +1170,7 @@
|
|||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
|
@ -1180,6 +1185,7 @@
|
|||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "UNLOCALIZED: Slime squishes",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
|
@ -1244,9 +1250,18 @@
|
|||
"item.create.tree_fertilizer.tooltip.behaviour1": "Groeit bomen onafhankelijk van beschikbare ruimte",
|
||||
|
||||
"item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP",
|
||||
"item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder.",
|
||||
"item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.",
|
||||
"item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON",
|
||||
"item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked",
|
||||
"item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.",
|
||||
"item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.filter.tooltip": "UNLOCALIZED: FILTER",
|
||||
"item.create.filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of items_ or several _nested filters_.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 167",
|
||||
"_": "Missing Localizations: 181",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -416,6 +416,7 @@
|
|||
"entity.create.contraption": "Maszyna",
|
||||
"entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
|
||||
"entity.create.gantry_contraption": "Maszyna suwnicowa",
|
||||
"entity.create.potato_projectile": "UNLOCALIZED: Potato Projectile",
|
||||
"entity.create.seat": "Siedzenie",
|
||||
"entity.create.stationary_contraption": "Maszyna stacjonarna",
|
||||
"entity.create.super_glue": "Super Glue",
|
||||
|
@ -481,6 +482,7 @@
|
|||
"item.create.minecart_contraption": "Maszyna w wagoniku",
|
||||
"item.create.minecart_coupling": "Łącznik wagoników",
|
||||
"item.create.polished_rose_quartz": "Wypolerowany kwarc różowy",
|
||||
"item.create.potato_cannon": "UNLOCALIZED: Potato Cannon",
|
||||
"item.create.powdered_obsidian": "Sproszkowany obsydian",
|
||||
"item.create.propeller": "Śmigło",
|
||||
"item.create.red_sand_paper": "Czerwony papier ścierny",
|
||||
|
@ -670,6 +672,8 @@
|
|||
"death.attack.create.fan_lava": "Gracz %1$s poparzył się kroplami lawy",
|
||||
"death.attack.create.mechanical_drill": "Gracz %1$s nabił się na mechaniczne wiertło",
|
||||
"death.attack.create.mechanical_saw": "Gracz %1$s został przecięty na pół przez mechaniczną piłę",
|
||||
"death.attack.create.potato_cannon": "UNLOCALIZED: %1$s was shot by %2$s's Potato Cannon",
|
||||
"death.attack.create.potato_cannon.item": "UNLOCALIZED: %1$s was shot by %2$s using %3$s",
|
||||
"death.attack.create.cuckoo_clock_explosion": "Gracz %1$s został wysadzony w powietrze przez uszkodzony zegar z kukułką",
|
||||
|
||||
"create.block.deployer.damage_source_name": "zbuntowany aplikator",
|
||||
|
@ -1166,6 +1170,7 @@
|
|||
"create.subtitle.contraption_disassemble": "Maszyna staje",
|
||||
"create.subtitle.mixing": "Dźwięki mieszania",
|
||||
"create.subtitle.mechanical_press_activation_belt": "Mechaniczna prasa stuka",
|
||||
"create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps",
|
||||
"create.subtitle.worldshaper_place": "Kształter strzela",
|
||||
"create.subtitle.depot_slide": "Przedmiot ślizga się",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
|
@ -1180,6 +1185,7 @@
|
|||
"create.subtitle.cogs": "Koła zębate terkoczą",
|
||||
"create.subtitle.slime_added": "Szlam plaska",
|
||||
"create.subtitle.wrench_rotate": "Klucz skrzypi",
|
||||
"create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "Aplikator poleruje",
|
||||
"create.subtitle.deny": "Dźwięk odmowy",
|
||||
|
@ -1247,6 +1253,15 @@
|
|||
"item.create.extendo_grip.tooltip.summary": "Mocno _wydłuża zasięg_ rąk posiadacza.",
|
||||
"item.create.extendo_grip.tooltip.condition1": "Kiedy w drugiej ręce",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "_Wydłuża zasięg_ głównej ręki.",
|
||||
"item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON",
|
||||
"item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked",
|
||||
"item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.",
|
||||
"item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.filter.tooltip": "FILTR",
|
||||
"item.create.filter.tooltip.summary": "_Kontroluje_ wejścia i wyjścia urządzeń logistycznych z _większą precyzją_, przypasowując przedmioty do listy przedmiotów zawartej w filtrze lub wielu filtrach schowanych jeden w drugi.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1723",
|
||||
"_": "Missing Localizations: 1737",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -416,6 +416,7 @@
|
|||
"entity.create.contraption": "UNLOCALIZED: Contraption",
|
||||
"entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
|
||||
"entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption",
|
||||
"entity.create.potato_projectile": "UNLOCALIZED: Potato Projectile",
|
||||
"entity.create.seat": "UNLOCALIZED: Seat",
|
||||
"entity.create.stationary_contraption": "UNLOCALIZED: Stationary Contraption",
|
||||
"entity.create.super_glue": "UNLOCALIZED: Super Glue",
|
||||
|
@ -481,6 +482,7 @@
|
|||
"item.create.minecart_contraption": "UNLOCALIZED: Minecart Contraption",
|
||||
"item.create.minecart_coupling": "UNLOCALIZED: Minecart Coupling",
|
||||
"item.create.polished_rose_quartz": "UNLOCALIZED: Polished Rose Quartz",
|
||||
"item.create.potato_cannon": "UNLOCALIZED: Potato Cannon",
|
||||
"item.create.powdered_obsidian": "UNLOCALIZED: Powdered Obsidian",
|
||||
"item.create.propeller": "Hélice",
|
||||
"item.create.red_sand_paper": "UNLOCALIZED: Red Sand Paper",
|
||||
|
@ -670,6 +672,8 @@
|
|||
"death.attack.create.fan_lava": "%1$s foi queimado pelo ventilador de lava",
|
||||
"death.attack.create.mechanical_drill": "%1$s foi empalado pela Furadeira Mecânica",
|
||||
"death.attack.create.mechanical_saw": "UNLOCALIZED: %1$s got cut in half by a Mechanical Saw",
|
||||
"death.attack.create.potato_cannon": "UNLOCALIZED: %1$s was shot by %2$s's Potato Cannon",
|
||||
"death.attack.create.potato_cannon.item": "UNLOCALIZED: %1$s was shot by %2$s using %3$s",
|
||||
"death.attack.create.cuckoo_clock_explosion": "UNLOCALIZED: %1$s was blown up by tampered cuckoo clock",
|
||||
|
||||
"create.block.deployer.damage_source_name": "UNLOCALIZED: a rogue Deployer",
|
||||
|
@ -1166,6 +1170,7 @@
|
|||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
|
@ -1180,6 +1185,7 @@
|
|||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "UNLOCALIZED: Slime squishes",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
|
@ -1244,9 +1250,18 @@
|
|||
"item.create.tree_fertilizer.tooltip.behaviour1": "Cresce Arvores independentemente das suas Regras de espaço",
|
||||
|
||||
"item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP",
|
||||
"item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder.",
|
||||
"item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.extendo_grip.tooltip.condition1": "UNLOCALIZED: When in Off-Hand",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "UNLOCALIZED: Increases _reach distance_ of items used in the _Main-Hand_.",
|
||||
"item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON",
|
||||
"item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked",
|
||||
"item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.",
|
||||
"item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.filter.tooltip": "UNLOCALIZED: FILTER",
|
||||
"item.create.filter.tooltip.summary": "UNLOCALIZED: _Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of items_ or several _nested filters_.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 724",
|
||||
"_": "Missing Localizations: 738",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -416,6 +416,7 @@
|
|||
"entity.create.contraption": "Штуковина",
|
||||
"entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
|
||||
"entity.create.gantry_contraption": "UNLOCALIZED: Gantry Contraption",
|
||||
"entity.create.potato_projectile": "UNLOCALIZED: Potato Projectile",
|
||||
"entity.create.seat": "Сиденье",
|
||||
"entity.create.stationary_contraption": "Стационарная штуковина",
|
||||
"entity.create.super_glue": "Супер-клей",
|
||||
|
@ -481,6 +482,7 @@
|
|||
"item.create.minecart_contraption": "Вагонеточная штуковина",
|
||||
"item.create.minecart_coupling": "Связыватель вагонеток",
|
||||
"item.create.polished_rose_quartz": "Полированный розовый кварц",
|
||||
"item.create.potato_cannon": "UNLOCALIZED: Potato Cannon",
|
||||
"item.create.powdered_obsidian": "Порошкообразный обсидиан",
|
||||
"item.create.propeller": "Пропеллер",
|
||||
"item.create.red_sand_paper": "Красная наждачная бумага",
|
||||
|
@ -670,6 +672,8 @@
|
|||
"death.attack.create.fan_lava": "%1$s был сожжен до смерти поклонником лавы",
|
||||
"death.attack.create.mechanical_drill": "%1$s был пронзен с помощью механической дрели",
|
||||
"death.attack.create.mechanical_saw": "%1$s был разрезан пополам механической пилой",
|
||||
"death.attack.create.potato_cannon": "UNLOCALIZED: %1$s was shot by %2$s's Potato Cannon",
|
||||
"death.attack.create.potato_cannon.item": "UNLOCALIZED: %1$s was shot by %2$s using %3$s",
|
||||
"death.attack.create.cuckoo_clock_explosion": "%1$s взорвали подделанные часы с кукушкой",
|
||||
|
||||
"create.block.deployer.damage_source_name": "автономным активатором",
|
||||
|
@ -1166,6 +1170,7 @@
|
|||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
|
@ -1180,6 +1185,7 @@
|
|||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "Намазывание слизи",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
|
@ -1247,6 +1253,15 @@
|
|||
"item.create.extendo_grip.tooltip.summary": "Бойоиоинг! Значительно _увеличивает_ _досягаемость_ владельца.",
|
||||
"item.create.extendo_grip.tooltip.condition1": "Находясь в другой руке",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "Увеличьте _расстояние_ _досягаемости_ предметов, используемых в _главной_ _руке_.",
|
||||
"item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON",
|
||||
"item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked",
|
||||
"item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.",
|
||||
"item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.filter.tooltip": "FILTER",
|
||||
"item.create.filter.tooltip.summary": "Управляет_ _выходами_ и входами логистических устройств с _большей_ _точностью_, _сопоставляя_ их со _списком_ _предметов_ или несколькими _вложенными_ _фильтрами_.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 208",
|
||||
"_": "Missing Localizations: 222",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -416,6 +416,7 @@
|
|||
"entity.create.contraption": "装置",
|
||||
"entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
|
||||
"entity.create.gantry_contraption": "起重机装置",
|
||||
"entity.create.potato_projectile": "UNLOCALIZED: Potato Projectile",
|
||||
"entity.create.seat": "坐垫",
|
||||
"entity.create.stationary_contraption": "固定装置",
|
||||
"entity.create.super_glue": "强力胶",
|
||||
|
@ -481,6 +482,7 @@
|
|||
"item.create.minecart_contraption": "装配过的矿车",
|
||||
"item.create.minecart_coupling": "矿车连轴器",
|
||||
"item.create.polished_rose_quartz": "磨制玫瑰石英",
|
||||
"item.create.potato_cannon": "UNLOCALIZED: Potato Cannon",
|
||||
"item.create.powdered_obsidian": "黑曜石粉末",
|
||||
"item.create.propeller": "扇叶",
|
||||
"item.create.red_sand_paper": "红沙砂纸",
|
||||
|
@ -670,6 +672,8 @@
|
|||
"death.attack.create.fan_lava": "%1$s在接受热风的洗礼中浴火焚身",
|
||||
"death.attack.create.mechanical_drill": "%1$s被钻头钻的坏掉了",
|
||||
"death.attack.create.mechanical_saw": "%1$s被圆锯切成了两截",
|
||||
"death.attack.create.potato_cannon": "UNLOCALIZED: %1$s was shot by %2$s's Potato Cannon",
|
||||
"death.attack.create.potato_cannon.item": "UNLOCALIZED: %1$s was shot by %2$s using %3$s",
|
||||
"death.attack.create.cuckoo_clock_explosion": "%1$s被布谷鸟钟炸得粉身碎骨",
|
||||
|
||||
"create.block.deployer.damage_source_name": "二五仔机械手",
|
||||
|
@ -1166,6 +1170,7 @@
|
|||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "UNLOCALIZED: Mechanical Press bonks",
|
||||
"create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
|
@ -1180,6 +1185,7 @@
|
|||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "粘液:挤碎声",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
|
@ -1247,6 +1253,15 @@
|
|||
"item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_触碰距离_。",
|
||||
"item.create.extendo_grip.tooltip.condition1": "放置于副手栏时",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "增加_主手_所使用物品的_接触距离_。",
|
||||
"item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON",
|
||||
"item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked",
|
||||
"item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.",
|
||||
"item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.filter.tooltip": "过滤器",
|
||||
"item.create.filter.tooltip.summary": "可用于_精确_控制物流设备的_输出_以及_输入_,使得通过的物品流与_一组_物品或者数个_相嵌套的过滤器_相匹配。",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 203",
|
||||
"_": "Missing Localizations: 217",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -416,6 +416,7 @@
|
|||
"entity.create.contraption": "結構",
|
||||
"entity.create.crafting_blueprint": "UNLOCALIZED: Crafting Blueprint",
|
||||
"entity.create.gantry_contraption": "門式結構",
|
||||
"entity.create.potato_projectile": "UNLOCALIZED: Potato Projectile",
|
||||
"entity.create.seat": "坐墊",
|
||||
"entity.create.stationary_contraption": "固定結構",
|
||||
"entity.create.super_glue": "強力膠",
|
||||
|
@ -481,6 +482,7 @@
|
|||
"item.create.minecart_contraption": "裝修過的礦車",
|
||||
"item.create.minecart_coupling": "礦車連結器",
|
||||
"item.create.polished_rose_quartz": "磨製玫瑰石英",
|
||||
"item.create.potato_cannon": "UNLOCALIZED: Potato Cannon",
|
||||
"item.create.powdered_obsidian": "黑曜石粉末",
|
||||
"item.create.propeller": "扇葉",
|
||||
"item.create.red_sand_paper": "紅砂紙",
|
||||
|
@ -670,6 +672,8 @@
|
|||
"death.attack.create.fan_lava": "%1$s想接受熱風的洗禮但走火入魔",
|
||||
"death.attack.create.mechanical_drill": "%1$s被鑽頭鑽爆腦袋",
|
||||
"death.attack.create.mechanical_saw": "%1$s被鋸切成了兩半",
|
||||
"death.attack.create.potato_cannon": "UNLOCALIZED: %1$s was shot by %2$s's Potato Cannon",
|
||||
"death.attack.create.potato_cannon.item": "UNLOCALIZED: %1$s was shot by %2$s using %3$s",
|
||||
"death.attack.create.cuckoo_clock_explosion": "%1$s 被布穀鳥鐘炸得粉身碎骨",
|
||||
|
||||
"create.block.deployer.damage_source_name": "機械手",
|
||||
|
@ -1166,6 +1170,7 @@
|
|||
"create.subtitle.contraption_disassemble": "UNLOCALIZED: Contraption stops",
|
||||
"create.subtitle.mixing": "UNLOCALIZED: Mixing Noises",
|
||||
"create.subtitle.mechanical_press_activation_belt": "液壓機工作",
|
||||
"create.subtitle.fwoomp": "UNLOCALIZED: Potato Launcher fwoomps",
|
||||
"create.subtitle.worldshaper_place": "UNLOCALIZED: Worldshaper zaps",
|
||||
"create.subtitle.depot_slide": "UNLOCALIZED: Item slides",
|
||||
"create.subtitle.saw_activate_stone": "UNLOCALIZED: Mechanical Saw activates",
|
||||
|
@ -1180,6 +1185,7 @@
|
|||
"create.subtitle.cogs": "UNLOCALIZED: Cogwheels rumble",
|
||||
"create.subtitle.slime_added": "黏液擠壓",
|
||||
"create.subtitle.wrench_rotate": "UNLOCALIZED: Wrench used",
|
||||
"create.subtitle.potato_hit": "UNLOCALIZED: Vegetable impacts",
|
||||
"create.subtitle.saw_activate_wood": "UNLOCALIZED: Mechanical Saw activates",
|
||||
"create.subtitle.deployer_polish": "UNLOCALIZED: Deployer applies polish",
|
||||
"create.subtitle.deny": "UNLOCALIZED: Declining boop",
|
||||
|
@ -1247,6 +1253,15 @@
|
|||
"item.create.extendo_grip.tooltip.summary": "biubiubiu! 大幅度_增加了_使用者的_觸碰距離_。",
|
||||
"item.create.extendo_grip.tooltip.condition1": "放置於副手欄時",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "大幅增加_主手_的觸碰距離,與_主手_的伸縮機械手攜同使用,可進一步增加_觸碰距離_。",
|
||||
"item.create.extendo_grip.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.extendo_grip.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.potato_cannon.tooltip": "UNLOCALIZED: POTATO CANNON",
|
||||
"item.create.potato_cannon.tooltip.summary": "UNLOCALIZED: Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.potato_cannon.tooltip.condition1": "UNLOCALIZED: When R-Clicked",
|
||||
"item.create.potato_cannon.tooltip.behaviour1": "UNLOCALIZED: _Shoots_ a suitable item from your _Inventory_.",
|
||||
"item.create.potato_cannon.tooltip.condition2": "UNLOCALIZED: While wearing Copper Backtank",
|
||||
"item.create.potato_cannon.tooltip.behaviour2": "UNLOCALIZED: _No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.filter.tooltip": "過濾器",
|
||||
"item.create.filter.tooltip.summary": "將物品更精確地進行_篩選分類_,可以同時_篩選_多個物品或者將已標記的_過濾器_放在另一個_過濾器_里_嵌套_使用。",
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"parent": "create:item/potato_cannon/item"
|
||||
}
|
|
@ -163,6 +163,12 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"fwoomp": {
|
||||
"sounds": [
|
||||
"create:fwoomp"
|
||||
],
|
||||
"subtitle": "create.subtitle.fwoomp"
|
||||
},
|
||||
"mechanical_press_activation": {
|
||||
"sounds": [
|
||||
{
|
||||
|
@ -214,6 +220,23 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"potato_hit": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "minecraft:entity.item_frame.break",
|
||||
"type": "event"
|
||||
}
|
||||
],
|
||||
"subtitle": "create.subtitle.potato_hit"
|
||||
},
|
||||
"potato_hit_compounded_1": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "minecraft:block.weeping_vines.break",
|
||||
"type": "event"
|
||||
}
|
||||
]
|
||||
},
|
||||
"saw_activate_stone": {
|
||||
"sounds": [
|
||||
{
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
"parent": "create:extendo_grip",
|
||||
"display": {
|
||||
"icon": {
|
||||
"item": "create:extendo_grip"
|
||||
"item": "create:extendo_grip",
|
||||
"nbt": "{Damage:0}"
|
||||
},
|
||||
"title": {
|
||||
"translate": "advancement.create.dual_extendo_grip"
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
"parent": "create:crafter",
|
||||
"display": {
|
||||
"icon": {
|
||||
"item": "create:extendo_grip"
|
||||
"item": "create:extendo_grip",
|
||||
"nbt": "{Damage:0}"
|
||||
},
|
||||
"title": {
|
||||
"translate": "advancement.create.extendo_grip"
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.simibubi.create;
|
||||
|
||||
import com.jozufozu.flywheel.backend.instancing.InstancedRenderRegistry;
|
||||
import com.simibubi.create.content.contraptions.components.actors.SeatEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.AbstractContraptionEntity;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.ContraptionEntityRenderer;
|
||||
|
@ -13,9 +12,10 @@ import com.simibubi.create.content.contraptions.components.structureMovement.glu
|
|||
import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueRenderer;
|
||||
import com.simibubi.create.content.curiosities.tools.BlueprintEntity;
|
||||
import com.simibubi.create.content.curiosities.tools.BlueprintRenderer;
|
||||
import com.simibubi.create.content.curiosities.weapons.PotatoProjectileEntity;
|
||||
import com.simibubi.create.content.curiosities.weapons.PotatoProjectileRenderer;
|
||||
import com.simibubi.create.foundation.data.CreateEntityBuilder;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.tterrag.registrate.builders.EntityBuilder;
|
||||
import com.tterrag.registrate.util.entry.EntityEntry;
|
||||
import com.tterrag.registrate.util.nullness.NonNullConsumer;
|
||||
import com.tterrag.registrate.util.nullness.NonNullSupplier;
|
||||
|
@ -28,57 +28,54 @@ import net.minecraftforge.fml.client.registry.IRenderFactory;
|
|||
|
||||
public class AllEntityTypes {
|
||||
|
||||
public static final EntityEntry<OrientedContraptionEntity> ORIENTED_CONTRAPTION =
|
||||
contraption("contraption", OrientedContraptionEntity::new, () -> OrientedContraptionEntityRenderer::new,
|
||||
5, 3, true);
|
||||
public static final EntityEntry<OrientedContraptionEntity> ORIENTED_CONTRAPTION = contraption("contraption",
|
||||
OrientedContraptionEntity::new, () -> OrientedContraptionEntityRenderer::new, 5, 3, true);
|
||||
public static final EntityEntry<ControlledContraptionEntity> CONTROLLED_CONTRAPTION =
|
||||
contraption("stationary_contraption", ControlledContraptionEntity::new, () -> ContraptionEntityRenderer::new,
|
||||
20, 40, false);
|
||||
public static final EntityEntry<GantryContraptionEntity> GANTRY_CONTRAPTION =
|
||||
contraption("gantry_contraption", GantryContraptionEntity::new, () -> ContraptionEntityRenderer::new,
|
||||
10, 40, false);
|
||||
contraption("stationary_contraption", ControlledContraptionEntity::new, () -> ContraptionEntityRenderer::new,
|
||||
20, 40, false);
|
||||
public static final EntityEntry<GantryContraptionEntity> GANTRY_CONTRAPTION = contraption("gantry_contraption",
|
||||
GantryContraptionEntity::new, () -> ContraptionEntityRenderer::new, 10, 40, false);
|
||||
|
||||
public static final EntityEntry<SuperGlueEntity> SUPER_GLUE =
|
||||
register("super_glue", SuperGlueEntity::new, () -> SuperGlueRenderer::new,
|
||||
EntityClassification.MISC, 10, Integer.MAX_VALUE, false, true, SuperGlueEntity::build)
|
||||
.instance(() -> GlueInstance::new)
|
||||
.register();
|
||||
register("super_glue", SuperGlueEntity::new, () -> SuperGlueRenderer::new, EntityClassification.MISC, 10,
|
||||
Integer.MAX_VALUE, false, true, SuperGlueEntity::build).instance(() -> GlueInstance::new)
|
||||
.register();
|
||||
|
||||
public static final EntityEntry<BlueprintEntity> CRAFTING_BLUEPRINT =
|
||||
register("crafting_blueprint", BlueprintEntity::new, () -> BlueprintRenderer::new,
|
||||
EntityClassification.MISC, 10, Integer.MAX_VALUE, false, true, BlueprintEntity::build).register();
|
||||
register("crafting_blueprint", BlueprintEntity::new, () -> BlueprintRenderer::new, EntityClassification.MISC,
|
||||
10, Integer.MAX_VALUE, false, true, BlueprintEntity::build).register();
|
||||
|
||||
public static final EntityEntry<SeatEntity> SEAT =
|
||||
register("seat", SeatEntity::new, () -> SeatEntity.Render::new,
|
||||
EntityClassification.MISC, 0, Integer.MAX_VALUE, false, true, SeatEntity::build).register();
|
||||
public static final EntityEntry<PotatoProjectileEntity> POTATO_PROJECTILE =
|
||||
register("potato_projectile", PotatoProjectileEntity::new, () -> PotatoProjectileRenderer::new,
|
||||
EntityClassification.MISC, 4, 20, true, true, PotatoProjectileEntity::build).register();
|
||||
|
||||
public static final EntityEntry<SeatEntity> SEAT = register("seat", SeatEntity::new, () -> SeatEntity.Render::new,
|
||||
EntityClassification.MISC, 0, Integer.MAX_VALUE, false, true, SeatEntity::build).register();
|
||||
|
||||
//
|
||||
|
||||
private static <T extends Entity> EntityEntry<T> contraption(String name, IFactory<T> factory,
|
||||
NonNullSupplier<IRenderFactory<? super T>> renderer, int range, int updateFrequency,
|
||||
boolean sendVelocity) {
|
||||
return register(name, factory, renderer, EntityClassification.MISC, range, updateFrequency,
|
||||
sendVelocity, true, AbstractContraptionEntity::build).register();
|
||||
NonNullSupplier<IRenderFactory<? super T>> renderer, int range, int updateFrequency, boolean sendVelocity) {
|
||||
return register(name, factory, renderer, EntityClassification.MISC, range, updateFrequency, sendVelocity, true,
|
||||
AbstractContraptionEntity::build).register();
|
||||
}
|
||||
|
||||
private static <T extends Entity> CreateEntityBuilder<T, ?> register(String name, IFactory<T> factory,
|
||||
NonNullSupplier<IRenderFactory<? super T>> renderer, EntityClassification group, int range,
|
||||
int updateFrequency, boolean sendVelocity, boolean immuneToFire,
|
||||
NonNullConsumer<EntityType.Builder<T>> propertyBuilder) {
|
||||
NonNullSupplier<IRenderFactory<? super T>> renderer, EntityClassification group, int range, int updateFrequency,
|
||||
boolean sendVelocity, boolean immuneToFire, NonNullConsumer<EntityType.Builder<T>> propertyBuilder) {
|
||||
String id = Lang.asId(name);
|
||||
return (CreateEntityBuilder<T, ?>) Create.registrate()
|
||||
.entity(id, factory, group)
|
||||
.properties(b -> b.setTrackingRange(range)
|
||||
.setUpdateInterval(updateFrequency)
|
||||
.setShouldReceiveVelocityUpdates(sendVelocity))
|
||||
.properties(propertyBuilder)
|
||||
.properties(b -> {
|
||||
if (immuneToFire)
|
||||
b.immuneToFire();
|
||||
})
|
||||
.renderer(renderer);
|
||||
.entity(id, factory, group)
|
||||
.properties(b -> b.setTrackingRange(range)
|
||||
.setUpdateInterval(updateFrequency)
|
||||
.setShouldReceiveVelocityUpdates(sendVelocity))
|
||||
.properties(propertyBuilder)
|
||||
.properties(b -> {
|
||||
if (immuneToFire)
|
||||
b.immuneToFire();
|
||||
})
|
||||
.renderer(renderer);
|
||||
}
|
||||
|
||||
public static void register() {
|
||||
}
|
||||
public static void register() {}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
@ -40,6 +40,8 @@ import com.simibubi.create.content.curiosities.tools.ExtendoGripItem;
|
|||
import com.simibubi.create.content.curiosities.tools.ExtendoGripModel;
|
||||
import com.simibubi.create.content.curiosities.tools.SandPaperItem;
|
||||
import com.simibubi.create.content.curiosities.tools.SandPaperItemRenderer.SandPaperModel;
|
||||
import com.simibubi.create.content.curiosities.weapons.PotatoCannonItem;
|
||||
import com.simibubi.create.content.curiosities.weapons.PotatoCannonModel;
|
||||
import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperItem;
|
||||
import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperModel;
|
||||
import com.simibubi.create.content.logistics.item.LinkedControllerItem;
|
||||
|
@ -65,7 +67,7 @@ import net.minecraft.util.ResourceLocation;
|
|||
public class AllItems {
|
||||
|
||||
private static final CreateRegistrate REGISTRATE = Create.registrate()
|
||||
.itemGroup(() -> Create.BASE_CREATIVE_TAB);
|
||||
.itemGroup(() -> Create.BASE_CREATIVE_TAB);
|
||||
|
||||
// Schematics
|
||||
|
||||
|
@ -126,10 +128,10 @@ public class AllItems {
|
|||
BRASS_INGOT = taggedIngredient("brass_ingot", forgeItemTag("ingots/brass"), CREATE_INGOTS.tag);
|
||||
|
||||
public static final ItemEntry<ChromaticCompoundItem> CHROMATIC_COMPOUND =
|
||||
REGISTRATE.item("chromatic_compound", ChromaticCompoundItem::new)
|
||||
.properties(p -> p.rarity(Rarity.UNCOMMON))
|
||||
.model(AssetLookup.existingItemModel())
|
||||
.color(() -> ChromaticCompoundColor::new)
|
||||
REGISTRATE.item("chromatic_compound", ChromaticCompoundItem::new)
|
||||
.properties(p -> p.rarity(Rarity.UNCOMMON))
|
||||
.model(AssetLookup.existingItemModel())
|
||||
.color(() -> ChromaticCompoundColor::new)
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<ShadowSteelItem> SHADOW_STEEL = REGISTRATE.item("shadow_steel", ShadowSteelItem::new)
|
||||
|
@ -187,29 +189,29 @@ public class AllItems {
|
|||
|
||||
public static final ItemEntry<GogglesItem> GOGGLES = REGISTRATE.item("goggles", GogglesItem::new)
|
||||
.properties(p -> p.maxStackSize(1))
|
||||
.onRegister(CreateRegistrate.itemModel(() -> GogglesModel::new))
|
||||
.lang("Engineer's Goggles")
|
||||
.register();
|
||||
.onRegister(CreateRegistrate.itemModel(() -> GogglesModel::new))
|
||||
.lang("Engineer's Goggles")
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<SuperGlueItem> SUPER_GLUE = REGISTRATE.item("super_glue", SuperGlueItem::new)
|
||||
.register();
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<MinecartCouplingItem> MINECART_COUPLING =
|
||||
REGISTRATE.item("minecart_coupling", MinecartCouplingItem::new)
|
||||
.register();
|
||||
REGISTRATE.item("minecart_coupling", MinecartCouplingItem::new)
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<BlueprintItem> CRAFTING_BLUEPRINT =
|
||||
REGISTRATE.item("crafting_blueprint", BlueprintItem::new)
|
||||
.register();
|
||||
REGISTRATE.item("crafting_blueprint", BlueprintItem::new)
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<SandPaperItem> SAND_PAPER = REGISTRATE.item("sand_paper", SandPaperItem::new)
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> SandPaperModel::new))
|
||||
.register();
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> SandPaperModel::new))
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<SandPaperItem> RED_SAND_PAPER = REGISTRATE.item("red_sand_paper", SandPaperItem::new)
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> SandPaperModel::new))
|
||||
.onRegister(s -> TooltipHelper.referTo(s, SAND_PAPER))
|
||||
.register();
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> SandPaperModel::new))
|
||||
.onRegister(s -> TooltipHelper.referTo(s, SAND_PAPER))
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<WrenchItem> WRENCH = REGISTRATE.item("wrench", WrenchItem::new)
|
||||
.properties(p -> p.maxStackSize(1))
|
||||
|
@ -228,6 +230,12 @@ public class AllItems {
|
|||
.model(AssetLookup.itemModelWithPartials())
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<PotatoCannonItem> POTATO_CANNON =
|
||||
REGISTRATE.item("potato_cannon", PotatoCannonItem::new)
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> PotatoCannonModel::new))
|
||||
.model(AssetLookup.itemModelWithPartials())
|
||||
.register();
|
||||
|
||||
public static final ItemEntry<SymmetryWandItem> WAND_OF_SYMMETRY =
|
||||
REGISTRATE.item("wand_of_symmetry", SymmetryWandItem::new)
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> SymmetryWandModel::new))
|
||||
|
|
|
@ -115,6 +115,16 @@ public class AllSoundEvents {
|
|||
.category(SoundCategory.BLOCKS)
|
||||
.build(),
|
||||
|
||||
FWOOMP = create("fwoomp").subtitle("Potato Launcher fwoomps")
|
||||
.category(SoundCategory.PLAYERS)
|
||||
.build(),
|
||||
|
||||
POTATO_HIT = create("potato_hit").subtitle("Vegetable impacts")
|
||||
.playExisting(SoundEvents.ENTITY_ITEM_FRAME_BREAK, .75f, .75f)
|
||||
.playExisting(SoundEvents.BLOCK_WEEPING_VINES_BREAK, .75f, 1.25f)
|
||||
.category(SoundCategory.PLAYERS)
|
||||
.build(),
|
||||
|
||||
CONTRAPTION_ASSEMBLE = create("contraption_assemble").subtitle("Contraption moves")
|
||||
.playExisting(SoundEvents.BLOCK_WOODEN_TRAPDOOR_OPEN, .5f, .5f)
|
||||
.playExisting(SoundEvents.BLOCK_CHEST_OPEN, .045f, .74f)
|
||||
|
@ -177,7 +187,7 @@ public class AllSoundEvents {
|
|||
.playExisting(SoundEvents.BLOCK_SAND_PLACE, .075f, .75f)
|
||||
.category(SoundCategory.BLOCKS)
|
||||
.build(),
|
||||
|
||||
|
||||
SAW_IDLE = create("saw_idle").subtitle("Mechanical Saw turns")
|
||||
.playExisting(SoundEvents.ENTITY_BOAT_PADDLE_LAND)
|
||||
.category(SoundCategory.BLOCKS)
|
||||
|
|
|
@ -10,6 +10,7 @@ import com.google.gson.GsonBuilder;
|
|||
import com.simibubi.create.content.CreateItemGroup;
|
||||
import com.simibubi.create.content.contraptions.TorquePropagator;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.train.capability.CapabilityMinecartController;
|
||||
import com.simibubi.create.content.curiosities.weapons.PotatoCannonProjectileTypes;
|
||||
import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler;
|
||||
import com.simibubi.create.content.palettes.AllPaletteBlocks;
|
||||
import com.simibubi.create.content.palettes.PalettesItemGroup;
|
||||
|
@ -115,6 +116,7 @@ public class Create {
|
|||
|
||||
AllPackets.registerPackets();
|
||||
AllTriggers.register();
|
||||
PotatoCannonProjectileTypes.register();
|
||||
|
||||
event.enqueueWork(() -> {
|
||||
SchematicProcessor.register();
|
||||
|
|
|
@ -44,9 +44,15 @@ public class AirParticle extends SimpleAnimatedParticle {
|
|||
twirlAxis = Create.RANDOM.nextBoolean() ? Axis.X : Axis.Z;
|
||||
|
||||
// speed in m/ticks
|
||||
maxAge = Math.min((int) (new Vector3d(dx, dy, dz).length() / data.speed), 60);
|
||||
double length = new Vector3d(dx, dy, dz).length();
|
||||
maxAge = Math.min((int) (length / data.speed), 60);
|
||||
selectSprite(7);
|
||||
setAlphaF(.25f);
|
||||
|
||||
if (length == 0) {
|
||||
setExpired();
|
||||
setAlphaF(0);
|
||||
}
|
||||
}
|
||||
|
||||
public IParticleRenderType getRenderType() {
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
package com.simibubi.create.content.curiosities.armor;
|
||||
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
public class BackTankUtil {
|
||||
|
||||
public static ItemStack get(LivingEntity entity) {
|
||||
for (ItemStack itemStack : entity.getArmorInventoryList())
|
||||
if (AllItems.COPPER_BACKTANK.isIn(itemStack))
|
||||
return itemStack;
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
public static boolean hasAirRemaining(ItemStack backtank) {
|
||||
return getAir(backtank) > 0;
|
||||
}
|
||||
|
||||
public static float getAir(ItemStack backtank) {
|
||||
CompoundNBT tag = backtank.getOrCreateTag();
|
||||
return tag.getFloat("Air");
|
||||
}
|
||||
|
||||
public static void consumeAir(ItemStack backtank, float i) {
|
||||
CompoundNBT tag = backtank.getOrCreateTag();
|
||||
tag.putFloat("Air", getAir(backtank) - i);
|
||||
backtank.setTag(tag);
|
||||
}
|
||||
|
||||
private static float maxAir() {
|
||||
return AllConfigs.SERVER.curiosities.maxAirInBacktank.get();
|
||||
}
|
||||
|
||||
public static boolean canAbsorbDamage(LivingEntity entity, int usesPerTank) {
|
||||
if (usesPerTank == 0)
|
||||
return true;
|
||||
if (entity instanceof PlayerEntity && ((PlayerEntity) entity).isCreative())
|
||||
return true;
|
||||
ItemStack backtank = get(entity);
|
||||
if (backtank.isEmpty())
|
||||
return false;
|
||||
if (!hasAirRemaining(backtank))
|
||||
return false;
|
||||
float cost = maxAir() / usesPerTank;
|
||||
consumeAir(backtank, cost);
|
||||
return true;
|
||||
}
|
||||
|
||||
// For Air-using tools
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public static int getRGBDurabilityForDisplay(ItemStack stack, int usesPerTank) {
|
||||
if (usesPerTank == 0)
|
||||
return 0;
|
||||
ClientPlayerEntity player = Minecraft.getInstance().player;
|
||||
if (player == null)
|
||||
return 0;
|
||||
ItemStack backtank = get(player);
|
||||
if (backtank.isEmpty() || !hasAirRemaining(backtank))
|
||||
return MathHelper.hsvToRGB(
|
||||
Math.max(0.0F, (float) (1.0F - getDurabilityForDisplay(stack, usesPerTank))) / 3.0F, 1.0F, 1.0F);
|
||||
return backtank.getItem()
|
||||
.getRGBDurabilityForDisplay(backtank);
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public static double getDurabilityForDisplay(ItemStack stack, int usesPerTank) {
|
||||
if (usesPerTank == 0)
|
||||
return 0;
|
||||
ClientPlayerEntity player = Minecraft.getInstance().player;
|
||||
if (player == null)
|
||||
return 0;
|
||||
ItemStack backtank = get(player);
|
||||
if (backtank.isEmpty() || !hasAirRemaining(backtank))
|
||||
return (double) stack.getDamage() / (double) stack.getMaxDamage();
|
||||
return backtank.getItem()
|
||||
.getDurabilityForDisplay(backtank);
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public static boolean showDurabilityBar(ItemStack stack, int usesPerTank) {
|
||||
if (usesPerTank == 0)
|
||||
return false;
|
||||
ClientPlayerEntity player = Minecraft.getInstance().player;
|
||||
if (player == null)
|
||||
return false;
|
||||
ItemStack backtank = get(player);
|
||||
if (backtank.isEmpty() || !hasAirRemaining(backtank))
|
||||
return stack.isDamaged();
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
|
@ -14,6 +14,7 @@ import net.minecraft.util.math.MathHelper;
|
|||
|
||||
public class CopperBacktankItem extends CopperArmorItem {
|
||||
|
||||
public static final int DURABILITY_BAR = 0xefefef;
|
||||
private BlockItem blockItem;
|
||||
|
||||
public CopperBacktankItem(Properties p_i48534_3_, BlockItem blockItem) {
|
||||
|
@ -33,7 +34,7 @@ public class CopperBacktankItem extends CopperArmorItem {
|
|||
|
||||
@Override
|
||||
public int getRGBDurabilityForDisplay(ItemStack stack) {
|
||||
return 0xefefef;
|
||||
return DURABILITY_BAR;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -6,7 +6,6 @@ import net.minecraft.entity.LivingEntity;
|
|||
import net.minecraft.entity.player.PlayerEntity;
|
||||
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.minecraft.tags.FluidTags;
|
||||
|
@ -28,7 +27,7 @@ public class DivingHelmetItem extends CopperArmorItem {
|
|||
World world = entity.world;
|
||||
boolean second = world.getGameTime() % 20 == 0;
|
||||
boolean drowning = entity.getAir() == 0;
|
||||
|
||||
|
||||
if (world.isRemote)
|
||||
entity.getPersistentData()
|
||||
.remove("VisualBacktankAir");
|
||||
|
@ -41,20 +40,10 @@ public class DivingHelmetItem extends CopperArmorItem {
|
|||
if (entity instanceof PlayerEntity && ((PlayerEntity) entity).isCreative())
|
||||
return;
|
||||
|
||||
ItemStack backtank = ItemStack.EMPTY;
|
||||
for (ItemStack itemStack : entity.getArmorInventoryList()) {
|
||||
if (AllItems.COPPER_BACKTANK.isIn(itemStack)) {
|
||||
backtank = itemStack;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ItemStack backtank = BackTankUtil.get(entity);
|
||||
if (backtank.isEmpty())
|
||||
return;
|
||||
|
||||
CompoundNBT tag = backtank.getOrCreateTag();
|
||||
int airRemaining = tag.getInt("Air");
|
||||
if (airRemaining == 0)
|
||||
if (!BackTankUtil.hasAirRemaining(backtank))
|
||||
return;
|
||||
|
||||
if (drowning)
|
||||
|
@ -62,15 +51,14 @@ public class DivingHelmetItem extends CopperArmorItem {
|
|||
|
||||
if (world.isRemote)
|
||||
entity.getPersistentData()
|
||||
.putInt("VisualBacktankAir", airRemaining);
|
||||
.putInt("VisualBacktankAir", (int) BackTankUtil.getAir(backtank));
|
||||
|
||||
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);
|
||||
BackTankUtil.consumeAir(backtank, 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,7 +5,9 @@ import java.util.UUID;
|
|||
import com.google.common.collect.ImmutableMultimap;
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.content.curiosities.armor.BackTankUtil;
|
||||
import com.simibubi.create.foundation.advancement.AllTriggers;
|
||||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
import com.simibubi.create.foundation.networking.AllPackets;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
|
||||
|
@ -20,9 +22,11 @@ import net.minecraft.entity.player.PlayerEntity;
|
|||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.entity.projectile.ProjectileHelper;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.Rarity;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.LazyValue;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
import net.minecraft.util.math.BlockRayTraceResult;
|
||||
|
@ -39,6 +43,9 @@ import net.minecraftforge.event.entity.living.LivingKnockBackEvent;
|
|||
import net.minecraftforge.event.entity.player.AttackEntityEvent;
|
||||
import net.minecraftforge.event.entity.player.PlayerEvent;
|
||||
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
||||
import net.minecraftforge.event.world.BlockEvent.BreakEvent;
|
||||
import net.minecraftforge.event.world.BlockEvent.EntityPlaceEvent;
|
||||
import net.minecraftforge.eventbus.api.EventPriority;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
|
||||
|
||||
|
@ -46,24 +53,26 @@ import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
|
|||
public class ExtendoGripItem extends Item {
|
||||
private static DamageSource lastActiveDamageSource;
|
||||
|
||||
public static final AttributeModifier singleRangeAttributeModifier = new AttributeModifier(UUID.fromString("7f7dbdb2-0d0d-458a-aa40-ac7633691f66"), "Range modifier", 3, AttributeModifier.Operation.ADDITION);
|
||||
public static final AttributeModifier doubleRangeAttributeModifier = new AttributeModifier(UUID.fromString("8f7dbdb2-0d0d-458a-aa40-ac7633691f66"), "Range modifier", 5, AttributeModifier.Operation.ADDITION);
|
||||
public static final int MAX_DAMAGE = 200;
|
||||
|
||||
static LazyValue<Multimap<Attribute, AttributeModifier>> rangeModifier =
|
||||
new LazyValue<>(() ->
|
||||
// Holding an ExtendoGrip
|
||||
ImmutableMultimap.of(ForgeMod.REACH_DISTANCE.get(), singleRangeAttributeModifier)
|
||||
);
|
||||
public static final AttributeModifier singleRangeAttributeModifier =
|
||||
new AttributeModifier(UUID.fromString("7f7dbdb2-0d0d-458a-aa40-ac7633691f66"), "Range modifier", 3,
|
||||
AttributeModifier.Operation.ADDITION);
|
||||
public static final AttributeModifier doubleRangeAttributeModifier =
|
||||
new AttributeModifier(UUID.fromString("8f7dbdb2-0d0d-458a-aa40-ac7633691f66"), "Range modifier", 5,
|
||||
AttributeModifier.Operation.ADDITION);
|
||||
|
||||
static LazyValue<Multimap<Attribute, AttributeModifier>> doubleRangeModifier =
|
||||
new LazyValue<>(() ->
|
||||
// Holding two ExtendoGrips o.O
|
||||
ImmutableMultimap.of(ForgeMod.REACH_DISTANCE.get(), doubleRangeAttributeModifier)
|
||||
);
|
||||
static LazyValue<Multimap<Attribute, AttributeModifier>> rangeModifier = new LazyValue<>(() ->
|
||||
// Holding an ExtendoGrip
|
||||
ImmutableMultimap.of(ForgeMod.REACH_DISTANCE.get(), singleRangeAttributeModifier));
|
||||
|
||||
static LazyValue<Multimap<Attribute, AttributeModifier>> doubleRangeModifier = new LazyValue<>(() ->
|
||||
// Holding two ExtendoGrips o.O
|
||||
ImmutableMultimap.of(ForgeMod.REACH_DISTANCE.get(), doubleRangeAttributeModifier));
|
||||
|
||||
public ExtendoGripItem(Properties properties) {
|
||||
super(properties.maxStackSize(1)
|
||||
.rarity(Rarity.UNCOMMON));
|
||||
.rarity(Rarity.UNCOMMON));
|
||||
}
|
||||
|
||||
public static final String EXTENDO_MARKER = "createExtendo";
|
||||
|
@ -87,13 +96,14 @@ public class ExtendoGripItem extends Item {
|
|||
|
||||
if (holdingExtendo != wasHoldingExtendo) {
|
||||
if (!holdingExtendo) {
|
||||
player.getAttributes().removeModifiers(rangeModifier.getValue());
|
||||
player.getAttributes()
|
||||
.removeModifiers(rangeModifier.getValue());
|
||||
persistentData.remove(EXTENDO_MARKER);
|
||||
} else {
|
||||
if (player instanceof ServerPlayerEntity)
|
||||
AllTriggers.EXTENDO.trigger((ServerPlayerEntity) player);
|
||||
player.getAttributes()
|
||||
.addTemporaryModifiers(rangeModifier.getValue());
|
||||
.addTemporaryModifiers(rangeModifier.getValue());
|
||||
persistentData.putBoolean(EXTENDO_MARKER, true);
|
||||
}
|
||||
}
|
||||
|
@ -101,13 +111,13 @@ public class ExtendoGripItem extends Item {
|
|||
if (holdingDualExtendo != wasHoldingDualExtendo) {
|
||||
if (!holdingDualExtendo) {
|
||||
player.getAttributes()
|
||||
.removeModifiers(doubleRangeModifier.getValue());
|
||||
.removeModifiers(doubleRangeModifier.getValue());
|
||||
persistentData.remove(DUAL_EXTENDO_MARKER);
|
||||
} else {
|
||||
if (player instanceof ServerPlayerEntity)
|
||||
AllTriggers.GIGA_EXTENDO.trigger((ServerPlayerEntity) player);
|
||||
player.getAttributes()
|
||||
.addTemporaryModifiers(doubleRangeModifier.getValue());
|
||||
.addTemporaryModifiers(doubleRangeModifier.getValue());
|
||||
persistentData.putBoolean(DUAL_EXTENDO_MARKER, true);
|
||||
}
|
||||
}
|
||||
|
@ -120,9 +130,11 @@ public class ExtendoGripItem extends Item {
|
|||
CompoundNBT persistentData = player.getPersistentData();
|
||||
|
||||
if (persistentData.contains(DUAL_EXTENDO_MARKER))
|
||||
player.getAttributes().addTemporaryModifiers(doubleRangeModifier.getValue());
|
||||
player.getAttributes()
|
||||
.addTemporaryModifiers(doubleRangeModifier.getValue());
|
||||
else if (persistentData.contains(EXTENDO_MARKER))
|
||||
player.getAttributes().addTemporaryModifiers(rangeModifier.getValue());
|
||||
player.getAttributes()
|
||||
.addTemporaryModifiers(rangeModifier.getValue());
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
|
@ -164,10 +176,81 @@ public class ExtendoGripItem extends Item {
|
|||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.LOWEST)
|
||||
public static void consumeDurabilityOnBlockBreak(BreakEvent event) {
|
||||
findAndDamageExtendoGrip(event.getPlayer());
|
||||
}
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.LOWEST)
|
||||
public static void consumeDurabilityOnPlace(EntityPlaceEvent event) {
|
||||
Entity entity = event.getEntity();
|
||||
if (entity instanceof PlayerEntity)
|
||||
findAndDamageExtendoGrip((PlayerEntity) entity);
|
||||
}
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.LOWEST)
|
||||
public static void consumeDurabilityOnPlace(PlayerInteractEvent event) {
|
||||
// findAndDamageExtendoGrip(event.getPlayer());
|
||||
}
|
||||
|
||||
private static void findAndDamageExtendoGrip(PlayerEntity player) {
|
||||
if (player == null)
|
||||
return;
|
||||
if (player.world.isRemote)
|
||||
return;
|
||||
Hand hand = Hand.MAIN_HAND;
|
||||
ItemStack extendo = player.getHeldItemMainhand();
|
||||
if (!AllItems.EXTENDO_GRIP.isIn(extendo)) {
|
||||
extendo = player.getHeldItemOffhand();
|
||||
hand = Hand.OFF_HAND;
|
||||
}
|
||||
if (!AllItems.EXTENDO_GRIP.isIn(extendo))
|
||||
return;
|
||||
final Hand h = hand;
|
||||
if (!BackTankUtil.canAbsorbDamage(player, maxUses()))
|
||||
extendo.damageItem(1, player, p -> p.sendBreakAnimation(h));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRGBDurabilityForDisplay(ItemStack stack) {
|
||||
return BackTankUtil.getRGBDurabilityForDisplay(stack, maxUses());
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getDurabilityForDisplay(ItemStack stack) {
|
||||
return BackTankUtil.getDurabilityForDisplay(stack, maxUses());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showDurabilityBar(ItemStack stack) {
|
||||
return BackTankUtil.showDurabilityBar(stack, maxUses());
|
||||
}
|
||||
|
||||
private static int maxUses() {
|
||||
return AllConfigs.SERVER.curiosities.maxExtendoGripActions.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDamageable() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxDamage(ItemStack stack) {
|
||||
return MAX_DAMAGE;
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void bufferLivingAttackEvent(LivingAttackEvent event) {
|
||||
// Workaround for removed patch to get the attacking entity. Tbf this is a hack and a half, but it should work.
|
||||
// Workaround for removed patch to get the attacking entity.
|
||||
lastActiveDamageSource = event.getSource();
|
||||
|
||||
DamageSource source = event.getSource();
|
||||
if (source == null)
|
||||
return;
|
||||
Entity trueSource = source.getTrueSource();
|
||||
if (trueSource instanceof PlayerEntity)
|
||||
findAndDamageExtendoGrip((PlayerEntity) trueSource);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
|
|
|
@ -0,0 +1,206 @@
|
|||
package com.simibubi.create.content.curiosities.weapons;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import com.simibubi.create.AllEntityTypes;
|
||||
import com.simibubi.create.content.curiosities.armor.BackTankUtil;
|
||||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
import com.simibubi.create.foundation.networking.AllPackets;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
||||
import net.minecraft.client.util.ITooltipFlag;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.ItemUseContext;
|
||||
import net.minecraft.item.ShootableItem;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.ActionResultType;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.HandSide;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.vector.Vector3d;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.StringTextComponent;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.util.text.TranslationTextComponent;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.fml.network.PacketDistributor;
|
||||
|
||||
public class PotatoCannonItem extends ShootableItem {
|
||||
|
||||
public static ItemStack CLIENT_CURRENT_AMMO = ItemStack.EMPTY;
|
||||
public static final int MAX_DAMAGE = 100;
|
||||
|
||||
public static int PREV_SHOT = 0;
|
||||
|
||||
public PotatoCannonItem(Properties p_i48487_1_) {
|
||||
super(p_i48487_1_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPlayerBreakBlockWhileHolding(BlockState p_195938_1_, World p_195938_2_, BlockPos p_195938_3_,
|
||||
PlayerEntity p_195938_4_) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResultType onItemUse(ItemUseContext context) {
|
||||
return onItemRightClick(context.getWorld(), context.getPlayer(), context.getHand()).getType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRGBDurabilityForDisplay(ItemStack stack) {
|
||||
return BackTankUtil.getRGBDurabilityForDisplay(stack, maxUses());
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getDurabilityForDisplay(ItemStack stack) {
|
||||
return BackTankUtil.getDurabilityForDisplay(stack, maxUses());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean showDurabilityBar(ItemStack stack) {
|
||||
return BackTankUtil.showDurabilityBar(stack, maxUses());
|
||||
}
|
||||
|
||||
private int maxUses() {
|
||||
return AllConfigs.SERVER.curiosities.maxPotatoCannonShots.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDamageable() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxDamage(ItemStack stack) {
|
||||
return MAX_DAMAGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResult<ItemStack> onItemRightClick(World world, PlayerEntity player, Hand hand) {
|
||||
ItemStack stack = player.getHeldItem(hand);
|
||||
if (world.isRemote)
|
||||
return ActionResult.pass(stack);
|
||||
|
||||
findAmmoInInventory(world, player, stack).ifPresent(itemStack -> {
|
||||
PotatoProjectileEntity projectile = AllEntityTypes.POTATO_PROJECTILE.create(world);
|
||||
Vector3d offset = VecHelper.rotate(player.getLookVec()
|
||||
.scale(1.25f), (hand == Hand.MAIN_HAND) == (player.getPrimaryHand() == HandSide.RIGHT) ? -25 : 25,
|
||||
Axis.Y);
|
||||
Vector3d vec = player.getBoundingBox()
|
||||
.getCenter()
|
||||
.add(0, player.getBoundingBox()
|
||||
.getYSize() / 5f, 0)
|
||||
.add(offset);
|
||||
|
||||
projectile.setPosition(vec.x, vec.y, vec.z);
|
||||
projectile.setMotion(player.getLookVec()
|
||||
.scale(1.75f));
|
||||
projectile.setItem(itemStack);
|
||||
projectile.setShooter(player);
|
||||
world.addEntity(projectile);
|
||||
PotatoProjectileEntity.playLaunchSound(world, player.getPositionVec(), projectile.getProjectileType()
|
||||
.getSoundPitch());
|
||||
|
||||
if (player instanceof ServerPlayerEntity)
|
||||
AllPackets.channel.send(PacketDistributor.PLAYER.with(() -> (ServerPlayerEntity) player),
|
||||
new PotatoCannonPacket());
|
||||
|
||||
if (!player.isCreative()) {
|
||||
itemStack.shrink(1);
|
||||
if (itemStack.isEmpty())
|
||||
player.inventory.deleteStack(itemStack);
|
||||
}
|
||||
|
||||
if (!BackTankUtil.canAbsorbDamage(player, maxUses()))
|
||||
stack.damageItem(1, player, p -> p.sendBreakAnimation(hand));
|
||||
|
||||
Integer cooldown =
|
||||
findAmmoInInventory(world, player, stack).flatMap(PotatoCannonProjectileTypes::getProjectileTypeOf)
|
||||
.map(PotatoCannonProjectileTypes::getReloadTicks)
|
||||
.orElse(10);
|
||||
player.getCooldownTracker()
|
||||
.setCooldown(this, cooldown);
|
||||
});
|
||||
|
||||
return ActionResult.pass(stack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged) {
|
||||
return slotChanged || newStack.getItem() != oldStack.getItem();
|
||||
}
|
||||
|
||||
private Optional<ItemStack> findAmmoInInventory(World world, PlayerEntity player, ItemStack held) {
|
||||
ItemStack findAmmo = player.findAmmo(held);
|
||||
return PotatoCannonProjectileTypes.getProjectileTypeOf(findAmmo)
|
||||
.map($ -> findAmmo);
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public static Optional<ItemStack> getAmmoforPreview(ItemStack cannon) {
|
||||
if (AnimationTickHolder.getTicks() % 3 != 0)
|
||||
return Optional.of(CLIENT_CURRENT_AMMO)
|
||||
.filter(stack -> !stack.isEmpty());
|
||||
|
||||
ClientPlayerEntity player = Minecraft.getInstance().player;
|
||||
CLIENT_CURRENT_AMMO = ItemStack.EMPTY;
|
||||
if (player == null)
|
||||
return Optional.empty();
|
||||
ItemStack findAmmo = player.findAmmo(cannon);
|
||||
Optional<ItemStack> found = PotatoCannonProjectileTypes.getProjectileTypeOf(findAmmo)
|
||||
.map($ -> findAmmo);
|
||||
found.ifPresent(stack -> CLIENT_CURRENT_AMMO = stack);
|
||||
return found;
|
||||
}
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void addInformation(ItemStack stack, World world, List<ITextComponent> tooltip, ITooltipFlag flag) {
|
||||
getAmmoforPreview(stack).ifPresent(ammo -> {
|
||||
tooltip.add(new StringTextComponent(""));
|
||||
tooltip.add(new TranslationTextComponent(ammo.getTranslationKey()).append(new StringTextComponent(":"))
|
||||
.formatted(TextFormatting.GRAY));
|
||||
PotatoCannonProjectileTypes type = PotatoCannonProjectileTypes.getProjectileTypeOf(ammo)
|
||||
.get();
|
||||
StringTextComponent spacing = new StringTextComponent(" ");
|
||||
TextFormatting darkGreen = TextFormatting.DARK_GREEN;
|
||||
tooltip.add(spacing.copy()
|
||||
.append(new StringTextComponent(type.getDamage() + " Attack Damage").formatted(darkGreen)));
|
||||
tooltip.add(spacing.copy()
|
||||
.append(new StringTextComponent(type.getReloadTicks() + " Reload Ticks").formatted(darkGreen)));
|
||||
tooltip.add(spacing.copy()
|
||||
.append(new StringTextComponent(type.getKnockback() + " Knockback").formatted(darkGreen)));
|
||||
});
|
||||
super.addInformation(stack, world, tooltip, flag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Predicate<ItemStack> getInventoryAmmoPredicate() {
|
||||
return stack -> PotatoCannonProjectileTypes.getProjectileTypeOf(stack)
|
||||
.isPresent();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRange() {
|
||||
return 15;
|
||||
}
|
||||
|
||||
// FIXME Temporary; use zappers way of animating
|
||||
public static void clientTick() {
|
||||
if (PREV_SHOT > 0)
|
||||
PREV_SHOT--;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
package com.simibubi.create.content.curiosities.weapons;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.foundation.item.render.CustomRenderedItemModelRenderer;
|
||||
import com.simibubi.create.foundation.item.render.PartialItemModelRenderer;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.MatrixStacker;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.player.ClientPlayerEntity;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
import net.minecraft.client.renderer.ItemRenderer;
|
||||
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.vector.Vector3f;
|
||||
|
||||
public class PotatoCannonItemRenderer extends CustomRenderedItemModelRenderer<PotatoCannonModel> {
|
||||
|
||||
@Override
|
||||
protected void render(ItemStack stack, PotatoCannonModel model, PartialItemModelRenderer renderer,
|
||||
TransformType transformType, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) {
|
||||
ItemRenderer itemRenderer = Minecraft.getInstance()
|
||||
.getItemRenderer();
|
||||
renderer.render(model.getOriginalModel(), light);
|
||||
ClientPlayerEntity player = Minecraft.getInstance().player;
|
||||
boolean mainHand = player.getHeldItemMainhand() == stack;
|
||||
boolean offHand = player.getHeldItemOffhand() == stack;
|
||||
|
||||
float speed = PotatoCannonItem.PREV_SHOT == 0 ? 0
|
||||
: (PotatoCannonItem.PREV_SHOT - AnimationTickHolder.getPartialTicks()) / 5f;
|
||||
float worldTime = AnimationTickHolder.getRenderTime() / 10;
|
||||
float angle = worldTime * -25;
|
||||
if (mainHand || offHand)
|
||||
angle += 30 * speed * speed;
|
||||
|
||||
angle %= 360;
|
||||
float offset = .5f / 16;
|
||||
ms.push();
|
||||
ms.translate(0, offset, 0);
|
||||
ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(angle));
|
||||
ms.translate(0, -offset, 0);
|
||||
renderer.render(model.getPartial("cog"), light);
|
||||
ms.pop();
|
||||
|
||||
if (transformType == TransformType.GUI) {
|
||||
PotatoCannonItem.getAmmoforPreview(stack)
|
||||
.ifPresent(ammo -> {
|
||||
MatrixStack localMs = new MatrixStack();
|
||||
localMs.translate(-1 / 4f, -1 / 4f, 1);
|
||||
localMs.scale(.5f, .5f, .5f);
|
||||
MatrixStacker.of(localMs)
|
||||
.rotateY(-34);
|
||||
itemRenderer.renderItem(ammo, TransformType.GUI, light, OverlayTexture.DEFAULT_UV, localMs, buffer);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package com.simibubi.create.content.curiosities.weapons;
|
||||
|
||||
import com.simibubi.create.foundation.item.render.CustomRenderedItemModel;
|
||||
|
||||
import net.minecraft.client.renderer.model.IBakedModel;
|
||||
import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer;
|
||||
|
||||
public class PotatoCannonModel extends CustomRenderedItemModel {
|
||||
|
||||
public PotatoCannonModel(IBakedModel template) {
|
||||
super(template, "potato_cannon");
|
||||
addPartials("cog");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStackTileEntityRenderer createRenderer() {
|
||||
return new PotatoCannonItemRenderer();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
package com.simibubi.create.content.curiosities.weapons;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import com.simibubi.create.foundation.networking.SimplePacketBase;
|
||||
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraftforge.fml.network.NetworkEvent.Context;
|
||||
|
||||
public class PotatoCannonPacket extends SimplePacketBase {
|
||||
|
||||
public PotatoCannonPacket() {}
|
||||
|
||||
public PotatoCannonPacket(PacketBuffer buffer) {}
|
||||
|
||||
@Override
|
||||
public void write(PacketBuffer buffer) {}
|
||||
|
||||
@Override
|
||||
public void handle(Supplier<Context> context) {
|
||||
context.get()
|
||||
.enqueueWork(() -> PotatoCannonItem.PREV_SHOT = 15);
|
||||
context.get()
|
||||
.setPacketHandled(true);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,221 @@
|
|||
package com.simibubi.create.content.curiosities.weapons;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.simibubi.create.Create;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.potion.EffectInstance;
|
||||
import net.minecraft.potion.Effects;
|
||||
import net.minecraft.util.IItemProvider;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockRayTraceResult;
|
||||
import net.minecraft.util.math.EntityRayTraceResult;
|
||||
import net.minecraftforge.registries.IRegistryDelegate;
|
||||
|
||||
public class PotatoCannonProjectileTypes {
|
||||
|
||||
public static final Map<ResourceLocation, PotatoCannonProjectileTypes> ALL = new HashMap<>();
|
||||
public static final Map<IRegistryDelegate<Item>, PotatoCannonProjectileTypes> ITEM_MAP = new HashMap<>();
|
||||
public static final PotatoCannonProjectileTypes
|
||||
|
||||
FALLBACK = create("fallback").damage(0)
|
||||
.register(),
|
||||
|
||||
POTATO = create("potato").damage(4)
|
||||
.reloadTicks(15)
|
||||
.knockback(1.5f)
|
||||
.renderTumbling()
|
||||
.registerAndAssign(Items.POTATO),
|
||||
|
||||
BAKED_POTATO = create("baked_potato").damage(3)
|
||||
.reloadTicks(15)
|
||||
.knockback(1.5f)
|
||||
.renderTumbling()
|
||||
.onEntityHit(ray -> ray.getEntity()
|
||||
.setFireTicks(10))
|
||||
.registerAndAssign(Items.BAKED_POTATO),
|
||||
|
||||
CARROT = create("carrot").damage(3)
|
||||
.renderTowardMotion(140, 1)
|
||||
.velocity(1.25f)
|
||||
.knockback(0.5f)
|
||||
.soundPitch(1.25f)
|
||||
.registerAndAssign(Items.CARROT),
|
||||
|
||||
GOLDEN_CARROT = create("golden_carrot").damage(8)
|
||||
.reloadTicks(20)
|
||||
.knockback(0.5f)
|
||||
.velocity(1.25f)
|
||||
.renderTowardMotion(140, 2)
|
||||
.soundPitch(1.25f)
|
||||
.registerAndAssign(Items.GOLDEN_CARROT),
|
||||
|
||||
POISON_POTATO = create("poison_potato").damage(5)
|
||||
.reloadTicks(15)
|
||||
.knockback(0.5f)
|
||||
.renderTumbling()
|
||||
.onEntityHit(ray -> {
|
||||
Entity entity = ray.getEntity();
|
||||
if (entity instanceof LivingEntity)
|
||||
((LivingEntity) entity).addPotionEffect(new EffectInstance(Effects.POISON, 40));
|
||||
})
|
||||
.registerAndAssign(Items.POISONOUS_POTATO)
|
||||
|
||||
;
|
||||
|
||||
public static void registerType(ResourceLocation resLoc, PotatoCannonProjectileTypes type) {
|
||||
ALL.put(resLoc, type);
|
||||
}
|
||||
|
||||
public static void assignType(IRegistryDelegate<Item> item, PotatoCannonProjectileTypes type) {
|
||||
ITEM_MAP.put(item, type);
|
||||
}
|
||||
|
||||
public static Optional<PotatoCannonProjectileTypes> getProjectileTypeOf(ItemStack item) {
|
||||
if (item.isEmpty())
|
||||
return Optional.empty();
|
||||
return Optional.ofNullable(ITEM_MAP.get(item.getItem().delegate));
|
||||
}
|
||||
|
||||
public static void register() {}
|
||||
|
||||
private static PotatoCannonProjectileTypes.Builder create(String name) {
|
||||
return new PotatoCannonProjectileTypes.Builder(Create.asResource(name));
|
||||
}
|
||||
|
||||
private float gravityMultiplier = 1;
|
||||
private float velocityMultiplier = 1;
|
||||
private float knockback = 1;
|
||||
private int reloadTicks = 10;
|
||||
private int damage = 1;
|
||||
private float fwoompPitch = 1;
|
||||
private PotatoProjectileRenderMode renderMode = new PotatoProjectileRenderMode.Billboard();
|
||||
private Consumer<EntityRayTraceResult> onEntityHit = e -> {
|
||||
};
|
||||
private Consumer<BlockRayTraceResult> onBlockHit = e -> {
|
||||
};
|
||||
|
||||
public float getGravityMultiplier() {
|
||||
return gravityMultiplier;
|
||||
}
|
||||
|
||||
public float getVelocityMultiplier() {
|
||||
return velocityMultiplier;
|
||||
}
|
||||
|
||||
public float getKnockback() {
|
||||
return knockback;
|
||||
}
|
||||
|
||||
public int getReloadTicks() {
|
||||
return reloadTicks;
|
||||
}
|
||||
|
||||
public float getSoundPitch() {
|
||||
return fwoompPitch;
|
||||
}
|
||||
|
||||
public PotatoProjectileRenderMode getRenderMode() {
|
||||
return renderMode;
|
||||
}
|
||||
|
||||
public int getDamage() {
|
||||
return damage;
|
||||
}
|
||||
|
||||
public void onEntityHit(EntityRayTraceResult ray) {
|
||||
onEntityHit.accept(ray);
|
||||
}
|
||||
|
||||
public void onBlockHit(BlockRayTraceResult ray) {
|
||||
onBlockHit.accept(ray);
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
|
||||
ResourceLocation loc;
|
||||
PotatoCannonProjectileTypes result;
|
||||
|
||||
public Builder(ResourceLocation loc) {
|
||||
this.result = new PotatoCannonProjectileTypes();
|
||||
this.loc = loc;
|
||||
}
|
||||
|
||||
public Builder damage(int damage) {
|
||||
result.damage = damage;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder gravity(float modifier) {
|
||||
result.gravityMultiplier = modifier;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder knockback(float knockback) {
|
||||
result.knockback = knockback;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder reloadTicks(int reload) {
|
||||
result.reloadTicks = reload;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder soundPitch(float pitch) {
|
||||
result.fwoompPitch = pitch;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder velocity(float velocity) {
|
||||
result.velocityMultiplier = velocity;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder renderTumbling() {
|
||||
result.renderMode = new PotatoProjectileRenderMode.Tumble();
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder renderBillboard() {
|
||||
result.renderMode = new PotatoProjectileRenderMode.Billboard();
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder renderTowardMotion(int spriteAngle, float spin) {
|
||||
result.renderMode = new PotatoProjectileRenderMode.TowardMotion(spriteAngle, spin);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder onEntityHit(Consumer<EntityRayTraceResult> callback) {
|
||||
result.onEntityHit = callback;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder onBlockHit(Consumer<BlockRayTraceResult> callback) {
|
||||
result.onBlockHit = callback;
|
||||
return this;
|
||||
}
|
||||
|
||||
public PotatoCannonProjectileTypes register() {
|
||||
registerType(loc, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
public PotatoCannonProjectileTypes registerAndAssign(IItemProvider... items) {
|
||||
registerType(loc, result);
|
||||
for (IItemProvider provider : items)
|
||||
assignType(provider.asItem().delegate, result);
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,235 @@
|
|||
package com.simibubi.create.content.curiosities.weapons;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.content.contraptions.particle.AirParticleData;
|
||||
import com.simibubi.create.foundation.advancement.AllTriggers;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityType;
|
||||
import net.minecraft.entity.LivingEntity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.entity.projectile.DamagingProjectileEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.network.IPacket;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.network.play.server.SChangeGameStatePacket;
|
||||
import net.minecraft.particles.IParticleData;
|
||||
import net.minecraft.particles.ItemParticleData;
|
||||
import net.minecraft.particles.ParticleTypes;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.IndirectEntityDamageSource;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.BlockRayTraceResult;
|
||||
import net.minecraft.util.math.EntityRayTraceResult;
|
||||
import net.minecraft.util.math.vector.Vector3d;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.common.registry.IEntityAdditionalSpawnData;
|
||||
import net.minecraftforge.fml.network.NetworkHooks;
|
||||
|
||||
public class PotatoProjectileEntity extends DamagingProjectileEntity implements IEntityAdditionalSpawnData {
|
||||
|
||||
ItemStack stack = ItemStack.EMPTY;
|
||||
PotatoCannonProjectileTypes type;
|
||||
|
||||
public PotatoProjectileEntity(EntityType<? extends DamagingProjectileEntity> type, World world) {
|
||||
super(type, world);
|
||||
}
|
||||
|
||||
public ItemStack getItem() {
|
||||
return stack;
|
||||
}
|
||||
|
||||
public void setItem(ItemStack stack) {
|
||||
this.stack = stack;
|
||||
}
|
||||
|
||||
public PotatoCannonProjectileTypes getProjectileType() {
|
||||
if (type == null)
|
||||
type = PotatoCannonProjectileTypes.getProjectileTypeOf(stack)
|
||||
.orElse(PotatoCannonProjectileTypes.FALLBACK);
|
||||
return type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readAdditional(CompoundNBT nbt) {
|
||||
stack = ItemStack.read(nbt.getCompound("Item"));
|
||||
super.readAdditional(nbt);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeAdditional(CompoundNBT nbt) {
|
||||
nbt.put("Item", stack.serializeNBT());
|
||||
super.writeAdditional(nbt);
|
||||
}
|
||||
|
||||
public void tick() {
|
||||
setMotion(getMotion().add(0, -.05, 0)
|
||||
.scale(.99f));
|
||||
super.tick();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected float getMotionFactor() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected IParticleData getParticle() {
|
||||
return new AirParticleData(1, 10);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isFireballFiery() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onEntityHit(EntityRayTraceResult ray) {
|
||||
super.onEntityHit(ray);
|
||||
|
||||
Vector3d hit = ray.getHitVec();
|
||||
Entity target = ray.getEntity();
|
||||
PotatoCannonProjectileTypes projectileType = getProjectileType();
|
||||
int damage = projectileType.getDamage();
|
||||
float knockback = projectileType.getKnockback();
|
||||
Entity owner = this.getOwner();
|
||||
|
||||
if (!target.isAlive())
|
||||
return;
|
||||
if (owner instanceof LivingEntity)
|
||||
((LivingEntity) owner).setLastAttackedEntity(target);
|
||||
|
||||
pop(hit);
|
||||
|
||||
boolean targetIsEnderman = target.getType() == EntityType.ENDERMAN;
|
||||
int k = target.getFireTimer();
|
||||
if (this.isBurning() && !targetIsEnderman)
|
||||
target.setFire(5);
|
||||
|
||||
if (!target.attackEntityFrom(causePotatoDamage(), (float) damage)) {
|
||||
target.setFireTicks(k);
|
||||
remove();
|
||||
return;
|
||||
}
|
||||
|
||||
if (targetIsEnderman)
|
||||
return;
|
||||
|
||||
projectileType.onEntityHit(ray);
|
||||
|
||||
if (!(target instanceof LivingEntity)) {
|
||||
playHitSound(world, getPositionVec());
|
||||
remove();
|
||||
return;
|
||||
}
|
||||
|
||||
LivingEntity livingentity = (LivingEntity) target;
|
||||
if (knockback > 0) {
|
||||
Vector3d appliedMotion = this.getMotion()
|
||||
.mul(1.0D, 0.0D, 1.0D)
|
||||
.normalize()
|
||||
.scale(knockback * 0.6);
|
||||
if (appliedMotion.lengthSquared() > 0.0D)
|
||||
livingentity.addVelocity(appliedMotion.x, 0.1D, appliedMotion.z);
|
||||
}
|
||||
|
||||
boolean onServer = !world.isRemote;
|
||||
if (onServer && owner instanceof LivingEntity) {
|
||||
EnchantmentHelper.applyThornEnchantments(livingentity, owner);
|
||||
EnchantmentHelper.applyArthropodEnchantments((LivingEntity) owner, livingentity);
|
||||
}
|
||||
|
||||
if (owner != null && livingentity != owner && livingentity instanceof PlayerEntity
|
||||
&& owner instanceof ServerPlayerEntity && !this.isSilent()) {
|
||||
((ServerPlayerEntity) owner).connection
|
||||
.sendPacket(new SChangeGameStatePacket(SChangeGameStatePacket.PROJECTILE_HIT_PLAYER, 0.0F));
|
||||
}
|
||||
|
||||
if (onServer && owner instanceof ServerPlayerEntity) {
|
||||
ServerPlayerEntity serverplayerentity = (ServerPlayerEntity) owner;
|
||||
if (!target.isAlive())
|
||||
AllTriggers.POTATO_KILL.trigger(serverplayerentity);
|
||||
}
|
||||
|
||||
remove();
|
||||
}
|
||||
|
||||
public static void playHitSound(World world, Vector3d location) {
|
||||
AllSoundEvents.POTATO_HIT.playOnServer(world, new BlockPos(location));
|
||||
}
|
||||
|
||||
public static void playLaunchSound(World world, Vector3d location, float pitch) {
|
||||
AllSoundEvents.FWOOMP.playOnServer(world, new BlockPos(location), 1, pitch);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onBlockHit(BlockRayTraceResult ray) {
|
||||
Vector3d hit = ray.getHitVec();
|
||||
pop(hit);
|
||||
getProjectileType().onBlockHit(ray);
|
||||
super.onBlockHit(ray);
|
||||
remove();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) {
|
||||
if (this.isInvulnerableTo(p_70097_1_))
|
||||
return false;
|
||||
pop(getPositionVec());
|
||||
remove();
|
||||
return true;
|
||||
}
|
||||
|
||||
private void pop(Vector3d hit) {
|
||||
if (!stack.isEmpty()) {
|
||||
for (int i = 0; i < 7; i++) {
|
||||
Vector3d m = VecHelper.offsetRandomly(Vector3d.ZERO, this.rand, .25f);
|
||||
world.addParticle(new ItemParticleData(ParticleTypes.ITEM, stack), hit.x, hit.y, hit.z, m.x, m.y, m.z);
|
||||
}
|
||||
}
|
||||
if (!world.isRemote)
|
||||
playHitSound(world, getPositionVec());
|
||||
}
|
||||
|
||||
private DamageSource causePotatoDamage() {
|
||||
return new PotatoDamageSource(this, getOwner()).setProjectile();
|
||||
}
|
||||
|
||||
public static class PotatoDamageSource extends IndirectEntityDamageSource {
|
||||
|
||||
public PotatoDamageSource(Entity source, @Nullable Entity trueSource) {
|
||||
super("create.potato_cannon", source, trueSource);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static EntityType.Builder<?> build(EntityType.Builder<?> builder) {
|
||||
EntityType.Builder<PotatoProjectileEntity> entityBuilder = (EntityType.Builder<PotatoProjectileEntity>) builder;
|
||||
return entityBuilder.size(.25f, .25f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPacket<?> createSpawnPacket() {
|
||||
return NetworkHooks.getEntitySpawningPacket(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeSpawnData(PacketBuffer buffer) {
|
||||
CompoundNBT compound = new CompoundNBT();
|
||||
writeAdditional(compound);
|
||||
buffer.writeCompoundTag(compound);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readSpawnData(PacketBuffer additionalData) {
|
||||
readAdditional(additionalData.readCompoundTag());
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
package com.simibubi.create.content.curiosities.weapons;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.MatrixStacker;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.math.vector.Vector3d;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
public abstract class PotatoProjectileRenderMode {
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public abstract void transform(MatrixStack ms, PotatoProjectileEntity entity, float pt);
|
||||
|
||||
public static class Billboard extends PotatoProjectileRenderMode {
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void transform(MatrixStack ms, PotatoProjectileEntity entity, float pt) {
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
Vector3d p1 = mc.getRenderViewEntity()
|
||||
.getEyePosition(pt);
|
||||
Vector3d diff = entity.getBoundingBox()
|
||||
.getCenter()
|
||||
.subtract(p1);
|
||||
|
||||
MatrixStacker.of(ms)
|
||||
.rotateY(AngleHelper.deg(MathHelper.atan2(diff.x, diff.z)))
|
||||
.rotateX(180
|
||||
+ AngleHelper.deg(MathHelper.atan2(diff.y, -MathHelper.sqrt(diff.x * diff.x + diff.z * diff.z))));
|
||||
}
|
||||
}
|
||||
|
||||
public static class Tumble extends Billboard {
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void transform(MatrixStack ms, PotatoProjectileEntity entity, float pt) {
|
||||
super.transform(ms, entity, pt);
|
||||
MatrixStacker.of(ms)
|
||||
.rotateZ((entity.ticksExisted + pt) * 2 * (entity.getEntityId() % 16))
|
||||
.rotateX((entity.ticksExisted + pt) * (entity.getEntityId() % 32));
|
||||
}
|
||||
}
|
||||
|
||||
public static class TowardMotion extends PotatoProjectileRenderMode {
|
||||
|
||||
private int spriteAngleOffset;
|
||||
private float spin;
|
||||
|
||||
public TowardMotion(int spriteAngleOffset, float spin) {
|
||||
this.spriteAngleOffset = spriteAngleOffset;
|
||||
this.spin = spin;
|
||||
}
|
||||
|
||||
@Override
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public void transform(MatrixStack ms, PotatoProjectileEntity entity, float pt) {
|
||||
Vector3d diff = entity.getMotion();
|
||||
MatrixStacker.of(ms)
|
||||
.rotateY(AngleHelper.deg(MathHelper.atan2(diff.x, diff.z)))
|
||||
.rotateX(270
|
||||
+ AngleHelper.deg(MathHelper.atan2(diff.y, -MathHelper.sqrt(diff.x * diff.x + diff.z * diff.z))));
|
||||
MatrixStacker.of(ms)
|
||||
.rotateY((entity.ticksExisted + pt) * 20 * spin)
|
||||
.rotateZ(-spriteAngleOffset);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
package com.simibubi.create.content.curiosities.weapons;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
import net.minecraft.client.renderer.entity.EntityRenderer;
|
||||
import net.minecraft.client.renderer.entity.EntityRendererManager;
|
||||
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class PotatoProjectileRenderer extends EntityRenderer<PotatoProjectileEntity> {
|
||||
|
||||
public PotatoProjectileRenderer(EntityRendererManager p_i46179_1_) {
|
||||
super(p_i46179_1_);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(PotatoProjectileEntity entity, float yaw, float pt, MatrixStack ms, IRenderTypeBuffer buffer,
|
||||
int light) {
|
||||
ItemStack item = entity.getItem();
|
||||
if (item.isEmpty())
|
||||
return;
|
||||
ms.push();
|
||||
ms.translate(0, entity.getBoundingBox()
|
||||
.getYSize() / 2 - 1 / 8f, 0);
|
||||
entity.getProjectileType()
|
||||
.getRenderMode()
|
||||
.transform(ms, entity, pt);
|
||||
|
||||
Minecraft.getInstance()
|
||||
.getItemRenderer()
|
||||
.renderItem(item, TransformType.GROUND, light, OverlayTexture.DEFAULT_UV, ms, buffer);
|
||||
ms.pop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResourceLocation getEntityTexture(PotatoProjectileEntity p_110775_1_) {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package com.simibubi.create.content.curiosities.weapons;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityType;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.network.IPacket;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public abstract class ProperProjectileEntity extends Entity {
|
||||
|
||||
public ProperProjectileEntity(EntityType<?> p_i48580_1_, World p_i48580_2_) {
|
||||
super(p_i48580_1_, p_i48580_2_);
|
||||
// TODO Auto-generated constructor stub
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void registerData() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void readAdditional(CompoundNBT p_70037_1_) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeAdditional(CompoundNBT p_213281_1_) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPacket<?> createSpawnPacket() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
|
@ -28,6 +28,7 @@ import com.simibubi.create.content.contraptions.relays.belt.item.BeltConnectorHa
|
|||
import com.simibubi.create.content.curiosities.armor.CopperBacktankArmorLayer;
|
||||
import com.simibubi.create.content.curiosities.tools.BlueprintOverlayRenderer;
|
||||
import com.simibubi.create.content.curiosities.tools.ExtendoGripRenderHandler;
|
||||
import com.simibubi.create.content.curiosities.weapons.PotatoCannonItem;
|
||||
import com.simibubi.create.content.curiosities.zapper.ZapperItem;
|
||||
import com.simibubi.create.content.curiosities.zapper.ZapperRenderHandler;
|
||||
import com.simibubi.create.content.curiosities.zapper.terrainzapper.WorldshaperRenderHandler;
|
||||
|
@ -111,6 +112,7 @@ public class ClientEvents {
|
|||
SoundScapes.tick();
|
||||
AnimationTickHolder.tick();
|
||||
ScrollValueHandler.tick();
|
||||
PotatoCannonItem.clientTick();
|
||||
|
||||
CreateClient.SCHEMATIC_SENDER.tick();
|
||||
CreateClient.SCHEMATIC_AND_QUILL_HANDLER.tick();
|
||||
|
|
|
@ -44,7 +44,7 @@ public class AllTriggers {
|
|||
CHAINED_ITEM_DRAIN = simple("chained_item_drain"), SPOUT = simple("spout"),
|
||||
SPOUT_POTION = simple("spout_potion"), GLASS_PIPE = simple("glass_pipe"),
|
||||
PIPE_COLLISION = simple("pipe_collision"), PIPE_SPILL = simple("pipe_spill"),
|
||||
HOSE_PULLEY = simple("hose_pulley"), MIXER_MIX = simple("mixer");
|
||||
POTATO_KILL = simple("potato_kill"), HOSE_PULLEY = simple("hose_pulley"), MIXER_MIX = simple("mixer");
|
||||
|
||||
private static SimpleTrigger simple(String id) {
|
||||
return add(new SimpleTrigger(id));
|
||||
|
|
|
@ -5,6 +5,10 @@ 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 maxExtendoGripActions = i(1000, 0, "maxExtendoGripActions", Comments.maxExtendoGripActions);
|
||||
public ConfigInt maxPotatoCannonShots = i(200, 0, "maxPotatoCannonShots", Comments.maxPotatoCannonShots);
|
||||
|
||||
// public ConfigInt zapperUndoLogLength = i(10, 0, "zapperUndoLogLength", Comments.zapperUndoLogLength); NYI
|
||||
|
||||
@Override
|
||||
|
@ -18,6 +22,10 @@ public class CCuriosities extends ConfigBase {
|
|||
"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 maxExtendoGripActions =
|
||||
"Amount of free Extendo Grip actions provided by one filled Copper Backtank. Set to 0 makes Extendo Grips unbreakable";
|
||||
static String maxPotatoCannonShots =
|
||||
"Amount of free Potato Cannon shots provided by one filled Copper Backtank. Set to 0 makes Potato Cannons unbreakable";
|
||||
// static String zapperUndoLogLength = "The maximum amount of operations, a blockzapper can remember for undoing. (0 to disable undo)";
|
||||
}
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@ import com.simibubi.create.content.curiosities.projector.ConfigureProjectorPacke
|
|||
import com.simibubi.create.content.curiosities.symmetry.SymmetryEffectPacket;
|
||||
import com.simibubi.create.content.curiosities.tools.BlueprintAssignCompleteRecipePacket;
|
||||
import com.simibubi.create.content.curiosities.tools.ExtendoGripInteractionPacket;
|
||||
import com.simibubi.create.content.curiosities.weapons.PotatoCannonPacket;
|
||||
import com.simibubi.create.content.curiosities.zapper.ZapperBeamPacket;
|
||||
import com.simibubi.create.content.logistics.block.depot.EjectorElytraPacket;
|
||||
import com.simibubi.create.content.logistics.block.depot.EjectorPlacementPacket;
|
||||
|
@ -112,6 +113,7 @@ public enum AllPackets {
|
|||
BLOCK_HIGHLIGHT(HighlightPacket.class, HighlightPacket::new, PLAY_TO_CLIENT),
|
||||
TUNNEL_FLAP(TunnelFlapPacket.class, TunnelFlapPacket::new, PLAY_TO_CLIENT),
|
||||
FUNNEL_FLAP(FunnelFlapPacket.class, FunnelFlapPacket::new, PLAY_TO_CLIENT),
|
||||
POTATO_CANNON(PotatoCannonPacket.class, PotatoCannonPacket::new, PLAY_TO_CLIENT),
|
||||
PERSISTENT_DATA(ISyncPersistentData.Packet.class, ISyncPersistentData.Packet::new, PLAY_TO_CLIENT),
|
||||
|
||||
;
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
"death.attack.create.fan_lava": "%1$s was burned to death by lava fan",
|
||||
"death.attack.create.mechanical_drill": "%1$s was impaled by a Mechanical Drill",
|
||||
"death.attack.create.mechanical_saw": "%1$s got cut in half by a Mechanical Saw",
|
||||
"death.attack.create.potato_cannon": "%1$s was shot by %2$s's Potato Cannon",
|
||||
"death.attack.create.potato_cannon.item": "%1$s was shot by %2$s using %3$s",
|
||||
"death.attack.create.cuckoo_clock_explosion": "%1$s was blown up by tampered cuckoo clock",
|
||||
"create.block.deployer.damage_source_name": "a rogue Deployer",
|
||||
"create.block.cart_assembler.invalid": "Place your Cart Assembler on a rail block",
|
||||
|
|
|
@ -49,9 +49,18 @@
|
|||
"item.create.tree_fertilizer.tooltip.behaviour1": "Grows Trees _regardless_ of their _spacing conditions_",
|
||||
|
||||
"item.create.extendo_grip.tooltip": "EXTENDO GRIP",
|
||||
"item.create.extendo_grip.tooltip.summary": "Boioioing! Greatly _increases reach distance_ of the wielder.",
|
||||
"item.create.extendo_grip.tooltip.summary": "Boioioing! Greatly _increases reach distance_ of the wielder. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.extendo_grip.tooltip.condition1": "When in Off-Hand",
|
||||
"item.create.extendo_grip.tooltip.behaviour1": "Increases _reach distance_ of items used in the _Main-Hand_.",
|
||||
"item.create.extendo_grip.tooltip.condition2": "While wearing Copper Backtank",
|
||||
"item.create.extendo_grip.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.potato_cannon.tooltip": "POTATO CANNON",
|
||||
"item.create.potato_cannon.tooltip.summary": "Fwoomp! Launch your home-grown vegetables at your Enemies. Can be powered with Air Pressure from a _Copper_ _Backtank_",
|
||||
"item.create.potato_cannon.tooltip.condition1": "When R-Clicked",
|
||||
"item.create.potato_cannon.tooltip.behaviour1": "_Shoots_ a suitable item from your _Inventory_.",
|
||||
"item.create.potato_cannon.tooltip.condition2": "While wearing Copper Backtank",
|
||||
"item.create.potato_cannon.tooltip.behaviour2": "_No_ _Durability_ will be used. Instead, _Air_ _pressure_ is drained from the Tank",
|
||||
|
||||
"item.create.filter.tooltip": "FILTER",
|
||||
"item.create.filter.tooltip.summary": "_Controls outputs_ and _inputs_ of logistical devices with more _precision_, matching them against a _set of items_ or several _nested filters_.",
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,104 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "create:item/potato_cannon/item",
|
||||
"textures": {
|
||||
"1": "create:block/andesite_bricks",
|
||||
"particle": "create:block/andesite_bricks"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"name": "Cog",
|
||||
"from": [5.5, 8, 6.5],
|
||||
"to": [10.5, 9, 9.5],
|
||||
"rotation": {"angle": 45, "axis": "z", "origin": [8, 8.5, 8.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [6, 15, 11, 16], "texture": "#1"},
|
||||
"east": {"uv": [7, 13, 8, 16], "rotation": 270, "texture": "#1"},
|
||||
"south": {"uv": [6, 14, 11, 15], "texture": "#1"},
|
||||
"west": {"uv": [9, 13, 10, 16], "rotation": 90, "texture": "#1"},
|
||||
"up": {"uv": [6, 13, 11, 16], "rotation": 180, "texture": "#1"},
|
||||
"down": {"uv": [6, 13, 11, 16], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Cog",
|
||||
"from": [5.5, 8, 6.5],
|
||||
"to": [10.5, 9, 9.5],
|
||||
"rotation": {"angle": -45, "axis": "z", "origin": [8, 8.5, 8.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [6, 15, 11, 16], "texture": "#1"},
|
||||
"east": {"uv": [7, 13, 8, 16], "rotation": 270, "texture": "#1"},
|
||||
"south": {"uv": [6, 14, 11, 15], "texture": "#1"},
|
||||
"west": {"uv": [9, 13, 10, 16], "rotation": 90, "texture": "#1"},
|
||||
"up": {"uv": [6, 13, 11, 16], "rotation": 180, "texture": "#1"},
|
||||
"down": {"uv": [6, 13, 11, 16], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Cog",
|
||||
"from": [7.5, 6, 6.5],
|
||||
"to": [8.5, 11, 9.5],
|
||||
"rotation": {"angle": 0, "axis": "z", "origin": [8, 8.5, 8.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [6, 15, 11, 16], "rotation": 270, "texture": "#1"},
|
||||
"east": {"uv": [6, 13, 11, 16], "rotation": 270, "texture": "#1"},
|
||||
"south": {"uv": [6, 14, 11, 15], "rotation": 90, "texture": "#1"},
|
||||
"west": {"uv": [6, 13, 11, 16], "rotation": 90, "texture": "#1"},
|
||||
"up": {"uv": [8, 13, 9, 16], "rotation": 180, "texture": "#1"},
|
||||
"down": {"uv": [6, 13, 7, 16], "texture": "#1"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Cog",
|
||||
"from": [5.5, 8, 6.5],
|
||||
"to": [10.5, 9, 9.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 11, 3.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [6, 15, 11, 16], "texture": "#1"},
|
||||
"east": {"uv": [6, 13, 7, 16], "rotation": 270, "texture": "#1"},
|
||||
"south": {"uv": [6, 14, 11, 15], "texture": "#1"},
|
||||
"west": {"uv": [8, 13, 9, 16], "rotation": 90, "texture": "#1"},
|
||||
"up": {"uv": [6, 13, 11, 16], "rotation": 180, "texture": "#1"},
|
||||
"down": {"uv": [6, 13, 11, 16], "texture": "#1"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"rotation": [0, 90, 0],
|
||||
"translation": [0, 3.25, 0]
|
||||
},
|
||||
"thirdperson_lefthand": {
|
||||
"translation": [0, 3.75, 0]
|
||||
},
|
||||
"firstperson_righthand": {
|
||||
"rotation": [-4.5, 100.25, 10],
|
||||
"translation": [1, 4, 1]
|
||||
},
|
||||
"firstperson_lefthand": {
|
||||
"rotation": [17.25, 267, 10],
|
||||
"translation": [1, 4, 1]
|
||||
},
|
||||
"ground": {
|
||||
"rotation": [-90, 0, 0],
|
||||
"translation": [0, -2.3, 0],
|
||||
"scale": [0.76914, 0.76914, 0.76914]
|
||||
},
|
||||
"gui": {
|
||||
"rotation": [28, -163, 43],
|
||||
"translation": [0.5, 0, 0],
|
||||
"scale": [1.09453, 1.09453, 1.09453]
|
||||
},
|
||||
"fixed": {
|
||||
"rotation": [0, 160.5, 0],
|
||||
"translation": [0.5, 0.5, 0]
|
||||
}
|
||||
},
|
||||
"groups": [
|
||||
{
|
||||
"name": "accelerator",
|
||||
"origin": [8, 8, 8],
|
||||
"children": [0, 1, 2, 3]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,126 @@
|
|||
{
|
||||
"credit": "Made with Blockbench",
|
||||
"parent": "block/block",
|
||||
"textures": {
|
||||
"2": "create:block/fluid_pipe",
|
||||
"4": "create:block/andesite_casing_very_short",
|
||||
"5": "create:block/andesite_casing_short",
|
||||
"particle": "create:block/andesite_bricks"
|
||||
},
|
||||
"elements": [
|
||||
{
|
||||
"from": [7, 7, -2.5],
|
||||
"to": [9, 10, 6.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [7, 7.6, 11]},
|
||||
"faces": {
|
||||
"north": {"uv": [7.5, 1, 9.5, 4], "texture": "#2"},
|
||||
"east": {"uv": [0.5, 6, 3.5, 15], "rotation": 90, "texture": "#2"},
|
||||
"south": {"uv": [7.5, 1, 9.5, 4], "texture": "#2"},
|
||||
"west": {"uv": [0.5, 6, 3.5, 15], "rotation": 270, "texture": "#2"},
|
||||
"up": {"uv": [1, 6, 3, 15], "texture": "#2"},
|
||||
"down": {"uv": [1, 6, 3, 15], "rotation": 180, "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [7, 7, 9.5],
|
||||
"to": [9, 10, 10.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 7.6, 11]},
|
||||
"faces": {
|
||||
"east": {"uv": [0.5, 6, 3.5, 7], "rotation": 90, "texture": "#2"},
|
||||
"west": {"uv": [0.5, 6, 3.5, 7], "rotation": 270, "texture": "#2"},
|
||||
"up": {"uv": [1, 6, 3, 7], "texture": "#2"},
|
||||
"down": {"uv": [1, 6, 3, 7], "rotation": 180, "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [6, 7, 10.5],
|
||||
"to": [10, 11, 16.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 9.6, 11]},
|
||||
"faces": {
|
||||
"north": {"uv": [7, 7, 15, 15], "rotation": 270, "texture": "#4"},
|
||||
"east": {"uv": [4, 4, 12, 16], "rotation": 270, "texture": "#5"},
|
||||
"south": {"uv": [7, 7, 15, 15], "rotation": 270, "texture": "#4"},
|
||||
"west": {"uv": [4, 4, 12, 16], "rotation": 90, "texture": "#5"},
|
||||
"up": {"uv": [4, 4, 12, 16], "rotation": 180, "texture": "#5"},
|
||||
"down": {"uv": [4, 4, 12, 16], "texture": "#5"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [7, 4, 11.5],
|
||||
"to": [9, 6, 15.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 7.6, 11]},
|
||||
"faces": {
|
||||
"north": {"uv": [13, 13, 15, 15], "texture": "#2"},
|
||||
"east": {"uv": [1, 6, 3, 10], "rotation": 90, "texture": "#2"},
|
||||
"west": {"uv": [1, 6, 3, 10], "rotation": 270, "texture": "#2"},
|
||||
"up": {"uv": [1, 6, 3, 10], "texture": "#2"},
|
||||
"down": {"uv": [1, 6, 3, 10], "rotation": 180, "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [6.5, 3.5, 9.5],
|
||||
"to": [9.5, 6.5, 14.5],
|
||||
"rotation": {"angle": -45, "axis": "z", "origin": [8, 5, 11.5]},
|
||||
"faces": {
|
||||
"north": {"uv": [12.5, 12.5, 15.5, 15.5], "texture": "#2"},
|
||||
"east": {"uv": [0.5, 6, 3.5, 11], "rotation": 90, "texture": "#2"},
|
||||
"south": {"uv": [12.5, 12.5, 15.5, 15.5], "texture": "#2"},
|
||||
"west": {"uv": [0.5, 6, 3.5, 11], "rotation": 270, "texture": "#2"},
|
||||
"up": {"uv": [0.5, 6, 3.5, 11], "texture": "#2"},
|
||||
"down": {"uv": [0.5, 6, 3.5, 11], "rotation": 180, "texture": "#2"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"from": [7, 4, 15.5],
|
||||
"to": [9, 10, 17.5],
|
||||
"rotation": {"angle": 0, "axis": "y", "origin": [8, 7.6, 11]},
|
||||
"faces": {
|
||||
"north": {"uv": [3, 7, 1, 13], "rotation": 180, "texture": "#2"},
|
||||
"east": {"uv": [1, 9, 3, 15], "texture": "#2"},
|
||||
"south": {"uv": [3, 7, 1, 13], "rotation": 180, "texture": "#2"},
|
||||
"west": {"uv": [3, 9, 1, 15], "texture": "#2"},
|
||||
"up": {"uv": [1, 7, 3, 9], "rotation": 180, "texture": "#2"},
|
||||
"down": {"uv": [1, 7, 3, 9], "texture": "#2"}
|
||||
}
|
||||
}
|
||||
],
|
||||
"display": {
|
||||
"thirdperson_righthand": {
|
||||
"translation": [0, 1.75, 0],
|
||||
"scale": [0.89, 0.89, 0.89]
|
||||
},
|
||||
"thirdperson_lefthand": {
|
||||
"translation": [0, 1.75, 0],
|
||||
"scale": [0.89, 0.89, 0.89]
|
||||
},
|
||||
"firstperson_righthand": {
|
||||
"rotation": [5, 4, 5],
|
||||
"translation": [0.25, 4, 0.75],
|
||||
"scale": [1, 1, 0.57]
|
||||
},
|
||||
"firstperson_lefthand": {
|
||||
"rotation": [5, 4, 5],
|
||||
"translation": [0.25, 4, 0.75],
|
||||
"scale": [1, 1, 0.57]
|
||||
},
|
||||
"ground": {
|
||||
"rotation": [0, 0, 90],
|
||||
"translation": [0, -1.3, 0],
|
||||
"scale": [0.76914, 0.76914, 0.76914]
|
||||
},
|
||||
"gui": {
|
||||
"rotation": [64, 47, -47],
|
||||
"translation": [0, 0.5, 0],
|
||||
"scale": [0.86, 0.86, 0.86]
|
||||
},
|
||||
"head": {
|
||||
"translation": [0, 8, 0],
|
||||
"scale": [1.4, 1.4, 1.4]
|
||||
},
|
||||
"fixed": {
|
||||
"rotation": [0, 90, 0],
|
||||
"translation": [0.5, 0.5, -1],
|
||||
"scale": [0.72, 0.72, 0.72]
|
||||
}
|
||||
}
|
||||
}
|
BIN
src/main/resources/assets/create/sounds/fwoomp.ogg
Normal file
BIN
src/main/resources/assets/create/sounds/fwoomp.ogg
Normal file
Binary file not shown.
Loading…
Reference in a new issue