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:
simibubi 2021-06-26 01:17:35 +02:00
parent 760486adb6
commit 5a30c3bcdb
48 changed files with 1757 additions and 138 deletions

View file

@ -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

View file

@ -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",

View file

@ -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_.",

View file

@ -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_.",

View file

@ -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_",

View file

@ -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._",

View file

@ -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_.",

View file

@ -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_.",

View file

@ -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": "物流系の装置の_搬入_と_搬出_をより_正確_に_制御_し、_アイテムのセット_またはいくつかの_入れ子になったフィルター_と照合します。",

View file

@ -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": "장치의 _입력_과 _출력_을 필터 _아이템_ 목록에 따라 _조정_합니다.",

View file

@ -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_.",

View file

@ -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.",

View file

@ -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_.",

View file

@ -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": "Управляет_ _выходами_ и входами логистических устройств с _большей_ _точностью_, _сопоставляя_ их со _списком_ _предметов_ или несколькими _вложенными_ _фильтрами_.",

View file

@ -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": "可用于_精确_控制物流设备的_输出_以及_输入_使得通过的物品流与_一组_物品或者数个_相嵌套的过滤器_相匹配。",

View file

@ -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": "將物品更精確地進行_篩選分類_可以同時_篩選_多個物品或者將已標記的_過濾器_放在另一個_過濾器_里_嵌套_使用。",

View file

@ -0,0 +1,3 @@
{
"parent": "create:item/potato_cannon/item"
}

View file

@ -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": [
{

View file

@ -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"

View file

@ -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"

View file

@ -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() {}
}

View file

@ -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))

View file

@ -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)

View file

@ -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();

View file

@ -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() {

View file

@ -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;
}
}

View file

@ -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

View file

@ -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);
}
}

View file

@ -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

View file

@ -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--;
}
}

View file

@ -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);
});
}
}
}

View file

@ -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();
}
}

View file

@ -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);
}
}

View file

@ -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;
}
}
}

View file

@ -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());
}
}

View file

@ -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);
}
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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();

View file

@ -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));

View file

@ -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)";
}

View file

@ -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),
;

View file

@ -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",

View file

@ -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

View file

@ -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]
}
]
}

View file

@ -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]
}
}
}

Binary file not shown.