No longer just for books
- Allow Linked Controllers to be placed onto and used from Lecterns - Set Linked Controller max stack size to 1
This commit is contained in:
parent
7548d483fd
commit
7df865b3cb
36 changed files with 757 additions and 89 deletions
|
@ -199,6 +199,7 @@ a4cfcdc038af0f93a58d88ea8860b34d73632ff4 assets/create/blockstates/layered_dolom
|
|||
038f532f7364c1e793196fcc5856df9ceff93578 assets/create/blockstates/layered_limestone.json
|
||||
8535d628f8834be62cdf62ef4b60c2ce3a7af99f assets/create/blockstates/layered_scoria.json
|
||||
419d7fffc5cbd392f10211afa8d17e3eb8df8380 assets/create/blockstates/layered_weathered_limestone.json
|
||||
6a3c81d62c7c5a5fa2f4a1e239319d83875bbe55 assets/create/blockstates/lectern_controller.json
|
||||
029904f21970947a4423a6e0c8c65c4e02f2e8e6 assets/create/blockstates/light_blue_sail.json
|
||||
2a0a8b1715700bf1e284ee57ef9f7f163c12f3ee assets/create/blockstates/light_blue_seat.json
|
||||
9bee040558a6b24e21f837fc808e17fae1883e71 assets/create/blockstates/light_blue_valve_handle.json
|
||||
|
@ -409,21 +410,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
|
||||
7818080b0809c3a01f28c05c0ed7edf8bcbc7b1d assets/create/lang/en_ud.json
|
||||
8fa6882a7cb3a89aef2b4b15378be513e0b39035 assets/create/lang/en_us.json
|
||||
cd1667de5c4baede2cc6b40c18a1dfdbeab4ca92 assets/create/lang/unfinished/de_de.json
|
||||
33ee62f5383be9038c5f33c6bba7cd352de962b3 assets/create/lang/unfinished/es_es.json
|
||||
2e00b6f84ca1ed6532d0cb13ce6d534544c128d7 assets/create/lang/unfinished/es_mx.json
|
||||
e9168dac5cce730ea1425a2d39aa979f7b944ef8 assets/create/lang/unfinished/fr_fr.json
|
||||
45974fc63f80241b481367895e6f4059821d9d98 assets/create/lang/unfinished/it_it.json
|
||||
b8292ad388663d5bb144813c81c23737b19a6696 assets/create/lang/unfinished/ja_jp.json
|
||||
a33f8a2d9675c58420d12a807a079b29979dbb2a assets/create/lang/unfinished/ko_kr.json
|
||||
9f109e77eb4a258ed30633d423889612dfc3689a assets/create/lang/unfinished/nl_nl.json
|
||||
08c31f2734fe78242ef889d001cebee28c3cc33a assets/create/lang/unfinished/pl_pl.json
|
||||
7af2e8033d29038d077c5f7b0b0433d38b9c6f8b assets/create/lang/unfinished/pt_br.json
|
||||
0a6e6219f07d3eb68c45e2eaebbb5327383a6b06 assets/create/lang/unfinished/ru_ru.json
|
||||
994953150b977f373424f1e7193c7d5bc1ad1ba3 assets/create/lang/unfinished/zh_cn.json
|
||||
ebfe8edd3bd161efc819fced5e25f02e2bc93888 assets/create/lang/unfinished/zh_tw.json
|
||||
391e1552053f8fbb148b0bdf2e61f74ae4782100 assets/create/lang/en_ud.json
|
||||
0e4ba265ae6ab6a81da261f075eef3dc65f688d1 assets/create/lang/en_us.json
|
||||
012e68268dc9b1a23d726430ca1708fea249cbd6 assets/create/lang/unfinished/de_de.json
|
||||
c69e245a2549cb045768cd08e16b74a4d3694360 assets/create/lang/unfinished/es_es.json
|
||||
df23300aa54b5da18f430f8bb15738c1b994b317 assets/create/lang/unfinished/es_mx.json
|
||||
213cbf99412e5080cb1c48a7c83e03e9ab05d3e5 assets/create/lang/unfinished/fr_fr.json
|
||||
a9bacc0a4febe3ae012ccf32d01a7a6a2467004d assets/create/lang/unfinished/it_it.json
|
||||
7c9e02f792fb32785ba9c9afa24c58f2a0b8faa7 assets/create/lang/unfinished/ja_jp.json
|
||||
050f377d87dcb72b1bd19b57f5c0c02d5c572201 assets/create/lang/unfinished/ko_kr.json
|
||||
dc06754d80e667eb957b5ff81f628e912bc72d21 assets/create/lang/unfinished/nl_nl.json
|
||||
147c23ff2d3dd778a88da7a1f1e79befc8b9b62f assets/create/lang/unfinished/pl_pl.json
|
||||
1b40342e2f2782e4b7e5802a3a72c0df8977bbf1 assets/create/lang/unfinished/pt_br.json
|
||||
ad720b0b156624c2481f54f23260fe992cf88c5b assets/create/lang/unfinished/ru_ru.json
|
||||
5adb90c525b9541fc22f67eb79f2d946fb859082 assets/create/lang/unfinished/zh_cn.json
|
||||
69bf228174d5d88ffbb10d45409c3edf9bd0c99b 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
|
||||
|
@ -1658,7 +1659,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
|
||||
60e8433e4fecca8ff5002978844169eefc929394 assets/create/sounds.json
|
||||
b378f90ba8723a109fa960dfddf63149a34cb26f assets/create/sounds.json
|
||||
0f1b4b980afba9bf2caf583b88e261bba8b10313 data/create/advancements/aesthetics.json
|
||||
187921fa131b06721bfaf63f2623a28c141aae9a data/create/advancements/andesite_alloy.json
|
||||
0ea2db7173b5be28b289ea7c9a6a0cf5805c60c7 data/create/advancements/andesite_casing.json
|
||||
|
@ -2591,6 +2592,7 @@ fa8a5922f7346a15a80b5c7e5dfc26d24ea98728 data/create/loot_tables/blocks/layered_
|
|||
197ecf9c00c06f6014ecbec678a5466492902cb0 data/create/loot_tables/blocks/layered_limestone.json
|
||||
0ec9e366708637a01e600a2a12cc267d81b3f69b data/create/loot_tables/blocks/layered_scoria.json
|
||||
54816065cd735dfe53b1eb551110ba18c6e3746a data/create/loot_tables/blocks/layered_weathered_limestone.json
|
||||
4b34cda34416f58045b10e61a0c8ae2b29cb0794 data/create/loot_tables/blocks/lectern_controller.json
|
||||
28ae0ee8a0b1fb6becae6264de687fe17940708e data/create/loot_tables/blocks/light_blue_sail.json
|
||||
b403848d3a4b4ad7a048e70c21e200e40d0c67e3 data/create/loot_tables/blocks/light_blue_seat.json
|
||||
32afe3fff74ccda4151567961fa6c0b8e3735358 data/create/loot_tables/blocks/light_blue_valve_handle.json
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"variants": {
|
||||
"facing=north,has_book=false,powered=false": {
|
||||
"model": "minecraft:block/lectern"
|
||||
},
|
||||
"facing=south,has_book=false,powered=false": {
|
||||
"model": "minecraft:block/lectern",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,has_book=false,powered=false": {
|
||||
"model": "minecraft:block/lectern",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,has_book=false,powered=false": {
|
||||
"model": "minecraft:block/lectern",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,has_book=true,powered=false": {
|
||||
"model": "minecraft:block/lectern"
|
||||
},
|
||||
"facing=south,has_book=true,powered=false": {
|
||||
"model": "minecraft:block/lectern",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,has_book=true,powered=false": {
|
||||
"model": "minecraft:block/lectern",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,has_book=true,powered=false": {
|
||||
"model": "minecraft:block/lectern",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,has_book=false,powered=true": {
|
||||
"model": "minecraft:block/lectern"
|
||||
},
|
||||
"facing=south,has_book=false,powered=true": {
|
||||
"model": "minecraft:block/lectern",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,has_book=false,powered=true": {
|
||||
"model": "minecraft:block/lectern",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,has_book=false,powered=true": {
|
||||
"model": "minecraft:block/lectern",
|
||||
"y": 90
|
||||
},
|
||||
"facing=north,has_book=true,powered=true": {
|
||||
"model": "minecraft:block/lectern"
|
||||
},
|
||||
"facing=south,has_book=true,powered=true": {
|
||||
"model": "minecraft:block/lectern",
|
||||
"y": 180
|
||||
},
|
||||
"facing=west,has_book=true,powered=true": {
|
||||
"model": "minecraft:block/lectern",
|
||||
"y": 270
|
||||
},
|
||||
"facing=east,has_book=true,powered=true": {
|
||||
"model": "minecraft:block/lectern",
|
||||
"y": 90
|
||||
}
|
||||
}
|
||||
}
|
|
@ -200,6 +200,7 @@
|
|||
"block.create.layered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u028E\u0250\uA780",
|
||||
"block.create.layered_scoria": "\u0250\u0131\u0279o\u0254S p\u01DD\u0279\u01DD\u028E\u0250\uA780",
|
||||
"block.create.layered_weathered_limestone": "\u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM p\u01DD\u0279\u01DD\u028E\u0250\uA780",
|
||||
"block.create.lectern_controller": "\u0279\u01DD\u05DF\u05DFo\u0279\u0287uo\u0186 u\u0279\u01DD\u0287\u0254\u01DD\uA780",
|
||||
"block.create.light_blue_sail": "\u05DF\u0131\u0250S \u01DDn\u05DF\u15FA \u0287\u0265b\u0131\uA780",
|
||||
"block.create.light_blue_seat": "\u0287\u0250\u01DDS \u01DDn\u05DF\u15FA \u0287\u0265b\u0131\uA780",
|
||||
"block.create.light_blue_valve_handle": "\u01DD\u05DFpu\u0250H \u01DD\u028C\u05DF\u0250\u039B \u01DDn\u05DF\u15FA \u0287\u0265b\u0131\uA780",
|
||||
|
|
|
@ -203,6 +203,7 @@
|
|||
"block.create.layered_limestone": "Layered Limestone",
|
||||
"block.create.layered_scoria": "Layered Scoria",
|
||||
"block.create.layered_weathered_limestone": "Layered Weathered Limestone",
|
||||
"block.create.lectern_controller": "Lectern Controller",
|
||||
"block.create.light_blue_sail": "Light Blue Sail",
|
||||
"block.create.light_blue_seat": "Light Blue Seat",
|
||||
"block.create.light_blue_valve_handle": "Light Blue Valve Handle",
|
||||
|
@ -1191,6 +1192,7 @@
|
|||
"create.subtitle.schematicannon_finish": "Schematicannon dings",
|
||||
"create.subtitle.scroll_value": "Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "Crafter crafts",
|
||||
"create.subtitle.controller_put": "Controller thumps",
|
||||
"create.subtitle.saw_process": "Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "Component breaks",
|
||||
|
@ -1206,6 +1208,7 @@
|
|||
"create.subtitle.copper_armor_equip": "Diving equipment clinks",
|
||||
"create.subtitle.cursed_bell_use": "Cursed Bell tolls",
|
||||
"create.subtitle.cursed_bell_convert": "Cursed Bell awakens",
|
||||
"create.subtitle.controller_take": "Lectern empties",
|
||||
"create.subtitle.mechanical_press_activation": "Mechanical Press clangs",
|
||||
"create.subtitle.contraption_assemble": "Contraption moves",
|
||||
"create.subtitle.crafter_click": "Crafter clicks",
|
||||
|
@ -1400,6 +1403,8 @@
|
|||
"item.create.linked_controller.tooltip.behaviour2": "Opens the manual _Configuration Interface_.",
|
||||
"item.create.linked_controller.tooltip.condition3": "R-Click on Redstone Link Receiver",
|
||||
"item.create.linked_controller.tooltip.behaviour3": "Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.",
|
||||
"item.create.linked_controller.tooltip.condition4": "R-Click on Lectern",
|
||||
"item.create.linked_controller.tooltip.behaviour4": "Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
|
||||
|
||||
"item.create.diving_helmet.tooltip": "DIVING HELMET",
|
||||
"item.create.diving_helmet.tooltip.summary": "Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1085",
|
||||
"_": "Missing Localizations: 1090",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -204,6 +204,7 @@
|
|||
"block.create.layered_limestone": "Geschichteter Kalkstein",
|
||||
"block.create.layered_scoria": "Geschichtete Schlacke",
|
||||
"block.create.layered_weathered_limestone": "Geschichteter Verwitterter Kalkstein",
|
||||
"block.create.lectern_controller": "UNLOCALIZED: Lectern Controller",
|
||||
"block.create.light_blue_sail": "Hellblaues Segel",
|
||||
"block.create.light_blue_seat": "Hellblauer Sitz",
|
||||
"block.create.light_blue_valve_handle": "Hellblauer Ventilgriff",
|
||||
|
@ -1192,6 +1193,7 @@
|
|||
"create.subtitle.schematicannon_finish": "Bauplankanone endet",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.controller_put": "UNLOCALIZED: Controller thumps",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
|
@ -1207,6 +1209,7 @@
|
|||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.cursed_bell_use": "UNLOCALIZED: Cursed Bell tolls",
|
||||
"create.subtitle.cursed_bell_convert": "UNLOCALIZED: Cursed Bell awakens",
|
||||
"create.subtitle.controller_take": "UNLOCALIZED: Lectern empties",
|
||||
"create.subtitle.mechanical_press_activation": "Mechanische Presse wird aktiviert",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
|
@ -1401,6 +1404,8 @@
|
|||
"item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.",
|
||||
"item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver",
|
||||
"item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.",
|
||||
"item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern",
|
||||
"item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
|
||||
|
||||
"item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET",
|
||||
"item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 846",
|
||||
"_": "Missing Localizations: 851",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -204,6 +204,7 @@
|
|||
"block.create.layered_limestone": "Piedra caliza estratificada",
|
||||
"block.create.layered_scoria": "Escoria estratificada",
|
||||
"block.create.layered_weathered_limestone": "Caliza erosionada estratificada",
|
||||
"block.create.lectern_controller": "UNLOCALIZED: Lectern Controller",
|
||||
"block.create.light_blue_sail": "Vela azul claro",
|
||||
"block.create.light_blue_seat": "Asiento azul claro",
|
||||
"block.create.light_blue_valve_handle": "Asa de válvula azul claro",
|
||||
|
@ -1192,6 +1193,7 @@
|
|||
"create.subtitle.schematicannon_finish": "Acabados de Schematicannon",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.controller_put": "UNLOCALIZED: Controller thumps",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
|
@ -1207,6 +1209,7 @@
|
|||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.cursed_bell_use": "UNLOCALIZED: Cursed Bell tolls",
|
||||
"create.subtitle.cursed_bell_convert": "UNLOCALIZED: Cursed Bell awakens",
|
||||
"create.subtitle.controller_take": "UNLOCALIZED: Lectern empties",
|
||||
"create.subtitle.mechanical_press_activation": "La Prensa Mecánica se activa",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
|
@ -1401,6 +1404,8 @@
|
|||
"item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.",
|
||||
"item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver",
|
||||
"item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.",
|
||||
"item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern",
|
||||
"item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
|
||||
|
||||
"item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET",
|
||||
"item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1452",
|
||||
"_": "Missing Localizations: 1457",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -204,6 +204,7 @@
|
|||
"block.create.layered_limestone": "Caliza en Capas",
|
||||
"block.create.layered_scoria": "Escoria en Capas",
|
||||
"block.create.layered_weathered_limestone": "Caliza Meteorizada en Capas",
|
||||
"block.create.lectern_controller": "UNLOCALIZED: Lectern Controller",
|
||||
"block.create.light_blue_sail": "Vela Azul Claro",
|
||||
"block.create.light_blue_seat": "Asiento Azul Claro",
|
||||
"block.create.light_blue_valve_handle": "Manija de Válvula Azul Claro",
|
||||
|
@ -1192,6 +1193,7 @@
|
|||
"create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.controller_put": "UNLOCALIZED: Controller thumps",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
|
@ -1207,6 +1209,7 @@
|
|||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.cursed_bell_use": "UNLOCALIZED: Cursed Bell tolls",
|
||||
"create.subtitle.cursed_bell_convert": "UNLOCALIZED: Cursed Bell awakens",
|
||||
"create.subtitle.controller_take": "UNLOCALIZED: Lectern empties",
|
||||
"create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
|
@ -1401,6 +1404,8 @@
|
|||
"item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.",
|
||||
"item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver",
|
||||
"item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.",
|
||||
"item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern",
|
||||
"item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
|
||||
|
||||
"item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET",
|
||||
"item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1337",
|
||||
"_": "Missing Localizations: 1342",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -204,6 +204,7 @@
|
|||
"block.create.layered_limestone": "UNLOCALIZED: Layered Limestone",
|
||||
"block.create.layered_scoria": "UNLOCALIZED: Layered Scoria",
|
||||
"block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone",
|
||||
"block.create.lectern_controller": "UNLOCALIZED: Lectern Controller",
|
||||
"block.create.light_blue_sail": "UNLOCALIZED: Light Blue Sail",
|
||||
"block.create.light_blue_seat": "UNLOCALIZED: Light Blue Seat",
|
||||
"block.create.light_blue_valve_handle": "UNLOCALIZED: Light Blue Valve Handle",
|
||||
|
@ -1192,6 +1193,7 @@
|
|||
"create.subtitle.schematicannon_finish": "Fin de schémacanon",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.controller_put": "UNLOCALIZED: Controller thumps",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
|
@ -1207,6 +1209,7 @@
|
|||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.cursed_bell_use": "UNLOCALIZED: Cursed Bell tolls",
|
||||
"create.subtitle.cursed_bell_convert": "UNLOCALIZED: Cursed Bell awakens",
|
||||
"create.subtitle.controller_take": "UNLOCALIZED: Lectern empties",
|
||||
"create.subtitle.mechanical_press_activation": "Activation de la presse mechanique",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
|
@ -1401,6 +1404,8 @@
|
|||
"item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.",
|
||||
"item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver",
|
||||
"item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.",
|
||||
"item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern",
|
||||
"item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
|
||||
|
||||
"item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET",
|
||||
"item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 863",
|
||||
"_": "Missing Localizations: 868",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -204,6 +204,7 @@
|
|||
"block.create.layered_limestone": "Calcare stratificato",
|
||||
"block.create.layered_scoria": "Scoria stratificata",
|
||||
"block.create.layered_weathered_limestone": "Calcare consumato stratificato",
|
||||
"block.create.lectern_controller": "UNLOCALIZED: Lectern Controller",
|
||||
"block.create.light_blue_sail": "Vela azzurra",
|
||||
"block.create.light_blue_seat": "Sedile azzurro",
|
||||
"block.create.light_blue_valve_handle": "Maniglia per valvola azzurra",
|
||||
|
@ -1192,6 +1193,7 @@
|
|||
"create.subtitle.schematicannon_finish": "Finiture cannoneschematico",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.controller_put": "UNLOCALIZED: Controller thumps",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
|
@ -1207,6 +1209,7 @@
|
|||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.cursed_bell_use": "UNLOCALIZED: Cursed Bell tolls",
|
||||
"create.subtitle.cursed_bell_convert": "UNLOCALIZED: Cursed Bell awakens",
|
||||
"create.subtitle.controller_take": "UNLOCALIZED: Lectern empties",
|
||||
"create.subtitle.mechanical_press_activation": "Pressa meccanica attiva",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
|
@ -1401,6 +1404,8 @@
|
|||
"item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.",
|
||||
"item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver",
|
||||
"item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.",
|
||||
"item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern",
|
||||
"item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
|
||||
|
||||
"item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET",
|
||||
"item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 229",
|
||||
"_": "Missing Localizations: 234",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -204,6 +204,7 @@
|
|||
"block.create.layered_limestone": "石灰岩の組石",
|
||||
"block.create.layered_scoria": "スコリアの組石",
|
||||
"block.create.layered_weathered_limestone": "風化した石灰岩の組石",
|
||||
"block.create.lectern_controller": "UNLOCALIZED: Lectern Controller",
|
||||
"block.create.light_blue_sail": "空色の帆",
|
||||
"block.create.light_blue_seat": "空色のシート",
|
||||
"block.create.light_blue_valve_handle": "空色のバルブハンドル",
|
||||
|
@ -1192,6 +1193,7 @@
|
|||
"create.subtitle.schematicannon_finish": "概略図砲が作業を終える",
|
||||
"create.subtitle.scroll_value": "スクロールのカチカチ音",
|
||||
"create.subtitle.crafter_craft": "メカニカルクラフターがクラフトする",
|
||||
"create.subtitle.controller_put": "UNLOCALIZED: Controller thumps",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "ハンドクランクが回る",
|
||||
"create.subtitle.wrench_remove": "機械を壊す",
|
||||
|
@ -1207,6 +1209,7 @@
|
|||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.cursed_bell_use": "UNLOCALIZED: Cursed Bell tolls",
|
||||
"create.subtitle.cursed_bell_convert": "UNLOCALIZED: Cursed Bell awakens",
|
||||
"create.subtitle.controller_take": "UNLOCALIZED: Lectern empties",
|
||||
"create.subtitle.mechanical_press_activation": "メカニカルプレスがガーンと鳴る",
|
||||
"create.subtitle.contraption_assemble": "からくりが動く",
|
||||
"create.subtitle.crafter_click": "メカニカルクラフターのカチカチ音",
|
||||
|
@ -1401,6 +1404,8 @@
|
|||
"item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.",
|
||||
"item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver",
|
||||
"item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.",
|
||||
"item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern",
|
||||
"item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
|
||||
|
||||
"item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET",
|
||||
"item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 916",
|
||||
"_": "Missing Localizations: 921",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -204,6 +204,7 @@
|
|||
"block.create.layered_limestone": "층이 있는 석회암",
|
||||
"block.create.layered_scoria": "층이 있는 스코리아",
|
||||
"block.create.layered_weathered_limestone": "층이 있는 풍화된 석회암",
|
||||
"block.create.lectern_controller": "UNLOCALIZED: Lectern Controller",
|
||||
"block.create.light_blue_sail": "하늘색 날개",
|
||||
"block.create.light_blue_seat": "하늘색 좌석",
|
||||
"block.create.light_blue_valve_handle": "하늘색 밸브 손잡이",
|
||||
|
@ -1192,6 +1193,7 @@
|
|||
"create.subtitle.schematicannon_finish": "청사진 대포가 끝남",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.controller_put": "UNLOCALIZED: Controller thumps",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
|
@ -1207,6 +1209,7 @@
|
|||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.cursed_bell_use": "UNLOCALIZED: Cursed Bell tolls",
|
||||
"create.subtitle.cursed_bell_convert": "UNLOCALIZED: Cursed Bell awakens",
|
||||
"create.subtitle.controller_take": "UNLOCALIZED: Lectern empties",
|
||||
"create.subtitle.mechanical_press_activation": "압착기가 가동됨",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
|
@ -1401,6 +1404,8 @@
|
|||
"item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.",
|
||||
"item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver",
|
||||
"item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.",
|
||||
"item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern",
|
||||
"item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
|
||||
|
||||
"item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET",
|
||||
"item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1718",
|
||||
"_": "Missing Localizations: 1723",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -204,6 +204,7 @@
|
|||
"block.create.layered_limestone": "UNLOCALIZED: Layered Limestone",
|
||||
"block.create.layered_scoria": "UNLOCALIZED: Layered Scoria",
|
||||
"block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone",
|
||||
"block.create.lectern_controller": "UNLOCALIZED: Lectern Controller",
|
||||
"block.create.light_blue_sail": "UNLOCALIZED: Light Blue Sail",
|
||||
"block.create.light_blue_seat": "UNLOCALIZED: Light Blue Seat",
|
||||
"block.create.light_blue_valve_handle": "UNLOCALIZED: Light Blue Valve Handle",
|
||||
|
@ -1192,6 +1193,7 @@
|
|||
"create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.controller_put": "UNLOCALIZED: Controller thumps",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
|
@ -1207,6 +1209,7 @@
|
|||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.cursed_bell_use": "UNLOCALIZED: Cursed Bell tolls",
|
||||
"create.subtitle.cursed_bell_convert": "UNLOCALIZED: Cursed Bell awakens",
|
||||
"create.subtitle.controller_take": "UNLOCALIZED: Lectern empties",
|
||||
"create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
|
@ -1401,6 +1404,8 @@
|
|||
"item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.",
|
||||
"item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver",
|
||||
"item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.",
|
||||
"item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern",
|
||||
"item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
|
||||
|
||||
"item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET",
|
||||
"item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 205",
|
||||
"_": "Missing Localizations: 210",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -204,6 +204,7 @@
|
|||
"block.create.layered_limestone": "Warstwowy wapień",
|
||||
"block.create.layered_scoria": "Warstwowy żużel",
|
||||
"block.create.layered_weathered_limestone": "Warstwowy zwietrzały wapień",
|
||||
"block.create.lectern_controller": "UNLOCALIZED: Lectern Controller",
|
||||
"block.create.light_blue_sail": "Jasnoniebieski żagiel",
|
||||
"block.create.light_blue_seat": "Jasnoniebieskie siedzenie",
|
||||
"block.create.light_blue_valve_handle": "Jasnoniebieskie pokrętło",
|
||||
|
@ -1192,6 +1193,7 @@
|
|||
"create.subtitle.schematicannon_finish": "Schematoarmata skończyła",
|
||||
"create.subtitle.scroll_value": "Kliknięcie",
|
||||
"create.subtitle.crafter_craft": "Mechaniczny stół rzemieślniczy konstruuje",
|
||||
"create.subtitle.controller_put": "UNLOCALIZED: Controller thumps",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "Ręczna korba obraca się",
|
||||
"create.subtitle.wrench_remove": "Komponent niszczy się",
|
||||
|
@ -1207,6 +1209,7 @@
|
|||
"create.subtitle.copper_armor_equip": "Sprzęt do nurkowania pobrzękuje",
|
||||
"create.subtitle.cursed_bell_use": "UNLOCALIZED: Cursed Bell tolls",
|
||||
"create.subtitle.cursed_bell_convert": "UNLOCALIZED: Cursed Bell awakens",
|
||||
"create.subtitle.controller_take": "UNLOCALIZED: Lectern empties",
|
||||
"create.subtitle.mechanical_press_activation": "Mechaniczna prasa się uruchamia",
|
||||
"create.subtitle.contraption_assemble": "Maszyna przesuwa się",
|
||||
"create.subtitle.crafter_click": "Mechaniczny stół rzemieślniczy stuka",
|
||||
|
@ -1401,6 +1404,8 @@
|
|||
"item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.",
|
||||
"item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver",
|
||||
"item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.",
|
||||
"item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern",
|
||||
"item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
|
||||
|
||||
"item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET",
|
||||
"item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 1759",
|
||||
"_": "Missing Localizations: 1764",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -204,6 +204,7 @@
|
|||
"block.create.layered_limestone": "UNLOCALIZED: Layered Limestone",
|
||||
"block.create.layered_scoria": "UNLOCALIZED: Layered Scoria",
|
||||
"block.create.layered_weathered_limestone": "UNLOCALIZED: Layered Weathered Limestone",
|
||||
"block.create.lectern_controller": "UNLOCALIZED: Lectern Controller",
|
||||
"block.create.light_blue_sail": "UNLOCALIZED: Light Blue Sail",
|
||||
"block.create.light_blue_seat": "UNLOCALIZED: Light Blue Seat",
|
||||
"block.create.light_blue_valve_handle": "UNLOCALIZED: Light Blue Valve Handle",
|
||||
|
@ -1192,6 +1193,7 @@
|
|||
"create.subtitle.schematicannon_finish": "UNLOCALIZED: Schematicannon dings",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.controller_put": "UNLOCALIZED: Controller thumps",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
|
@ -1207,6 +1209,7 @@
|
|||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.cursed_bell_use": "UNLOCALIZED: Cursed Bell tolls",
|
||||
"create.subtitle.cursed_bell_convert": "UNLOCALIZED: Cursed Bell awakens",
|
||||
"create.subtitle.controller_take": "UNLOCALIZED: Lectern empties",
|
||||
"create.subtitle.mechanical_press_activation": "UNLOCALIZED: Mechanical Press clangs",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
|
@ -1401,6 +1404,8 @@
|
|||
"item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.",
|
||||
"item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver",
|
||||
"item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.",
|
||||
"item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern",
|
||||
"item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
|
||||
|
||||
"item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET",
|
||||
"item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 762",
|
||||
"_": "Missing Localizations: 767",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -204,6 +204,7 @@
|
|||
"block.create.layered_limestone": "Слоистый известняк",
|
||||
"block.create.layered_scoria": "Слоистый пепел",
|
||||
"block.create.layered_weathered_limestone": "Слоистый выветренный известняк",
|
||||
"block.create.lectern_controller": "UNLOCALIZED: Lectern Controller",
|
||||
"block.create.light_blue_sail": "Голубой парус",
|
||||
"block.create.light_blue_seat": "Голубое сиденье",
|
||||
"block.create.light_blue_valve_handle": "Голубой ручной вентиль",
|
||||
|
@ -1192,6 +1193,7 @@
|
|||
"create.subtitle.schematicannon_finish": "Схематичная пушка закончила работу",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.controller_put": "UNLOCALIZED: Controller thumps",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
|
@ -1207,6 +1209,7 @@
|
|||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.cursed_bell_use": "UNLOCALIZED: Cursed Bell tolls",
|
||||
"create.subtitle.cursed_bell_convert": "UNLOCALIZED: Cursed Bell awakens",
|
||||
"create.subtitle.controller_take": "UNLOCALIZED: Lectern empties",
|
||||
"create.subtitle.mechanical_press_activation": "Механический пресс активирован",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
|
@ -1401,6 +1404,8 @@
|
|||
"item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.",
|
||||
"item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver",
|
||||
"item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.",
|
||||
"item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern",
|
||||
"item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
|
||||
|
||||
"item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET",
|
||||
"item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 246",
|
||||
"_": "Missing Localizations: 251",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -204,6 +204,7 @@
|
|||
"block.create.layered_limestone": "层叠石灰岩",
|
||||
"block.create.layered_scoria": "层叠熔渣",
|
||||
"block.create.layered_weathered_limestone": "层叠风化石灰岩",
|
||||
"block.create.lectern_controller": "UNLOCALIZED: Lectern Controller",
|
||||
"block.create.light_blue_sail": "淡蓝色风帆",
|
||||
"block.create.light_blue_seat": "淡蓝色坐垫",
|
||||
"block.create.light_blue_valve_handle": "淡蓝色阀门手轮",
|
||||
|
@ -1192,6 +1193,7 @@
|
|||
"create.subtitle.schematicannon_finish": "蓝图加农炮:叮",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.controller_put": "UNLOCALIZED: Controller thumps",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
|
@ -1207,6 +1209,7 @@
|
|||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.cursed_bell_use": "UNLOCALIZED: Cursed Bell tolls",
|
||||
"create.subtitle.cursed_bell_convert": "UNLOCALIZED: Cursed Bell awakens",
|
||||
"create.subtitle.controller_take": "UNLOCALIZED: Lectern empties",
|
||||
"create.subtitle.mechanical_press_activation": "辊压机:工作中",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
|
@ -1401,6 +1404,8 @@
|
|||
"item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.",
|
||||
"item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver",
|
||||
"item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.",
|
||||
"item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern",
|
||||
"item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
|
||||
|
||||
"item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET",
|
||||
"item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 241",
|
||||
"_": "Missing Localizations: 246",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -204,6 +204,7 @@
|
|||
"block.create.layered_limestone": "疊層石灰岩",
|
||||
"block.create.layered_scoria": "疊層火成岩",
|
||||
"block.create.layered_weathered_limestone": "疊層風化石灰岩",
|
||||
"block.create.lectern_controller": "UNLOCALIZED: Lectern Controller",
|
||||
"block.create.light_blue_sail": "淡藍色風帆",
|
||||
"block.create.light_blue_seat": "淡藍色坐墊",
|
||||
"block.create.light_blue_valve_handle": "淡藍色閥門開關",
|
||||
|
@ -1192,6 +1193,7 @@
|
|||
"create.subtitle.schematicannon_finish": "藍圖大炮完成任務",
|
||||
"create.subtitle.scroll_value": "UNLOCALIZED: Scroll-input clicks",
|
||||
"create.subtitle.crafter_craft": "UNLOCALIZED: Crafter crafts",
|
||||
"create.subtitle.controller_put": "UNLOCALIZED: Controller thumps",
|
||||
"create.subtitle.saw_process": "UNLOCALIZED: Mechanical Saw processes",
|
||||
"create.subtitle.cranking": "UNLOCALIZED: Hand Crank turns",
|
||||
"create.subtitle.wrench_remove": "UNLOCALIZED: Component breaks",
|
||||
|
@ -1207,6 +1209,7 @@
|
|||
"create.subtitle.copper_armor_equip": "UNLOCALIZED: Diving equipment clinks",
|
||||
"create.subtitle.cursed_bell_use": "UNLOCALIZED: Cursed Bell tolls",
|
||||
"create.subtitle.cursed_bell_convert": "UNLOCALIZED: Cursed Bell awakens",
|
||||
"create.subtitle.controller_take": "UNLOCALIZED: Lectern empties",
|
||||
"create.subtitle.mechanical_press_activation": "液壓機工作",
|
||||
"create.subtitle.contraption_assemble": "UNLOCALIZED: Contraption moves",
|
||||
"create.subtitle.crafter_click": "UNLOCALIZED: Crafter clicks",
|
||||
|
@ -1401,6 +1404,8 @@
|
|||
"item.create.linked_controller.tooltip.behaviour2": "UNLOCALIZED: Opens the manual _Configuration Interface_.",
|
||||
"item.create.linked_controller.tooltip.condition3": "UNLOCALIZED: R-Click on Redstone Link Receiver",
|
||||
"item.create.linked_controller.tooltip.behaviour3": "UNLOCALIZED: Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.",
|
||||
"item.create.linked_controller.tooltip.condition4": "UNLOCALIZED: R-Click on Lectern",
|
||||
"item.create.linked_controller.tooltip.behaviour4": "UNLOCALIZED: Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
|
||||
|
||||
"item.create.diving_helmet.tooltip": "UNLOCALIZED: DIVING HELMET",
|
||||
"item.create.diving_helmet.tooltip.summary": "UNLOCALIZED: Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
|
||||
|
|
|
@ -58,6 +58,24 @@
|
|||
],
|
||||
"subtitle": "create.subtitle.controller_click"
|
||||
},
|
||||
"controller_put": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "minecraft:item.book.put",
|
||||
"type": "event"
|
||||
}
|
||||
],
|
||||
"subtitle": "create.subtitle.controller_put"
|
||||
},
|
||||
"controller_take": {
|
||||
"sounds": [
|
||||
{
|
||||
"name": "minecraft:entity.item_frame.remove_item",
|
||||
"type": "event"
|
||||
}
|
||||
],
|
||||
"subtitle": "create.subtitle.controller_take"
|
||||
},
|
||||
"copper_armor_equip": {
|
||||
"sounds": [
|
||||
{
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"pools": [
|
||||
{
|
||||
"rolls": 1,
|
||||
"entries": [
|
||||
{
|
||||
"type": "minecraft:item",
|
||||
"name": "minecraft:lectern"
|
||||
}
|
||||
],
|
||||
"conditions": [
|
||||
{
|
||||
"condition": "minecraft:survives_explosion"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -157,6 +157,7 @@ import com.simibubi.create.content.logistics.block.redstone.RedstoneContactBlock
|
|||
import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkBlock;
|
||||
import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkGenerator;
|
||||
import com.simibubi.create.content.logistics.block.redstone.StockpileSwitchBlock;
|
||||
import com.simibubi.create.content.logistics.item.LecternControllerBlock;
|
||||
import com.simibubi.create.content.schematics.block.SchematicTableBlock;
|
||||
import com.simibubi.create.content.schematics.block.SchematicannonBlock;
|
||||
import com.simibubi.create.foundation.block.DyedBlockList;
|
||||
|
@ -1279,6 +1280,15 @@ public class AllBlocks {
|
|||
.transform(customItemModel("diodes", "latch_off"))
|
||||
.register();
|
||||
|
||||
public static final BlockEntry<LecternControllerBlock> LECTERN_CONTROLLER =
|
||||
REGISTRATE.block("lectern_controller", LecternControllerBlock::new)
|
||||
.initialProperties(() -> Blocks.LECTERN)
|
||||
.blockstate((c,p) -> p.horizontalBlock(c.get(), p.models()
|
||||
.getExistingFile(p.mcLoc("block/lectern"))))
|
||||
.loot((lt, block) -> lt.registerDropping(block, Blocks.LECTERN))
|
||||
.register();
|
||||
|
||||
|
||||
// Curiosities
|
||||
|
||||
static {
|
||||
|
|
|
@ -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;
|
||||
|
@ -249,6 +249,7 @@ public class AllItems {
|
|||
|
||||
public static final ItemEntry<LinkedControllerItem> LINKED_CONTROLLER =
|
||||
REGISTRATE.item("linked_controller", LinkedControllerItem::new)
|
||||
.properties(p -> p.maxStackSize(1))
|
||||
.transform(CreateRegistrate.customRenderedItem(() -> LinkedControllerModel::new))
|
||||
.model(AssetLookup.itemModelWithPartials())
|
||||
.register();
|
||||
|
|
|
@ -174,6 +174,16 @@ public class AllSoundEvents {
|
|||
.category(SoundCategory.BLOCKS)
|
||||
.build(),
|
||||
|
||||
CONTROLLER_PUT = create("controller_put").subtitle("Controller thumps")
|
||||
.playExisting(SoundEvents.ITEM_BOOK_PUT, 1f, 1f)
|
||||
.category(SoundCategory.BLOCKS)
|
||||
.build(),
|
||||
|
||||
CONTROLLER_TAKE = create("controller_take").subtitle("Lectern empties")
|
||||
.playExisting(SoundEvents.ENTITY_ITEM_FRAME_REMOVE_ITEM, 1f, 1f)
|
||||
.category(SoundCategory.BLOCKS)
|
||||
.build(),
|
||||
|
||||
SAW_ACTIVATE_WOOD = create("saw_activate_wood").subtitle("Mechanical Saw activates")
|
||||
.playExisting(SoundEvents.ENTITY_BOAT_PADDLE_LAND, .75f, 1.5f)
|
||||
.category(SoundCategory.BLOCKS)
|
||||
|
|
|
@ -155,6 +155,8 @@ import com.simibubi.create.content.logistics.block.redstone.NixieTubeRenderer;
|
|||
import com.simibubi.create.content.logistics.block.redstone.NixieTubeTileEntity;
|
||||
import com.simibubi.create.content.logistics.block.redstone.RedstoneLinkTileEntity;
|
||||
import com.simibubi.create.content.logistics.block.redstone.StockpileSwitchTileEntity;
|
||||
import com.simibubi.create.content.logistics.item.LecternControllerRenderer;
|
||||
import com.simibubi.create.content.logistics.item.LecternControllerTileEntity;
|
||||
import com.simibubi.create.content.schematics.block.SchematicTableTileEntity;
|
||||
import com.simibubi.create.content.schematics.block.SchematicannonInstance;
|
||||
import com.simibubi.create.content.schematics.block.SchematicannonRenderer;
|
||||
|
@ -660,6 +662,14 @@ public class AllTileEntities {
|
|||
.renderer(() -> AdjustableRepeaterRenderer::new)
|
||||
.register();
|
||||
|
||||
public static final TileEntityEntry<LecternControllerTileEntity> LECTERN_CONTROLLER =
|
||||
Create.registrate()
|
||||
.tileEntity("lectern_controller", LecternControllerTileEntity::new)
|
||||
.validBlocks(AllBlocks.LECTERN_CONTROLLER)
|
||||
.renderer(() -> LecternControllerRenderer::new)
|
||||
.register();
|
||||
|
||||
// Curiosities
|
||||
public static final TileEntityEntry<CopperBacktankTileEntity> COPPER_BACKTANK = Create.registrate()
|
||||
.tileEntity("copper_backtank", CopperBacktankTileEntity::new)
|
||||
.instance(() -> CopperBacktankInstance::new)
|
||||
|
|
|
@ -0,0 +1,92 @@
|
|||
package com.simibubi.create.content.logistics.item;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.foundation.block.ITE;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.block.LecternBlock;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ActionResultType;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.BlockRayTraceResult;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class LecternControllerBlock extends LecternBlock implements ITE<LecternControllerTileEntity> {
|
||||
|
||||
public LecternControllerBlock(Properties properties) {
|
||||
super(properties);
|
||||
setDefaultState(getDefaultState().with(HAS_BOOK, true));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(IBlockReader p_196283_1_) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public TileEntity createTileEntity(BlockState state, IBlockReader world) {
|
||||
return AllTileEntities.LECTERN_CONTROLLER.create();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<LecternControllerTileEntity> getTileEntityClass() {
|
||||
return LecternControllerTileEntity.class;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResultType onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockRayTraceResult hit) {
|
||||
if (!player.isSneaking() && LecternControllerTileEntity.playerInRange(player, world, pos)) {
|
||||
if (!world.isRemote)
|
||||
withTileEntityDo(world, pos, te -> te.tryStartUsing(player));
|
||||
return ActionResultType.SUCCESS;
|
||||
}
|
||||
|
||||
if (player.isSneaking()) {
|
||||
if (!world.isRemote)
|
||||
replaceWithLectern(state, world, pos);
|
||||
return ActionResultType.SUCCESS;
|
||||
}
|
||||
|
||||
return ActionResultType.PASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean isMoving) {
|
||||
if (!state.isIn(newState.getBlock())) {
|
||||
if (!world.isRemote)
|
||||
withTileEntityDo(world, pos, te -> te.dropController(state));
|
||||
|
||||
super.onReplaced(state, world, pos, newState, isMoving);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getComparatorInputOverride(BlockState state, World world, BlockPos pos) {
|
||||
return 15;
|
||||
}
|
||||
|
||||
public void replaceLectern(BlockState lecternState, World world, BlockPos pos, ItemStack controller) {
|
||||
world.setBlockState(pos, getDefaultState()
|
||||
.with(FACING, lecternState.get(FACING))
|
||||
.with(POWERED, lecternState.get(POWERED)));
|
||||
withTileEntityDo(world, pos, te -> te.setController(controller));
|
||||
}
|
||||
|
||||
public void replaceWithLectern(BlockState state, World world, BlockPos pos) {
|
||||
AllSoundEvents.CONTROLLER_TAKE.playOnServer(world, pos);
|
||||
world.setBlockState(pos, Blocks.LECTERN.getDefaultState()
|
||||
.with(FACING, state.get(FACING))
|
||||
.with(POWERED, state.get(POWERED)));
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,48 @@
|
|||
package com.simibubi.create.content.logistics.item;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.foundation.item.render.PartialItemModelRenderer;
|
||||
import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.MatrixStacker;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.Direction;
|
||||
|
||||
public class LecternControllerRenderer extends SafeTileEntityRenderer<LecternControllerTileEntity> {
|
||||
|
||||
public LecternControllerRenderer(TileEntityRendererDispatcher dispatcher) {
|
||||
super(dispatcher);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void renderSafe(LecternControllerTileEntity te, float partialTicks, MatrixStack ms,
|
||||
IRenderTypeBuffer buffer, int light, int overlay) {
|
||||
|
||||
ItemStack stack = AllItems.LINKED_CONTROLLER.asStack();
|
||||
TransformType transformType = TransformType.NONE;
|
||||
LinkedControllerModel mainModel = ((LinkedControllerModel) Minecraft.getInstance()
|
||||
.getItemRenderer()
|
||||
.getItemModelWithOverrides(stack, null, null));
|
||||
PartialItemModelRenderer renderer = PartialItemModelRenderer.of(stack, transformType, ms, buffer, overlay);
|
||||
boolean active = te.hasUser();
|
||||
boolean usedByMe = te.isUsedBy(Minecraft.getInstance().player);
|
||||
|
||||
Direction facing = te.getBlockState().get(LecternControllerBlock.FACING);
|
||||
MatrixStacker msr = MatrixStacker.of(ms);
|
||||
|
||||
ms.push();
|
||||
msr.translate(0.5, 1.45, 0.5);
|
||||
msr.rotateY(AngleHelper.horizontalAngle(facing) - 90);
|
||||
msr.translate(0.28, 0, 0);
|
||||
msr.rotateZ(-22.0);
|
||||
LinkedControllerItemRenderer.renderLinkedController(stack, mainModel, renderer, transformType, ms, light, active, usedByMe);
|
||||
ms.pop();
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,169 @@
|
|||
package com.simibubi.create.content.logistics.item;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import com.simibubi.create.AllSoundEvents;
|
||||
import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.item.ItemEntity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.vector.Vector3d;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.server.ServerWorld;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.common.ForgeMod;
|
||||
import net.minecraftforge.fml.DistExecutor;
|
||||
|
||||
public class LecternControllerTileEntity extends SmartTileEntity {
|
||||
|
||||
private ItemStack controller;
|
||||
private UUID user;
|
||||
private UUID prevUser; // used only on client
|
||||
private boolean deactivatedThisTick; // used only on server
|
||||
|
||||
public LecternControllerTileEntity(TileEntityType<?> type) {
|
||||
super(type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addBehaviours(List<TileEntityBehaviour> behaviours) { }
|
||||
|
||||
@Override
|
||||
protected void write(CompoundNBT compound, boolean clientPacket) {
|
||||
super.write(compound, clientPacket);
|
||||
compound.put("Controller", controller.write(new CompoundNBT()));
|
||||
if (user != null)
|
||||
compound.putUniqueId("User", user);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void fromTag(BlockState state, CompoundNBT compound, boolean clientPacket) {
|
||||
super.fromTag(state, compound, clientPacket);
|
||||
controller = ItemStack.read(compound.getCompound("Controller"));
|
||||
user = compound.hasUniqueId("User") ? compound.getUniqueId("User") : null;
|
||||
}
|
||||
|
||||
public ItemStack getController() {
|
||||
return controller;
|
||||
}
|
||||
|
||||
public boolean hasUser() { return user != null; }
|
||||
|
||||
public boolean isUsedBy(PlayerEntity player) {
|
||||
return hasUser() && user.equals(player.getUniqueID());
|
||||
}
|
||||
|
||||
public void tryStartUsing(PlayerEntity player) {
|
||||
if (!deactivatedThisTick && !hasUser() && !playerIsUsingLectern(player) && playerInRange(player, world, pos))
|
||||
startUsing(player);
|
||||
}
|
||||
|
||||
public void tryStopUsing(PlayerEntity player) {
|
||||
if (isUsedBy(player))
|
||||
stopUsing(player);
|
||||
}
|
||||
|
||||
private void startUsing(PlayerEntity player) {
|
||||
user = player.getUniqueID();
|
||||
player.getPersistentData().putBoolean("IsUsingLecternController", true);
|
||||
sendData();
|
||||
}
|
||||
|
||||
private void stopUsing(PlayerEntity player) {
|
||||
user = null;
|
||||
if (player != null)
|
||||
player.getPersistentData().remove("IsUsingLecternController");
|
||||
deactivatedThisTick = true;
|
||||
sendData();
|
||||
}
|
||||
|
||||
public static boolean playerIsUsingLectern(PlayerEntity player) {
|
||||
return player.getPersistentData().contains("IsUsingLecternController");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
super.tick();
|
||||
|
||||
if (world.isRemote) {
|
||||
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> this::tryToggleActive);
|
||||
prevUser = user;
|
||||
}
|
||||
|
||||
if (!world.isRemote) {
|
||||
deactivatedThisTick = false;
|
||||
|
||||
if (!(world instanceof ServerWorld))
|
||||
return;
|
||||
if (user == null)
|
||||
return;
|
||||
|
||||
Entity entity = ((ServerWorld) world).getEntityByUuid(user);
|
||||
if (!(entity instanceof PlayerEntity)) {
|
||||
stopUsing(null);
|
||||
return;
|
||||
}
|
||||
|
||||
PlayerEntity player = (PlayerEntity) entity;
|
||||
if (!playerInRange(player, world, pos) || !playerIsUsingLectern(player))
|
||||
stopUsing(player);
|
||||
}
|
||||
}
|
||||
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
private void tryToggleActive() {
|
||||
if (user == null && Minecraft.getInstance().player.getUniqueID().equals(prevUser)) {
|
||||
LinkedControllerClientHandler.deactivateInLectern();
|
||||
} else if (prevUser == null && Minecraft.getInstance().player.getUniqueID().equals(user)) {
|
||||
LinkedControllerClientHandler.activateInLectern(pos);
|
||||
}
|
||||
}
|
||||
|
||||
public void setController(ItemStack newController) {
|
||||
controller = newController;
|
||||
if (newController != null) {
|
||||
AllSoundEvents.CONTROLLER_PUT.playOnServer(world, pos);
|
||||
}
|
||||
}
|
||||
|
||||
public void swapControllers(ItemStack stack, PlayerEntity player, Hand hand, BlockState state) {
|
||||
ItemStack newController = stack.copy();
|
||||
stack.setCount(0);
|
||||
if (player.getHeldItem(hand).isEmpty()) {
|
||||
player.setHeldItem(hand, controller);
|
||||
} else {
|
||||
dropController(state);
|
||||
}
|
||||
setController(newController);
|
||||
}
|
||||
|
||||
public void dropController(BlockState state) {
|
||||
Direction dir = state.get(LecternControllerBlock.FACING);
|
||||
double x = pos.getX() + 0.5 + 0.25*dir.getXOffset();
|
||||
double y = pos.getY() + 1;
|
||||
double z = pos.getZ() + 0.5 + 0.25*dir.getZOffset();
|
||||
ItemEntity itementity = new ItemEntity(world, x, y, z, controller.copy());
|
||||
itementity.setDefaultPickupDelay();
|
||||
world.addEntity(itementity);
|
||||
controller = null;
|
||||
}
|
||||
|
||||
public static boolean playerInRange(PlayerEntity player, World world, BlockPos pos) {
|
||||
//double modifier = world.isRemote ? 0 : 1.0;
|
||||
double reach = 0.4*player.getAttributeValue(ForgeMod.REACH_DISTANCE.get());// + modifier;
|
||||
return player.getDistanceSq(Vector3d.ofCenter(pos)) < reach*reach;
|
||||
}
|
||||
|
||||
}
|
|
@ -18,23 +18,26 @@ public class LinkedControllerBindPacket extends LinkedControllerPacketBase {
|
|||
private BlockPos linkLocation;
|
||||
|
||||
public LinkedControllerBindPacket(int button, BlockPos linkLocation) {
|
||||
super((BlockPos) null);
|
||||
this.button = button;
|
||||
this.linkLocation = linkLocation;
|
||||
}
|
||||
|
||||
public LinkedControllerBindPacket(PacketBuffer buffer) {
|
||||
super(buffer);
|
||||
this.button = buffer.readVarInt();
|
||||
this.linkLocation = buffer.readBlockPos();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(PacketBuffer buffer) {
|
||||
super.write(buffer);
|
||||
buffer.writeVarInt(button);
|
||||
buffer.writeBlockPos(linkLocation);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handle(ServerPlayerEntity player, ItemStack heldItem) {
|
||||
protected void handleItem(ServerPlayerEntity player, ItemStack heldItem) {
|
||||
if (player.isSpectator())
|
||||
return;
|
||||
|
||||
|
@ -42,7 +45,7 @@ public class LinkedControllerBindPacket extends LinkedControllerPacketBase {
|
|||
LinkBehaviour linkBehaviour = TileEntityBehaviour.get(player.world, linkLocation, LinkBehaviour.TYPE);
|
||||
if (linkBehaviour == null)
|
||||
return;
|
||||
|
||||
|
||||
Pair<Frequency, Frequency> pair = linkBehaviour.getNetworkKey();
|
||||
frequencyItems.setStackInSlot(button * 2, pair.getKey()
|
||||
.getStack()
|
||||
|
@ -51,8 +54,10 @@ public class LinkedControllerBindPacket extends LinkedControllerPacketBase {
|
|||
.getStack()
|
||||
.copy());
|
||||
|
||||
heldItem.getTag()
|
||||
.put("Items", frequencyItems.serializeNBT());
|
||||
heldItem.getTag().put("Items", frequencyItems.serializeNBT());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleLectern(ServerPlayerEntity player, LecternControllerTileEntity lectern) { }
|
||||
|
||||
}
|
||||
|
|
|
@ -41,6 +41,7 @@ public class LinkedControllerClientHandler {
|
|||
public static Mode MODE = Mode.IDLE;
|
||||
public static int PACKET_RATE = 5;
|
||||
public static Collection<Integer> currentlyPressed = new HashSet<>();
|
||||
private static BlockPos lecternPos;
|
||||
private static BlockPos selectedLocation = BlockPos.ZERO;
|
||||
private static Vector<KeyBinding> controls;
|
||||
|
||||
|
@ -71,19 +72,42 @@ public class LinkedControllerClientHandler {
|
|||
}
|
||||
|
||||
public static void toggle() {
|
||||
if (MODE == Mode.IDLE)
|
||||
if (MODE == Mode.IDLE) {
|
||||
MODE = Mode.ACTIVE;
|
||||
else {
|
||||
lecternPos = null;
|
||||
} else {
|
||||
MODE = Mode.IDLE;
|
||||
onReset();
|
||||
}
|
||||
}
|
||||
|
||||
public static void activateInLectern(BlockPos lecternAt) {
|
||||
if (MODE == Mode.IDLE) {
|
||||
MODE = Mode.ACTIVE;
|
||||
lecternPos = lecternAt;
|
||||
}
|
||||
}
|
||||
|
||||
public static void deactivateInLectern() {
|
||||
if (MODE == Mode.ACTIVE && inLectern()) {
|
||||
MODE = Mode.IDLE;
|
||||
onReset();
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean inLectern() {
|
||||
return lecternPos != null;
|
||||
}
|
||||
|
||||
protected static void onReset() {
|
||||
getControls().forEach(kb -> kb.setPressed(isActuallyPressed(kb)));
|
||||
packetCooldown = 0;
|
||||
selectedLocation = BlockPos.ZERO;
|
||||
|
||||
if (inLectern())
|
||||
AllPackets.channel.sendToServer(new LinkedControllerStopLecternPacket(lecternPos));
|
||||
lecternPos = null;
|
||||
|
||||
if (!currentlyPressed.isEmpty())
|
||||
AllPackets.channel.sendToServer(new LinkedControllerInputPacket(currentlyPressed, false));
|
||||
currentlyPressed.clear();
|
||||
|
@ -114,7 +138,7 @@ public class LinkedControllerClientHandler {
|
|||
return;
|
||||
}
|
||||
|
||||
if (!AllItems.LINKED_CONTROLLER.isIn(heldItem)) {
|
||||
if (!inLectern() && !AllItems.LINKED_CONTROLLER.isIn(heldItem)) {
|
||||
heldItem = player.getHeldItemOffhand();
|
||||
if (!AllItems.LINKED_CONTROLLER.isIn(heldItem)) {
|
||||
MODE = Mode.IDLE;
|
||||
|
@ -150,13 +174,13 @@ public class LinkedControllerClientHandler {
|
|||
if (MODE == Mode.ACTIVE) {
|
||||
// Released Keys
|
||||
if (!releasedKeys.isEmpty()) {
|
||||
AllPackets.channel.sendToServer(new LinkedControllerInputPacket(releasedKeys, false));
|
||||
AllPackets.channel.sendToServer(new LinkedControllerInputPacket(releasedKeys, false, lecternPos));
|
||||
AllSoundEvents.CONTROLLER_CLICK.playAt(player.world, player.getBlockPos(), 1f, .5f, true);
|
||||
}
|
||||
|
||||
// Newly Pressed Keys
|
||||
if (!newKeys.isEmpty()) {
|
||||
AllPackets.channel.sendToServer(new LinkedControllerInputPacket(newKeys, true));
|
||||
AllPackets.channel.sendToServer(new LinkedControllerInputPacket(newKeys, true, lecternPos));
|
||||
packetCooldown = PACKET_RATE;
|
||||
AllSoundEvents.CONTROLLER_CLICK.playAt(player.world, player.getBlockPos(), 1f, .75f, true);
|
||||
}
|
||||
|
|
|
@ -17,11 +17,17 @@ public class LinkedControllerInputPacket extends LinkedControllerPacketBase {
|
|||
private boolean press;
|
||||
|
||||
public LinkedControllerInputPacket(Collection<Integer> activatedButtons, boolean press) {
|
||||
this(activatedButtons, press, null);
|
||||
}
|
||||
|
||||
public LinkedControllerInputPacket(Collection<Integer> activatedButtons, boolean press, BlockPos lecternPos) {
|
||||
super(lecternPos);
|
||||
this.activatedButtons = activatedButtons;
|
||||
this.press = press;
|
||||
}
|
||||
|
||||
public LinkedControllerInputPacket(PacketBuffer buffer) {
|
||||
super(buffer);
|
||||
activatedButtons = new ArrayList<>();
|
||||
press = buffer.readBoolean();
|
||||
int size = buffer.readVarInt();
|
||||
|
@ -31,13 +37,20 @@ public class LinkedControllerInputPacket extends LinkedControllerPacketBase {
|
|||
|
||||
@Override
|
||||
public void write(PacketBuffer buffer) {
|
||||
super.write(buffer);
|
||||
buffer.writeBoolean(press);
|
||||
buffer.writeVarInt(activatedButtons.size());
|
||||
activatedButtons.forEach(buffer::writeVarInt);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handle(ServerPlayerEntity player, ItemStack heldItem) {
|
||||
protected void handleLectern(ServerPlayerEntity player, LecternControllerTileEntity lectern) {
|
||||
if (lectern.isUsedBy(player))
|
||||
handleItem(player, lectern.getController());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleItem(ServerPlayerEntity player, ItemStack heldItem) {
|
||||
World world = player.getEntityWorld();
|
||||
UUID uniqueID = player.getUniqueID();
|
||||
BlockPos pos = player.getBlockPos();
|
||||
|
|
|
@ -6,6 +6,9 @@ import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler;
|
|||
import com.simibubi.create.content.logistics.RedstoneLinkNetworkHandler.Frequency;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.block.LecternBlock;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
|
@ -35,19 +38,39 @@ public class LinkedControllerItem extends Item implements INamedContainerProvide
|
|||
}
|
||||
|
||||
@Override
|
||||
public ActionResultType onItemUse(ItemUseContext ctx) {
|
||||
public ActionResultType onItemUseFirst(ItemStack stack, ItemUseContext ctx) {
|
||||
PlayerEntity player = ctx.getPlayer();
|
||||
if (player == null)
|
||||
return ActionResultType.PASS;
|
||||
World world = ctx.getWorld();
|
||||
BlockPos pos = ctx.getPos();
|
||||
BlockState hitState = world.getBlockState(pos);
|
||||
|
||||
if (!player.isSneaking() && player.isAllowEdit()
|
||||
&& AllBlocks.REDSTONE_LINK.has(world.getBlockState(ctx.getPos()))) {
|
||||
if (world.isRemote)
|
||||
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> this.toggleBindMode(ctx.getPos()));
|
||||
player.getCooldownTracker()
|
||||
.setCooldown(this, 2);
|
||||
return ActionResultType.SUCCESS;
|
||||
if (player.isAllowEdit()) {
|
||||
if (player.isSneaking()) {
|
||||
if (AllBlocks.LECTERN_CONTROLLER.has(hitState)) {
|
||||
if (!world.isRemote)
|
||||
AllBlocks.LECTERN_CONTROLLER.get().withTileEntityDo(world, pos, te ->
|
||||
te.swapControllers(stack, player, ctx.getHand(), hitState));
|
||||
return ActionResultType.SUCCESS;
|
||||
}
|
||||
} else {
|
||||
if (AllBlocks.REDSTONE_LINK.has(hitState)) {
|
||||
if (world.isRemote)
|
||||
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> this.toggleBindMode(ctx.getPos()));
|
||||
player.getCooldownTracker()
|
||||
.setCooldown(this, 2);
|
||||
return ActionResultType.SUCCESS;
|
||||
}
|
||||
|
||||
if (hitState.isIn(Blocks.LECTERN) && !hitState.get(LecternBlock.HAS_BOOK)) {
|
||||
if (!world.isRemote) {
|
||||
ItemStack lecternStack = player.isCreative() ? stack.copy() : stack.split(1);
|
||||
AllBlocks.LECTERN_CONTROLLER.get().replaceLectern(hitState, world, pos, lecternStack);
|
||||
}
|
||||
return ActionResultType.SUCCESS;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return onItemRightClick(world, player, ctx.getHand()).getType();
|
||||
|
@ -70,6 +93,7 @@ public class LinkedControllerItem extends Item implements INamedContainerProvide
|
|||
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> this::toggleActive);
|
||||
player.getCooldownTracker()
|
||||
.setCooldown(this, 2);
|
||||
return ActionResult.success(heldItem);
|
||||
}
|
||||
|
||||
return ActionResult.pass(heldItem);
|
||||
|
|
|
@ -54,6 +54,14 @@ public class LinkedControllerItemRenderer extends CustomRenderedItemModelRendere
|
|||
protected void render(ItemStack stack, LinkedControllerModel model, PartialItemModelRenderer renderer,
|
||||
ItemCameraTransforms.TransformType transformType, MatrixStack ms, IRenderTypeBuffer buffer, int light,
|
||||
int overlay) {
|
||||
|
||||
renderLinkedController(stack, model, renderer, transformType, ms, light, null, null);
|
||||
}
|
||||
|
||||
public static void renderLinkedController(ItemStack stack, LinkedControllerModel model,
|
||||
PartialItemModelRenderer renderer, ItemCameraTransforms.TransformType transformType, MatrixStack ms,
|
||||
int light, Boolean active, Boolean usedByMe) {
|
||||
|
||||
float pt = AnimationTickHolder.getPartialTicks();
|
||||
MatrixStacker msr = MatrixStacker.of(ms);
|
||||
|
||||
|
@ -62,33 +70,37 @@ public class LinkedControllerItemRenderer extends CustomRenderedItemModelRendere
|
|||
Minecraft mc = Minecraft.getInstance();
|
||||
boolean rightHanded = mc.gameSettings.mainHand == HandSide.RIGHT;
|
||||
TransformType mainHand =
|
||||
rightHanded ? TransformType.FIRST_PERSON_RIGHT_HAND : TransformType.FIRST_PERSON_LEFT_HAND;
|
||||
rightHanded ? TransformType.FIRST_PERSON_RIGHT_HAND : TransformType.FIRST_PERSON_LEFT_HAND;
|
||||
TransformType offHand =
|
||||
rightHanded ? TransformType.FIRST_PERSON_LEFT_HAND : TransformType.FIRST_PERSON_RIGHT_HAND;
|
||||
rightHanded ? TransformType.FIRST_PERSON_LEFT_HAND : TransformType.FIRST_PERSON_RIGHT_HAND;
|
||||
|
||||
boolean active = false;
|
||||
boolean noControllerInMain = !AllItems.LINKED_CONTROLLER.isIn(mc.player.getHeldItemMainhand());
|
||||
if (active == null) {
|
||||
active = false;
|
||||
|
||||
if (transformType == mainHand || (transformType == offHand && noControllerInMain)) {
|
||||
float equip = equipProgress.getValue(pt);
|
||||
int handModifier = transformType == TransformType.FIRST_PERSON_LEFT_HAND ? -1 : 1;
|
||||
msr.translate(0, equip / 4, equip / 4 * handModifier);
|
||||
msr.rotateY(equip * -30 * handModifier);
|
||||
msr.rotateZ(equip * -30);
|
||||
active = true;
|
||||
boolean noControllerInMain = !AllItems.LINKED_CONTROLLER.isIn(mc.player.getHeldItemMainhand());
|
||||
if (transformType == mainHand || (transformType == offHand && noControllerInMain)) {
|
||||
float equip = equipProgress.getValue(pt);
|
||||
int handModifier = transformType == TransformType.FIRST_PERSON_LEFT_HAND ? -1 : 1;
|
||||
msr.translate(0, equip / 4, equip / 4 * handModifier);
|
||||
msr.rotateY(equip * -30 * handModifier);
|
||||
msr.rotateZ(equip * -30);
|
||||
active = true;
|
||||
}
|
||||
|
||||
if (transformType == TransformType.GUI) {
|
||||
if (stack == mc.player.getHeldItemMainhand())
|
||||
active = true;
|
||||
if (stack == mc.player.getHeldItemOffhand() && noControllerInMain)
|
||||
active = true;
|
||||
}
|
||||
|
||||
active &= LinkedControllerClientHandler.MODE != Mode.IDLE;
|
||||
usedByMe = active;
|
||||
}
|
||||
|
||||
if (transformType == TransformType.GUI) {
|
||||
if (stack == mc.player.getHeldItemMainhand())
|
||||
active = true;
|
||||
if (stack == mc.player.getHeldItemOffhand() && noControllerInMain)
|
||||
active = true;
|
||||
}
|
||||
|
||||
active &= LinkedControllerClientHandler.MODE != Mode.IDLE;
|
||||
renderer.render(active ? model.getPartial("powered") : model.getOriginalModel(), light);
|
||||
|
||||
if (!active) {
|
||||
if (!usedByMe) {
|
||||
ms.pop();
|
||||
return;
|
||||
}
|
||||
|
@ -122,7 +134,7 @@ public class LinkedControllerItemRenderer extends CustomRenderedItemModelRendere
|
|||
ms.pop();
|
||||
}
|
||||
|
||||
protected void button(PartialItemModelRenderer renderer, MatrixStack ms, int light, float pt, IBakedModel button,
|
||||
protected static void button(PartialItemModelRenderer renderer, MatrixStack ms, int light, float pt, IBakedModel button,
|
||||
float b, int index) {
|
||||
ms.push();
|
||||
ms.translate(0, b * buttons.get(index)
|
||||
|
|
|
@ -7,31 +7,66 @@ import com.simibubi.create.foundation.networking.SimplePacketBase;
|
|||
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.fml.network.NetworkEvent.Context;
|
||||
|
||||
public abstract class LinkedControllerPacketBase extends SimplePacketBase {
|
||||
|
||||
@Override
|
||||
public void handle(Supplier<Context> context) {
|
||||
context.get()
|
||||
.enqueueWork(() -> {
|
||||
ServerPlayerEntity player = context.get()
|
||||
.getSender();
|
||||
if (player == null)
|
||||
return;
|
||||
private BlockPos lecternPos;
|
||||
|
||||
ItemStack heldItem = player.getHeldItemMainhand();
|
||||
if (!AllItems.LINKED_CONTROLLER.isIn(heldItem)) {
|
||||
heldItem = player.getHeldItemOffhand();
|
||||
if (!AllItems.LINKED_CONTROLLER.isIn(heldItem))
|
||||
return;
|
||||
}
|
||||
handle(player, heldItem);
|
||||
});
|
||||
context.get()
|
||||
.setPacketHandled(true);
|
||||
public LinkedControllerPacketBase(BlockPos lecternPos) {
|
||||
this.lecternPos = lecternPos;
|
||||
}
|
||||
|
||||
protected abstract void handle(ServerPlayerEntity player, ItemStack heldItem);
|
||||
public LinkedControllerPacketBase(PacketBuffer buffer) {
|
||||
if (buffer.readBoolean()) {
|
||||
lecternPos = new BlockPos(buffer.readInt(), buffer.readInt(), buffer.readInt());
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean inLectern() {
|
||||
return lecternPos != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(PacketBuffer buffer) {
|
||||
buffer.writeBoolean(inLectern());
|
||||
if (inLectern()) {
|
||||
buffer.writeInt(lecternPos.getX());
|
||||
buffer.writeInt(lecternPos.getY());
|
||||
buffer.writeInt(lecternPos.getZ());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(Supplier<Context> context) {
|
||||
context.get().enqueueWork(() -> {
|
||||
ServerPlayerEntity player = context.get().getSender();
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
if (inLectern()) {
|
||||
TileEntity te = player.world.getTileEntity(lecternPos);
|
||||
if (!(te instanceof LecternControllerTileEntity))
|
||||
return;
|
||||
handleLectern(player, (LecternControllerTileEntity) te);
|
||||
} else {
|
||||
ItemStack controller = player.getHeldItemMainhand();
|
||||
if (!AllItems.LINKED_CONTROLLER.isIn(controller)) {
|
||||
controller = player.getHeldItemOffhand();
|
||||
if (!AllItems.LINKED_CONTROLLER.isIn(controller))
|
||||
return;
|
||||
}
|
||||
handleItem(player, controller);
|
||||
}
|
||||
});
|
||||
|
||||
context.get().setPacketHandled(true);
|
||||
}
|
||||
|
||||
protected abstract void handleItem(ServerPlayerEntity player, ItemStack heldItem);
|
||||
protected abstract void handleLectern(ServerPlayerEntity player, LecternControllerTileEntity lectern);
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
package com.simibubi.create.content.logistics.item;
|
||||
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
||||
public class LinkedControllerStopLecternPacket extends LinkedControllerPacketBase {
|
||||
|
||||
public LinkedControllerStopLecternPacket(PacketBuffer buffer) {
|
||||
super(buffer);
|
||||
}
|
||||
|
||||
public LinkedControllerStopLecternPacket(BlockPos lecternPos) {
|
||||
super(lecternPos);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleLectern(ServerPlayerEntity player, LecternControllerTileEntity lectern) {
|
||||
lectern.tryStopUsing(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void handleItem(ServerPlayerEntity player, ItemStack heldItem) { }
|
||||
|
||||
}
|
|
@ -1,11 +1,13 @@
|
|||
package com.simibubi.create.events;
|
||||
|
||||
import com.simibubi.create.CreateClient;
|
||||
import com.simibubi.create.content.logistics.item.LinkedControllerClientHandler;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.filtering.FilteringHandler;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.ScrollValueHandler;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.client.event.InputEvent.ClickInputEvent;
|
||||
import net.minecraftforge.client.event.InputEvent.KeyInputEvent;
|
||||
import net.minecraftforge.client.event.InputEvent.MouseInputEvent;
|
||||
import net.minecraftforge.client.event.InputEvent.MouseScrollEvent;
|
||||
|
@ -51,4 +53,13 @@ public class InputEvents {
|
|||
CreateClient.SCHEMATIC_AND_QUILL_HANDLER.onMouseInput(button, pressed);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onClickInput(ClickInputEvent event) {
|
||||
if (Minecraft.getInstance().currentScreen != null)
|
||||
return;
|
||||
|
||||
if (event.isUseItem())
|
||||
LinkedControllerClientHandler.deactivateInLectern();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ import com.simibubi.create.content.logistics.block.depot.EjectorTriggerPacket;
|
|||
import com.simibubi.create.content.logistics.block.mechanicalArm.ArmPlacementPacket;
|
||||
import com.simibubi.create.content.logistics.item.LinkedControllerBindPacket;
|
||||
import com.simibubi.create.content.logistics.item.LinkedControllerInputPacket;
|
||||
import com.simibubi.create.content.logistics.item.LinkedControllerStopLecternPacket;
|
||||
import com.simibubi.create.content.logistics.item.filter.FilterScreenPacket;
|
||||
import com.simibubi.create.content.logistics.packet.ConfigureFlexcratePacket;
|
||||
import com.simibubi.create.content.logistics.packet.ConfigureStockswitchPacket;
|
||||
|
@ -93,6 +94,7 @@ public enum AllPackets {
|
|||
EJECTOR_ELYTRA(EjectorElytraPacket.class, EjectorElytraPacket::new, PLAY_TO_SERVER),
|
||||
LINKED_CONTROLLER_INPUT(LinkedControllerInputPacket.class, LinkedControllerInputPacket::new, PLAY_TO_SERVER),
|
||||
LINKED_CONTROLLER_BIND(LinkedControllerBindPacket.class, LinkedControllerBindPacket::new, PLAY_TO_SERVER),
|
||||
LINKED_CONTROLLER_USE_LECTERN(LinkedControllerStopLecternPacket.class, LinkedControllerStopLecternPacket::new, PLAY_TO_SERVER),
|
||||
C_CONFIGURE_CONFIG(CConfigureConfigPacket.class, CConfigureConfigPacket::new, PLAY_TO_SERVER),
|
||||
SUBMIT_GHOST_ITEM(GhostItemSubmitPacket.class, GhostItemSubmitPacket::new, PLAY_TO_SERVER),
|
||||
BLUEPRINT_COMPLETE_RECIPE(BlueprintAssignCompleteRecipePacket.class, BlueprintAssignCompleteRecipePacket::new, PLAY_TO_SERVER),
|
||||
|
@ -126,7 +128,7 @@ public enum AllPackets {
|
|||
|
||||
private LoadedPacket<?> packet;
|
||||
|
||||
private <T extends SimplePacketBase> AllPackets(Class<T> type, Function<PacketBuffer, T> factory,
|
||||
<T extends SimplePacketBase> AllPackets(Class<T> type, Function<PacketBuffer, T> factory,
|
||||
NetworkDirection direction) {
|
||||
packet = new LoadedPacket<>(type, factory, direction);
|
||||
}
|
||||
|
|
|
@ -185,6 +185,8 @@
|
|||
"item.create.linked_controller.tooltip.behaviour2": "Opens the manual _Configuration Interface_.",
|
||||
"item.create.linked_controller.tooltip.condition3": "R-Click on Redstone Link Receiver",
|
||||
"item.create.linked_controller.tooltip.behaviour3": "Enables _Bind Mode_, press one of the _six controls_ to bind it to the _Links' Frequency_.",
|
||||
"item.create.linked_controller.tooltip.condition4": "R-Click on Lectern",
|
||||
"item.create.linked_controller.tooltip.behaviour4": "Places the Controller into the Lectern for easy activation. (R-Click while Sneaking to retrieve it)",
|
||||
|
||||
"item.create.diving_helmet.tooltip": "DIVING HELMET",
|
||||
"item.create.diving_helmet.tooltip.summary": "Together with a _Copper_ _Backtank_, allows the wielder to _breathe_ _underwater_ for an extended amount of time.",
|
||||
|
|
Loading…
Reference in a new issue