mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-11-14 05:52:41 +01:00
Merge branch 'mc1.15/dev' of https://github.com/Creators-of-Create/Create into mc1.15/dev
This commit is contained in:
commit
b76782364d
33 changed files with 867 additions and 591 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -40,4 +40,3 @@ local.properties
|
|||
|
||||
# PDT-specific
|
||||
.buildpath
|
||||
src/generated/resources/.cache/cache
|
||||
|
|
|
@ -404,7 +404,7 @@ e3f618c5b622d21880de858678d1802cbf65e615 assets/create/lang/en_ud.json
|
|||
acc852d80378b426d7ee6cb59c169e06b6d63b25 assets/create/lang/en_us.json
|
||||
30ce93c56557cea2f384a47b549fb893700523a5 assets/create/lang/unfinished/de_de.json
|
||||
77b8310f3cbed36fa0d2ee29e65ac6aee0c2adc2 assets/create/lang/unfinished/es_mx.json
|
||||
b8e44c8c33b3c36b850f579e317103eb57f85f07 assets/create/lang/unfinished/fr_fr.json
|
||||
8db9f9147dcef8c8182c548a524f96f578c116ec assets/create/lang/unfinished/fr_fr.json
|
||||
89f7029d73733938ee9f900fc36d52ab7fc97563 assets/create/lang/unfinished/it_it.json
|
||||
b1935e7f8d79d1112e1685adb42daedb976ac6d7 assets/create/lang/unfinished/ja_jp.json
|
||||
23aaf879d07a24775aeba3b98c355c992b24f28b assets/create/lang/unfinished/ko_kr.json
|
||||
|
@ -3539,7 +3539,7 @@ d3fdb8ece6cb072a93ddb64a0baad5ac952117a4 data/create/recipes/weathered_limestone
|
|||
eedf31af7134d03656c5fa57229982f9c5bed07c data/create/tags/blocks/brittle.json
|
||||
13b55d6e905a02403d2e95e9ba2357f99c5f2241 data/create/tags/blocks/fan_heaters.json
|
||||
3bc64e3a1e7980237435b1770a9ba2102d57fcd4 data/create/tags/blocks/fan_transparent.json
|
||||
745a82505a68a6482407d87374e356781406ab46 data/create/tags/blocks/safe_nbt.json
|
||||
c81ea194e808985847159b201140d4aa4cbcca65 data/create/tags/blocks/safe_nbt.json
|
||||
c9ac7e3e5ec18554e7184168d65e9b8e44ef5610 data/create/tags/blocks/sails.json
|
||||
6cdeeac1689f7b5bfd9bc40b462143d8eaf3ad0b data/create/tags/blocks/seats.json
|
||||
50936b211d94167a35ec78c89954082a336b6269 data/create/tags/blocks/valve_handles.json
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_": "Missing Localizations: 730",
|
||||
"_": "Missing Localizations: 666",
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
|
@ -10,83 +10,83 @@
|
|||
"block.create.adjustable_pulse_repeater": "Répéteur d'impulsions réglable",
|
||||
"block.create.adjustable_repeater": "Répéteur réglable",
|
||||
"block.create.analog_lever": "Levier analogique",
|
||||
"block.create.andesite_belt_funnel": "UNLOCALIZED: Andesite Belt Funnel",
|
||||
"block.create.andesite_belt_funnel": "Entonnoir en andésite pour tapis roulant",
|
||||
"block.create.andesite_bricks": "Briques d'andésite",
|
||||
"block.create.andesite_bricks_slab": "Dalle en briques d'andésite",
|
||||
"block.create.andesite_bricks_stairs": "Escalier en briques d'andésite",
|
||||
"block.create.andesite_bricks_wall": "Mur en briques d'andésite",
|
||||
"block.create.andesite_casing": "Boîtier en andésite",
|
||||
"block.create.andesite_casing": "Revêtement en andésite",
|
||||
"block.create.andesite_cobblestone": "Pierres d'andésite",
|
||||
"block.create.andesite_cobblestone_slab": "Dalles en pierres d'andésite",
|
||||
"block.create.andesite_cobblestone_stairs": "Escaliers en pierres d'andésite",
|
||||
"block.create.andesite_cobblestone_wall": "Mur en pierres d'andésite",
|
||||
"block.create.andesite_encased_shaft": "Arbre mécanique dans un revêtement en andésite",
|
||||
"block.create.andesite_encased_shaft": "Rotor dans un revêtement en andésite",
|
||||
"block.create.andesite_funnel": "Entonnoir en andésite",
|
||||
"block.create.andesite_pillar": "Pilier en andésite",
|
||||
"block.create.andesite_tunnel": "Tunnel en andésite",
|
||||
"block.create.basin": "Bassin",
|
||||
"block.create.belt": "Tapis roulant",
|
||||
"block.create.birch_window": "Fenêtre en bouleau",
|
||||
"block.create.birch_window_pane": "UNLOCALIZED: Birch Window Pane",
|
||||
"block.create.black_sail": "UNLOCALIZED: Black Sail",
|
||||
"block.create.black_seat": "UNLOCALIZED: Black Seat",
|
||||
"block.create.black_valve_handle": "UNLOCALIZED: Black Valve Handle",
|
||||
"block.create.blaze_burner": "UNLOCALIZED: Blaze Burner",
|
||||
"block.create.blue_sail": "UNLOCALIZED: Blue Sail",
|
||||
"block.create.blue_seat": "UNLOCALIZED: Blue Seat",
|
||||
"block.create.blue_valve_handle": "UNLOCALIZED: Blue Valve Handle",
|
||||
"block.create.brass_belt_funnel": "UNLOCALIZED: Brass Belt Funnel",
|
||||
"block.create.brass_block": "UNLOCALIZED: Brass Block",
|
||||
"block.create.brass_casing": "Boîtier en laiton",
|
||||
"block.create.brass_encased_shaft": "UNLOCALIZED: Brass Encased Shaft",
|
||||
"block.create.brass_funnel": "UNLOCALIZED: Brass Funnel",
|
||||
"block.create.brass_tunnel": "UNLOCALIZED: Brass Tunnel",
|
||||
"block.create.brown_sail": "UNLOCALIZED: Brown Sail",
|
||||
"block.create.brown_seat": "UNLOCALIZED: Brown Seat",
|
||||
"block.create.brown_valve_handle": "UNLOCALIZED: Brown Valve Handle",
|
||||
"block.create.birch_window_pane": "Vitre en bouleau",
|
||||
"block.create.black_sail": "Voile noire",
|
||||
"block.create.black_seat": "Siège noir",
|
||||
"block.create.black_valve_handle": "Vanne noire",
|
||||
"block.create.blaze_burner": "Brûleur à blaze",
|
||||
"block.create.blue_sail": "Voile bleue",
|
||||
"block.create.blue_seat": "Siège bleu",
|
||||
"block.create.blue_valve_handle": "Vanne bleue",
|
||||
"block.create.brass_belt_funnel": "Entonnoir en laiton pour tapis roulant",
|
||||
"block.create.brass_block": "Bloc de laiton",
|
||||
"block.create.brass_casing": "Revêtement en laiton",
|
||||
"block.create.brass_encased_shaft": "Rotor dans un revêtement en laiton",
|
||||
"block.create.brass_funnel": "Entonnoir en laiton",
|
||||
"block.create.brass_tunnel": "Tunnel en laiton",
|
||||
"block.create.brown_sail": "Voile brune",
|
||||
"block.create.brown_seat": "Siège brun",
|
||||
"block.create.brown_valve_handle": "Vanne brune",
|
||||
"block.create.cart_assembler": "Assembleur de wagon",
|
||||
"block.create.chiseled_dark_scoria": "UNLOCALIZED: Chiseled Dark Scoria",
|
||||
"block.create.chiseled_dolomite": "UNLOCALIZED: Chiseled Dolomite",
|
||||
"block.create.chiseled_gabbro": "UNLOCALIZED: Chiseled Gabbro",
|
||||
"block.create.chiseled_limestone": "UNLOCALIZED: Chiseled Limestone",
|
||||
"block.create.chiseled_scoria": "UNLOCALIZED: Chiseled Scoria",
|
||||
"block.create.chiseled_weathered_limestone": "UNLOCALIZED: Chiseled Weathered Limestone",
|
||||
"block.create.chocolate": "UNLOCALIZED: Chocolate",
|
||||
"block.create.chute": "UNLOCALIZED: Chute",
|
||||
"block.create.chiseled_dark_scoria": "Scoria sombre taillé",
|
||||
"block.create.chiseled_dolomite": "Dolomite taillée",
|
||||
"block.create.chiseled_gabbro": "Gabbro taillé",
|
||||
"block.create.chiseled_limestone": "Calcaire taillé",
|
||||
"block.create.chiseled_scoria": "Scoria taillé",
|
||||
"block.create.chiseled_weathered_limestone": "Calcaire altéré taillé",
|
||||
"block.create.chocolate": "Chocolat",
|
||||
"block.create.chute": "Glissière",
|
||||
"block.create.clockwork_bearing": "Roulement mécanique horloger",
|
||||
"block.create.clutch": "Embrayage",
|
||||
"block.create.cogwheel": "Roue dentée",
|
||||
"block.create.content_observer": "UNLOCALIZED: Content Observer",
|
||||
"block.create.controller_rail": "UNLOCALIZED: Controller Rail",
|
||||
"block.create.content_observer": "Observateur de contenu",
|
||||
"block.create.controller_rail": "Rails controlleurs",
|
||||
"block.create.copper_block": "Bloc de cuivre",
|
||||
"block.create.copper_casing": "Boîtier en cuivre",
|
||||
"block.create.copper_casing": "Revêtement en cuivre",
|
||||
"block.create.copper_ore": "Minerai de cuivre",
|
||||
"block.create.copper_shingles": "Bardeaux de cuivre",
|
||||
"block.create.copper_tiles": "UNLOCALIZED: Copper Tiles",
|
||||
"block.create.copper_valve_handle": "UNLOCALIZED: Copper Valve Handle",
|
||||
"block.create.copper_tiles": "Tuiles en cuivre",
|
||||
"block.create.copper_valve_handle": "Vanne en cuivre",
|
||||
"block.create.creative_crate": "Créateur de schémacanon",
|
||||
"block.create.creative_fluid_tank": "UNLOCALIZED: Creative Fluid Tank",
|
||||
"block.create.creative_fluid_tank": "Réservoir créatif",
|
||||
"block.create.creative_motor": "Moteur",
|
||||
"block.create.crushing_wheel": "Roue de concassage",
|
||||
"block.create.crushing_wheel_controller": "UNLOCALIZED: Crushing Wheel Controller",
|
||||
"block.create.crushing_wheel_controller": "Contrôleur de roue de concassage",
|
||||
"block.create.cuckoo_clock": "Horloge à coucou",
|
||||
"block.create.cyan_sail": "UNLOCALIZED: Cyan Sail",
|
||||
"block.create.cyan_seat": "UNLOCALIZED: Cyan Seat",
|
||||
"block.create.cyan_valve_handle": "UNLOCALIZED: Cyan Valve Handle",
|
||||
"block.create.dark_oak_window": "UNLOCALIZED: Dark Oak Window",
|
||||
"block.create.dark_oak_window_pane": "UNLOCALIZED: Dark Oak Window Pane",
|
||||
"block.create.cyan_sail": "Voile cyan",
|
||||
"block.create.cyan_seat": "Siège cyan",
|
||||
"block.create.cyan_valve_handle": "Vanne cyan",
|
||||
"block.create.dark_oak_window": "fenêtre en chêne sombre",
|
||||
"block.create.dark_oak_window_pane": "Vitre en chêne sombre",
|
||||
"block.create.dark_scoria": "Scorie sombre",
|
||||
"block.create.dark_scoria_bricks": "Briques de scorie sombre",
|
||||
"block.create.dark_scoria_bricks_slab": "Dalles de briques de scorie sombre",
|
||||
"block.create.dark_scoria_bricks_stairs": "Escaliers de briques de scorie sombre",
|
||||
"block.create.dark_scoria_bricks_wall": "Muret de briques de scorie sombre",
|
||||
"block.create.dark_scoria_cobblestone": "UNLOCALIZED: Dark Scoria Cobblestone",
|
||||
"block.create.dark_scoria_cobblestone": "Pierres de scorie sombre",
|
||||
"block.create.dark_scoria_cobblestone_slab": "UNLOCALIZED: Dark Scoria Cobblestone Slab",
|
||||
"block.create.dark_scoria_cobblestone_stairs": "UNLOCALIZED: Dark Scoria Cobblestone Stairs",
|
||||
"block.create.dark_scoria_cobblestone_wall": "UNLOCALIZED: Dark Scoria Cobblestone Wall",
|
||||
"block.create.dark_scoria_pillar": "UNLOCALIZED: Dark Scoria Pillar",
|
||||
"block.create.deployer": "Déployeur",
|
||||
"block.create.depot": "UNLOCALIZED: Depot",
|
||||
"block.create.depot": "Dépot",
|
||||
"block.create.diorite_bricks": "Briques de diorite",
|
||||
"block.create.diorite_bricks_slab": "UNLOCALIZED: Diorite Bricks Slab",
|
||||
"block.create.diorite_bricks_stairs": "UNLOCALIZED: Diorite Bricks Stairs",
|
||||
|
@ -96,18 +96,18 @@
|
|||
"block.create.diorite_cobblestone_stairs": "UNLOCALIZED: Diorite Cobblestone Stairs",
|
||||
"block.create.diorite_cobblestone_wall": "UNLOCALIZED: Diorite Cobblestone Wall",
|
||||
"block.create.diorite_pillar": "UNLOCALIZED: Diorite Pillar",
|
||||
"block.create.dolomite": "Dolomie",
|
||||
"block.create.dolomite_bricks": "Briques de dolomie",
|
||||
"block.create.dolomite_bricks_slab": "Dalle de briques de dolomie",
|
||||
"block.create.dolomite_bricks_stairs": "Escaliers de briques de dolomie",
|
||||
"block.create.dolomite_bricks_wall": "Muret de briques de dolomie",
|
||||
"block.create.dolomite": "Dolomite",
|
||||
"block.create.dolomite_bricks": "Briques de dolomite",
|
||||
"block.create.dolomite_bricks_slab": "Dalle de briques de dolomite",
|
||||
"block.create.dolomite_bricks_stairs": "Escaliers de briques de dolomite",
|
||||
"block.create.dolomite_bricks_wall": "Muret de briques de dolomite",
|
||||
"block.create.dolomite_cobblestone": "UNLOCALIZED: Dolomite Cobblestone",
|
||||
"block.create.dolomite_cobblestone_slab": "UNLOCALIZED: Dolomite Cobblestone Slab",
|
||||
"block.create.dolomite_cobblestone_stairs": "UNLOCALIZED: Dolomite Cobblestone Stairs",
|
||||
"block.create.dolomite_cobblestone_wall": "UNLOCALIZED: Dolomite Cobblestone Wall",
|
||||
"block.create.dolomite_pillar": "Pillier de dolomie",
|
||||
"block.create.encased_chain_drive": "UNLOCALIZED: Encased Chain Drive",
|
||||
"block.create.encased_fan": "Ventilateur enfermé",
|
||||
"block.create.dolomite_pillar": "Pillier de dolomite",
|
||||
"block.create.encased_chain_drive": "Chaine de transmission",
|
||||
"block.create.encased_fan": "Ventilateur enchâssé",
|
||||
"block.create.encased_fluid_pipe": "UNLOCALIZED: Encased Fluid Pipe",
|
||||
"block.create.fancy_andesite_bricks": "UNLOCALIZED: Fancy Andesite Bricks",
|
||||
"block.create.fancy_andesite_bricks_slab": "UNLOCALIZED: Fancy Andesite Bricks Slab",
|
||||
|
@ -308,12 +308,12 @@
|
|||
"block.create.pink_sail": "UNLOCALIZED: Pink Sail",
|
||||
"block.create.pink_seat": "UNLOCALIZED: Pink Seat",
|
||||
"block.create.pink_valve_handle": "UNLOCALIZED: Pink Valve Handle",
|
||||
"block.create.piston_extension_pole": "Pôle d'extension de piston",
|
||||
"block.create.piston_extension_pole": "Barre d'extension de piston",
|
||||
"block.create.polished_dark_scoria": "Scorie sombre polie",
|
||||
"block.create.polished_dark_scoria_slab": "UNLOCALIZED: Polished Dark Scoria Slab",
|
||||
"block.create.polished_dark_scoria_stairs": "UNLOCALIZED: Polished Dark Scoria Stairs",
|
||||
"block.create.polished_dark_scoria_wall": "UNLOCALIZED: Polished Dark Scoria Wall",
|
||||
"block.create.polished_dolomite": "Dolomie polie",
|
||||
"block.create.polished_dolomite": "Dolomite polie",
|
||||
"block.create.polished_dolomite_slab": "UNLOCALIZED: Polished Dolomite Slab",
|
||||
"block.create.polished_dolomite_stairs": "UNLOCALIZED: Polished Dolomite Stairs",
|
||||
"block.create.polished_dolomite_wall": "UNLOCALIZED: Polished Dolomite Wall",
|
||||
|
@ -329,8 +329,8 @@
|
|||
"block.create.polished_scoria_slab": "Dalle de scorie polie",
|
||||
"block.create.polished_scoria_stairs": "UNLOCALIZED: Polished Scoria Stairs",
|
||||
"block.create.polished_scoria_wall": "UNLOCALIZED: Polished Scoria Wall",
|
||||
"block.create.polished_weathered_limestone": "Calcaire patinées polies",
|
||||
"block.create.polished_weathered_limestone_slab": "Dalle de calcaire patinées",
|
||||
"block.create.polished_weathered_limestone": "Calcaire altéré polies",
|
||||
"block.create.polished_weathered_limestone_slab": "Dalle de calcaire altéré",
|
||||
"block.create.polished_weathered_limestone_stairs": "UNLOCALIZED: Polished Weathered Limestone Stairs",
|
||||
"block.create.polished_weathered_limestone_wall": "UNLOCALIZED: Polished Weathered Limestone Wall",
|
||||
"block.create.portable_fluid_interface": "UNLOCALIZED: Portable Fluid Interface",
|
||||
|
@ -346,7 +346,7 @@
|
|||
"block.create.red_sail": "UNLOCALIZED: Red Sail",
|
||||
"block.create.red_seat": "UNLOCALIZED: Red Seat",
|
||||
"block.create.red_valve_handle": "UNLOCALIZED: Red Valve Handle",
|
||||
"block.create.redstone_contact": "redstone_contact Redstone",
|
||||
"block.create.redstone_contact": "Contact de redstone",
|
||||
"block.create.redstone_link": "Liaison Redstone",
|
||||
"block.create.refined_radiance_casing": "UNLOCALIZED: Radiant Casing",
|
||||
"block.create.reinforced_rail": "UNLOCALIZED: Reinforced Rail",
|
||||
|
@ -369,7 +369,7 @@
|
|||
"block.create.secondary_linear_chassis": "UNLOCALIZED: Secondary Linear Chassis",
|
||||
"block.create.sequenced_gearshift": "Décaleur de rotation séquencé",
|
||||
"block.create.shadow_steel_casing": "UNLOCALIZED: Shadow Casing",
|
||||
"block.create.shaft": "Arbre mécanique",
|
||||
"block.create.shaft": "Rotor",
|
||||
"block.create.smart_chute": "UNLOCALIZED: Smart Chute",
|
||||
"block.create.smart_fluid_pipe": "UNLOCALIZED: Smart Fluid Pipe",
|
||||
"block.create.speedometer": "Compteur de vitesse",
|
||||
|
@ -385,16 +385,16 @@
|
|||
"block.create.vertical_framed_glass": "Fenêtre en verre verticale",
|
||||
"block.create.vertical_framed_glass_pane": "Vitre encadrée verticale",
|
||||
"block.create.water_wheel": "Roue à eau",
|
||||
"block.create.weathered_limestone": "Calcaire patinées",
|
||||
"block.create.weathered_limestone_bricks": "Briques de calcaire patinées",
|
||||
"block.create.weathered_limestone_bricks_slab": "Dalle de briques de calcaire patinées",
|
||||
"block.create.weathered_limestone_bricks_stairs": "Escaliers de briques de calcaire patinées",
|
||||
"block.create.weathered_limestone_bricks_wall": "Muret de briques de calcaire patinées",
|
||||
"block.create.weathered_limestone": "Calcaire altéré",
|
||||
"block.create.weathered_limestone_bricks": "Briques de Calcaire altéré",
|
||||
"block.create.weathered_limestone_bricks_slab": "Dalle de briques de Calcaire altéré",
|
||||
"block.create.weathered_limestone_bricks_stairs": "Escaliers de briques de Calcaire altéré",
|
||||
"block.create.weathered_limestone_bricks_wall": "Muret de briques de Calcaire altéré",
|
||||
"block.create.weathered_limestone_cobblestone": "UNLOCALIZED: Weathered Limestone Cobblestone",
|
||||
"block.create.weathered_limestone_cobblestone_slab": "UNLOCALIZED: Weathered Limestone Cobblestone Slab",
|
||||
"block.create.weathered_limestone_cobblestone_stairs": "UNLOCALIZED: Weathered Limestone Cobblestone Stairs",
|
||||
"block.create.weathered_limestone_cobblestone_wall": "UNLOCALIZED: Weathered Limestone Cobblestone Wall",
|
||||
"block.create.weathered_limestone_pillar": "Pillier de calcaire patinées",
|
||||
"block.create.weathered_limestone_pillar": "Pillier de Calcaire altéré",
|
||||
"block.create.white_sail": "UNLOCALIZED: White Sail",
|
||||
"block.create.white_seat": "UNLOCALIZED: White Seat",
|
||||
"block.create.white_valve_handle": "UNLOCALIZED: White Valve Handle",
|
||||
|
@ -478,7 +478,7 @@
|
|||
"item.create.schematic_and_quill": "Schéma et plume",
|
||||
"item.create.shadow_steel": "Acier sombre",
|
||||
"item.create.super_glue": "Colle extra-forte",
|
||||
"item.create.tree_fertilizer": "Engrais pour arbre",
|
||||
"item.create.tree_fertilizer": "Engrais pour arbres",
|
||||
"item.create.vertical_gearbox": "Boîte de transfert verticale",
|
||||
"item.create.wand_of_symmetry": "Bâton de symétrie",
|
||||
"item.create.wheat_flour": "Farine",
|
||||
|
@ -496,7 +496,7 @@
|
|||
"advancement.create.andesite_alloy.desc": "Certains matériaux de Create ont des noms bizzares; l'alliage d'andésite est l'un d'entre eux.",
|
||||
"advancement.create.its_alive": "Ça bouge!",
|
||||
"advancement.create.its_alive.desc": "Regardez vos bremiers composants tourner.",
|
||||
"advancement.create.shifting_gears": "Arbre de transmission",
|
||||
"advancement.create.shifting_gears": "rotor de transmission",
|
||||
"advancement.create.shifting_gears.desc": "Connectez une roue dentée à une grande roue dentée afin de changer la vitesse de votre engin",
|
||||
"advancement.create.overstressed": "Surtension",
|
||||
"advancement.create.overstressed.desc": "Testez d'abord les limites de la force mécanique",
|
||||
|
@ -657,7 +657,7 @@
|
|||
"itemGroup.create.base": "Create",
|
||||
"itemGroup.create.palettes": "Create Palettes",
|
||||
|
||||
"death.attack.create.crush": "%1$s nanana a été traitée par une roue de concassage",
|
||||
"death.attack.create.crush": "%1$s a été concassé.e",
|
||||
"death.attack.create.fan_fire": "%1$s a été brûlé à mort par l'air chaud",
|
||||
"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",
|
||||
|
@ -796,10 +796,10 @@
|
|||
"create.contraptions.movement_mode": "Mode de mouvement",
|
||||
"create.contraptions.movement_mode.move_place": "Toujours placer à l'arrêt",
|
||||
"create.contraptions.movement_mode.move_place_returned": "Placer uniquement en position de départ",
|
||||
"create.contraptions.movement_mode.move_never_place": "Ne placer que lorsque l'ancre est détruite",
|
||||
"create.contraptions.movement_mode.move_never_place": "Ne placer que Quand l'ancre est détruite",
|
||||
"create.contraptions.movement_mode.rotate_place": "Toujours placer à l'arrêt",
|
||||
"create.contraptions.movement_mode.rotate_place_returned": "Placer uniquement près de l'angle initial",
|
||||
"create.contraptions.movement_mode.rotate_never_place": "Ne placer que lorsque l'ancre est détruite",
|
||||
"create.contraptions.movement_mode.rotate_never_place": "Ne placer que Quand l'ancre est détruite",
|
||||
"create.contraptions.cart_movement_mode": "UNLOCALIZED: Cart Movement Mode",
|
||||
"create.contraptions.cart_movement_mode.rotate": "UNLOCALIZED: Always face toward motion",
|
||||
"create.contraptions.cart_movement_mode.rotate_paused": "UNLOCALIZED: Pause actors while rotating",
|
||||
|
@ -1118,7 +1118,7 @@
|
|||
"create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start <tickTime> to artificially slow down the server tick",
|
||||
"create.command.killTPSCommand.argument.tickTime": "tickTime",
|
||||
|
||||
"create.subtitle.schematicannon_launch_block": "Tire de schémacanon",
|
||||
"create.subtitle.schematicannon_launch_block": "Tir de schémacanon",
|
||||
"create.subtitle.schematicannon_finish": "Fin de schémacanon",
|
||||
"create.subtitle.slime_added": "Bruit de slime",
|
||||
"create.subtitle.mechanical_press_activation": "Activation de la presse mechanique",
|
||||
|
@ -1138,7 +1138,7 @@
|
|||
"item.create.example_item.tooltip.behaviour1": "Donc cet objet fait ceci. (les comportements sont affichés avec shift)",
|
||||
"item.create.example_item.tooltip.condition2": "Et quand cela",
|
||||
"item.create.example_item.tooltip.behaviour2": "Vous pouvez ajouter autant de comportements que vous le souhaitez",
|
||||
"item.create.example_item.tooltip.control1": "Lorsque Ctrl enfoncé",
|
||||
"item.create.example_item.tooltip.control1": "Quand Ctrl enfoncé",
|
||||
"item.create.example_item.tooltip.action1": "Ces commandes sont affichées.",
|
||||
|
||||
"block.create.andesite_encased_shaft.tooltip": "UNLOCALIZED: ANDESITE ENCASED SHAFT",
|
||||
|
@ -1298,7 +1298,7 @@
|
|||
|
||||
"item.create.wand_of_symmetry.tooltip": "BÂTON DE SYMÉTRIE",
|
||||
"item.create.wand_of_symmetry.tooltip.summary": "Reflète parfaitement le placement des blocs sur les plans configurés.",
|
||||
"item.create.wand_of_symmetry.tooltip.condition1": "Lorsque positionné dans la barre active",
|
||||
"item.create.wand_of_symmetry.tooltip.condition1": "Quand positionné dans la barre active",
|
||||
"item.create.wand_of_symmetry.tooltip.behaviour1": "Reste actif",
|
||||
"item.create.wand_of_symmetry.tooltip.control1": "Clic droit au sol",
|
||||
"item.create.wand_of_symmetry.tooltip.action1": "_Créé_ ou _déplace_ le mirroir",
|
||||
|
@ -1325,13 +1325,13 @@
|
|||
"item.create.handheld_worldshaper.tooltip.control3": "Clic droit en étant accroupi",
|
||||
"item.create.handheld_worldshaper.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_",
|
||||
|
||||
"item.create.tree_fertilizer.tooltip": "ENGRAIS POUR ARBRE",
|
||||
"item.create.tree_fertilizer.tooltip.summary": "Une puissante combinaison de minéraux adaptée pour accélérer la croissance des types d'arbres communs.",
|
||||
"item.create.tree_fertilizer.tooltip.condition1": "Lorsqu'utilisé sur une pousse d'arbre",
|
||||
"item.create.tree_fertilizer.tooltip.behaviour1": "Fait pousser des arbres _indépendamment_ de leurs _conditions_ _d'emplacement_",
|
||||
"item.create.tree_fertilizer.tooltip": "ENGRAIS POUR ARBRES",
|
||||
"item.create.tree_fertilizer.tooltip.summary": "Une puissante combinaison de minéraux adaptée pour accélérer la croissance des types d'rotors communs.",
|
||||
"item.create.tree_fertilizer.tooltip.condition1": "Lorsqu'utilisé sur une pousse d'rotor",
|
||||
"item.create.tree_fertilizer.tooltip.behaviour1": "Fait pousser des rotors _indépendamment_ de leurs _conditions_ _d'emplacement_",
|
||||
|
||||
"item.create.deforester.tooltip": "DÉFORESTEUR",
|
||||
"item.create.deforester.tooltip.summary": "Une _hache_ _rayonnante_ capable d'abattre des arbres en une fraction de seconde.",
|
||||
"item.create.deforester.tooltip.summary": "Une _hache_ _rayonnante_ capable d'abattre des rotors en une fraction de seconde.",
|
||||
|
||||
"item.create.extendo_grip.tooltip": "UNLOCALIZED: EXTENDO GRIP",
|
||||
"item.create.extendo_grip.tooltip.summary": "UNLOCALIZED: Boioioing! Greatly _increases reach distance_ of the wielder.",
|
||||
|
@ -1340,14 +1340,14 @@
|
|||
|
||||
"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_.",
|
||||
"item.create.filter.tooltip.condition1": "Lorsque dans l'emplacement de filtre",
|
||||
"item.create.filter.tooltip.condition1": "Quand dans l'emplacement de filtre",
|
||||
"item.create.filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.",
|
||||
"item.create.filter.tooltip.condition2": "Clic droit",
|
||||
"item.create.filter.tooltip.behaviour2": "Ouvre l'_interface_ _de_ _configuration_.",
|
||||
|
||||
"item.create.attribute_filter.tooltip": "FILTRE D'ATTRIBUTS",
|
||||
"item.create.attribute_filter.tooltip.summary": "_Contrôle_ les _sorties_ et les _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.",
|
||||
"item.create.attribute_filter.tooltip.condition1": "Lorsque dans l'emplacement de filtre",
|
||||
"item.create.attribute_filter.tooltip.condition1": "Quand dans l'emplacement de filtre",
|
||||
"item.create.attribute_filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.",
|
||||
"item.create.attribute_filter.tooltip.condition2": "Clic droit",
|
||||
"item.create.attribute_filter.tooltip.behaviour2": "Ouvre l'_interface_ _de_ _configuration_.",
|
||||
|
@ -1357,7 +1357,7 @@
|
|||
|
||||
"item.create.schematic.tooltip": "SCHÉMA",
|
||||
"item.create.schematic.tooltip.summary": "Contient une structure à positionner et à placer dans le monde. Positionnez l'hologramme comme vous le souhaitez et utilisez un _schémacanon_ pour le construire.",
|
||||
"item.create.schematic.tooltip.condition1": "Lorsque tenu en main",
|
||||
"item.create.schematic.tooltip.condition1": "Quand tenu en main",
|
||||
"item.create.schematic.tooltip.behaviour1": "Peut être positionné à l'aide des outils à l'écran.",
|
||||
"item.create.schematic.tooltip.control1": "Clic droit en étant accroupi",
|
||||
"item.create.schematic.tooltip.action1": "Ouvre une _interface_ pour rentrer les _coordonées_ correctes.",
|
||||
|
@ -1382,31 +1382,31 @@
|
|||
|
||||
"block.create.schematic_table.tooltip": "TABLE À SCHÉMA",
|
||||
"block.create.schematic_table.tooltip.summary": "Écrit les schémas enregistrés dans un _schéma_ _vide_.",
|
||||
"block.create.schematic_table.tooltip.condition1": "Lorsque donné un schéma vide",
|
||||
"block.create.schematic_table.tooltip.condition1": "Quand donné un schéma vide",
|
||||
"block.create.schematic_table.tooltip.behaviour1": "Télécharge un fichier choisi à partir de votre dossier de schémas.",
|
||||
|
||||
"block.create.shaft.tooltip": "ARBRE MÉCANIQUE",
|
||||
"block.create.shaft.tooltip.summary": "_Relais_ la _rotation_ en ligne droite.",
|
||||
"block.create.shaft.tooltip": "ROTOR",
|
||||
"block.create.shaft.tooltip.summary": "_Relaie_ la _rotation_ en ligne droite.",
|
||||
|
||||
"block.create.cogwheel.tooltip": "ROUE DENTÉE",
|
||||
"block.create.cogwheel.tooltip.summary": "_Relais_ la _rotation_ en ligne droite, et aux _roues_ _dentées_ adjacentes.",
|
||||
"block.create.cogwheel.tooltip.summary": "_Relaie_ la _rotation_ en ligne droite, et aux _roues_ _dentées_ adjacentes.",
|
||||
|
||||
"block.create.large_cogwheel.tooltip": "GRANDE ROUE DENTÉE",
|
||||
"block.create.large_cogwheel.tooltip.summary": "Une version plus grande de la _roue_ _dentée_, permettant des _changements_ dans la _vitesse_ _de_ _rotation_ lorsqu'il est connecté à son homologue plus petit.",
|
||||
|
||||
"block.create.encased_shaft.tooltip": "ARBRE MÉCANIQUE ENBOÎTÉ",
|
||||
"block.create.encased_shaft.tooltip.summary": "_Relais_ la _rotation_ en ligne droite. Convient pour propager la rotation à travers les murs.",
|
||||
"block.create.encased_shaft.tooltip": "ROTOR ENCASTRÉ",
|
||||
"block.create.encased_shaft.tooltip.summary": "_Relaie_ la _rotation_ en ligne droite. Convient pour propager la rotation à travers les murs.",
|
||||
|
||||
"block.create.gearbox.tooltip": "BOÎTE DE VITESSES",
|
||||
"block.create.gearbox.tooltip.summary": "_Relais_ la _rotation_ dans _quatre_ _directions_. Inverse les connexions directes.",
|
||||
"block.create.gearbox.tooltip.summary": "_Relaie_ la _rotation_ dans _quatre_ _directions_. Inverse les connexions directes.",
|
||||
|
||||
"block.create.gearshift.tooltip": "DÉCALEUR DE ROTATION",
|
||||
"block.create.gearshift.tooltip.summary": "Une commande pour basculer le sens de rotation des arbres connectés.",
|
||||
"block.create.gearshift.tooltip": "BOÎTE DE VITESSES",
|
||||
"block.create.gearshift.tooltip.summary": "Une commande pour basculer le sens de rotation des rotors connectés.",
|
||||
"block.create.gearshift.tooltip.condition1": "Lorsqu'alimenté",
|
||||
"block.create.gearshift.tooltip.behaviour1": "_Inverse_ la rotation sortante.",
|
||||
|
||||
"block.create.clutch.tooltip": "EMBRAYAGE",
|
||||
"block.create.clutch.tooltip.summary": "Une commande pour engager / désengager la rotation des arbres connectés.",
|
||||
"block.create.clutch.tooltip.summary": "Une commande pour engager / désengager la rotation des rotors connectés.",
|
||||
"block.create.clutch.tooltip.condition1": "Lorsqu'alimenté",
|
||||
"block.create.clutch.tooltip.behaviour1": "_Arrête_ de transmettre la rotation de l'autre côté.",
|
||||
|
||||
|
@ -1421,23 +1421,23 @@
|
|||
"block.create.adjustable_chain_gearshift.tooltip.behaviour1": "UNLOCALIZED: _Without_ a signal, adjacent chain drives will relay the _same speed._ With a _full strength_ signal, adjacent chain drives will relay exactly _twice its speed._ Anything inbetween will give results between 1-2x its speed.",
|
||||
|
||||
"item.create.belt_connector.tooltip": "CONNECTEUR DE TAPIS ROULANTS",
|
||||
"item.create.belt_connector.tooltip.summary": "Connecte deux _arbres_ ou plus à un _tapis_ _roulant_ _mécanique_. Les arbres connectés auront exactement la même vitesse et le même sens de rotation. La ceinture peut agir comme un _convoyeur_ pour _objets_ et _entités_.",
|
||||
"item.create.belt_connector.tooltip.control1": "Clic droit sur arbre",
|
||||
"item.create.belt_connector.tooltip.action1": "Sélectionne l'arbre comme une poulie de la courroie. Les deux arbres sélectionnés doivent être _alignés_ soit _verticalement_, _horizontalement_, ou _diagonalement_ en direction de la courroie.",
|
||||
"item.create.belt_connector.tooltip.summary": "Connecte deux _rotors_ ou plus à un _tapis_ _roulant_ _mécanique_. Les rotors connectés auront exactement la même vitesse et le même sens de rotation. La ceinture peut agir comme un _convoyeur_ pour _objets_ et _entités_.",
|
||||
"item.create.belt_connector.tooltip.control1": "Clic droit sur rotor",
|
||||
"item.create.belt_connector.tooltip.action1": "Sélectionne le rotor comme une poulie de la courroie. Les deux rotors sélectionnés doivent être _alignés_ soit _verticalement_, _horizontalement_, ou _diagonalement_ en direction de la courroie.",
|
||||
"item.create.belt_connector.tooltip.control2": "Clic droit en étant accroupi",
|
||||
"item.create.belt_connector.tooltip.action2": "_Réinitialise_ la première position sélectionnée pour le tapis roulant.",
|
||||
|
||||
"item.create.goggles.tooltip": "LUNETTES",
|
||||
"item.create.goggles.tooltip.summary": "Une paire de lunettes pour augmenter votre vision avec des _informations_ _kinétiques_ utiles.",
|
||||
"item.create.goggles.tooltip.condition1": "Lorsque portées",
|
||||
"item.create.goggles.tooltip.condition1": "Quand portées",
|
||||
"item.create.goggles.tooltip.behaviour1": "Affiche des _indicateurs_ _colorés_ correspondants au _niveau_ _de_ _vitesse_ d'un composant cinétique placé ainsi que _l'impact_ du _stress_ et la _capacité_ des composants individuels.",
|
||||
"item.create.goggles.tooltip.condition2": "Lorsque vision portée sur une jauge",
|
||||
"item.create.goggles.tooltip.condition2": "Quand vision portée sur une jauge",
|
||||
"item.create.goggles.tooltip.behaviour2": "Affiche des informations détaillées sur la _vitesse_ ou le _stress_ du réseau auquel la jauge est connectée.",
|
||||
|
||||
"item.create.wrench.tooltip": "CLÉ",
|
||||
"item.create.wrench.tooltip.summary": "Un outil utile pour travailler sur les engins cinétiques. Peut être utilisé pour _tourner_, _démonter_ et _configurer_ les composants.",
|
||||
"item.create.wrench.tooltip.control1": "Clic droit a kinetic block",
|
||||
"item.create.wrench.tooltip.action1": "_Tourne_ les _composents_ proche ou loin de la face avec lequel vous avez interagi.",
|
||||
"item.create.wrench.tooltip.control1": "Clic droit sur un bloc de Create",
|
||||
"item.create.wrench.tooltip.action1": "_Tourne_ le _composant_ le long de l'axe dépendant de la face avec lequel vous avez interagi.",
|
||||
"item.create.wrench.tooltip.control2": "Clic droit en étant accroupi",
|
||||
"item.create.wrench.tooltip.action2": "_Démonte_ les _composants_ _cinétiques_ et les replace dans _votre_ _inventaire_.",
|
||||
|
||||
|
@ -1447,17 +1447,17 @@
|
|||
"block.create.water_wheel.tooltip": "ROUE À EAU",
|
||||
"block.create.water_wheel.tooltip.summary": "Fournit une _force_ _de_ _rotation_ provenant de _courants_ _d'eau_ adjacents.",
|
||||
|
||||
"block.create.encased_fan.tooltip": "VENTILATEUR ENFERMÉ",
|
||||
"block.create.encased_fan.tooltip": "VENTILATEUR ENCHÂSSÉ",
|
||||
"block.create.encased_fan.tooltip.summary": "Convertit _force_ _de_ _rotation_ en _courants_ _d'air_ et inversement. A une variété d'utilisations.",
|
||||
"block.create.encased_fan.tooltip.condition1": "Lorsqu'alimenté par de la redstone",
|
||||
"block.create.encased_fan.tooltip.behaviour1": "Fournit _force_ _de_ _rotation_ à partir de toute _source_ _de_ _chaleur_ immédiatement en dessous de lui. Le ventilateur doit être tourné vers le bas.",
|
||||
"block.create.encased_fan.tooltip.condition2": "Lorsque tourné",
|
||||
"block.create.encased_fan.tooltip.condition2": "Quand tourné",
|
||||
"block.create.encased_fan.tooltip.behaviour2": "_Pousse_ ou _tire_ les entités, selon la vitesse de rotation entrante.",
|
||||
"block.create.encased_fan.tooltip.condition3": "Lorsque souffle à travers des blocs spéciaux",
|
||||
"block.create.encased_fan.tooltip.condition3": "Quand souffle à travers des blocs spéciaux",
|
||||
"block.create.encased_fan.tooltip.behaviour3": "Des particules de _liquides_ et de _feu_ sont émises dans le flux d'air. Cela peut être utilisé pour _traiter_ des _objets_.",
|
||||
|
||||
"block.create.nozzle.tooltip": "BUSE",
|
||||
"block.create.nozzle.tooltip.summary": "Attachez-le à l'avant d'un _ventilateur_ _enfermé_ pour répartir son effet sur les entités dans _toutes_ les _directions_.",
|
||||
"block.create.nozzle.tooltip.summary": "Attachez-le à l'avant d'un _ventilateur_ enchâssé_ pour répartir son effet sur les entités dans _toutes_ les _directions_.",
|
||||
|
||||
"block.create.hand_crank.tooltip": "MANIVELLE",
|
||||
"block.create.hand_crank.tooltip.summary": "Une simple _source_ de _force_ _de_ _rotation_ qui nécessite l'interaction des joueurs.",
|
||||
|
@ -1466,11 +1466,11 @@
|
|||
|
||||
"block.create.cuckoo_clock.tooltip": "COUCOU",
|
||||
"block.create.cuckoo_clock.tooltip.summary": "Un bel artisanat pour _décorer_ un espace et _garder_ la _notion_ _du_ _temps_.",
|
||||
"block.create.cuckoo_clock.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.cuckoo_clock.tooltip.condition1": "Quand tourné",
|
||||
"block.create.cuckoo_clock.tooltip.behaviour1": "Affiche le _temps_ _présent_ et joue une mélodie deux fois par jour. _S'active_ une fois le _midi_ et une fois au crépuscule, dès que les _joueurs_ _peuvent_ _dormir_.",
|
||||
|
||||
"block.create.turntable.tooltip": "PLAQUE TOURNANTE",
|
||||
"block.create.turntable.tooltip.summary": "Transforme la _force_ _de_ _rotation_ en une nausée.",
|
||||
"block.create.turntable.tooltip.summary": "Transforme la _force_ _de_ _rotation_ en énergie cinétique.",
|
||||
|
||||
"block.create.millstone.tooltip": "UNLOCALIZED: MILLSTONE",
|
||||
"block.create.millstone.tooltip.summary": "UNLOCALIZED: A kinetic component suitable for _grinding_ inserted _materials_. Can be powered by an adjacent cogwheel or by connecting to the shaft at the bottom. Results have to be extracted from the component.",
|
||||
|
@ -1481,7 +1481,7 @@
|
|||
|
||||
"block.create.crushing_wheel.tooltip": "ROUE DE CONCASSAGE",
|
||||
"block.create.crushing_wheel.tooltip.summary": "Grandes roues rotatives qui _cassent_ n'importe quoi.",
|
||||
"block.create.crushing_wheel.tooltip.condition1": "Lorsque fixé à une autre roue de concassage",
|
||||
"block.create.crushing_wheel.tooltip.condition1": "Quand fixé à une autre roue de concassage",
|
||||
"block.create.crushing_wheel.tooltip.behaviour1": "Forme une machine de concassage pour traiter une variété de choses. Les dents des roues doivent se connecter et se déplacer avec la _même_ _vitesse_ dans des _directions_ _opposées_.",
|
||||
|
||||
"block.create.mechanical_press.tooltip": "PRESSE MÉCANIQUE",
|
||||
|
@ -1511,11 +1511,11 @@
|
|||
"block.create.mechanical_mixer.tooltip": "MIXEUR MÉCANIQUE",
|
||||
"block.create.mechanical_mixer.tooltip.summary": "Un fouet cinétique pour appliquer toutes les recettes d'artisanat informes aux objets en dessous. Nécessite une _force_ _de_ _rotation_ constant et un _bassin_ placé en dessous (avec un espace entre les deux).",
|
||||
"block.create.mechanical_mixer.tooltip.condition1": "Lorsqu'au-dessus d'un bassin",
|
||||
"block.create.mechanical_mixer.tooltip.behaviour1": "Commence à mélanger les objets dans le bassin lorsque tous les ingrédients nécessaires sont présents.",
|
||||
"block.create.mechanical_mixer.tooltip.behaviour1": "Commence à mélanger les objets dans le bassin Quand tous les ingrédients nécessaires sont présents.",
|
||||
|
||||
"block.create.mechanical_crafter.tooltip": "ÉTABLI MÉCANIQUE",
|
||||
"block.create.mechanical_crafter.tooltip.summary": "Un assembleur cinétique pour _automatiser_ n'importe quelle recette _en_ _forme_. Placez-en _plusieurs_ _dans_ _une_ _grille_ correspondant à votre recette, et _arrangez_ _leurs_ _tapis_ _roulant_ pour créer un _flux_ qui sort de la grille sur l'un des établis.",
|
||||
"block.create.mechanical_crafter.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.mechanical_crafter.tooltip.condition1": "Quand tourné",
|
||||
"block.create.mechanical_crafter.tooltip.behaviour1": "_Démarre_ _le_ _processus_ _d'artisanat_ dès que _tous_ les _établis_ dans la grille ont _reçu_ _un_ _objet_.",
|
||||
"block.create.mechanical_crafter.tooltip.condition2": "UNLOCALIZED: On Redstone Pulse",
|
||||
"block.create.mechanical_crafter.tooltip.behaviour2": "UNLOCALIZED: _Forces_ the start of the _crafting process_ with all currently given _items_ in the grid.",
|
||||
|
@ -1537,7 +1537,7 @@
|
|||
"block.create.portable_storage_interface.tooltip": "INTERFACE DE STOCKAGE PORTABLE",
|
||||
"block.create.portable_storage_interface.tooltip.summary": "Un point d'échange portable pour _déplacer_ des _objets_ vers et depuis une _structure_ déplacée par un piston, un roulement, un chariot ou une poulie.",
|
||||
"block.create.portable_storage_interface.tooltip.condition1": "Lorsqu'en mouvement",
|
||||
"block.create.portable_storage_interface.tooltip.behaviour1": "Interagit avec les _transposeurs_ stationnaires de sorte que les transposeurs faisant _face_ _autrepart_ de l'interface tirent les objets, et les transposeurs ciblant l'interface y _insereront_ les _objets_ de l'inventaire joint. L'engin se bloquera brièvement lorsque les objets seront échangés.",
|
||||
"block.create.portable_storage_interface.tooltip.behaviour1": "Interagit avec les _transposeurs_ stationnaires de sorte que les transposeurs faisant _face_ _autrepart_ de l'interface tirent les objets, et les transposeurs ciblant l'interface y _insereront_ les _objets_ de l'inventaire joint. L'engin se bloquera brièvement Quand les objets seront échangés.",
|
||||
"block.create.portable_storage_interface.tooltip.condition2": "UNLOCALIZED: When Powered by Redstone",
|
||||
"block.create.portable_storage_interface.tooltip.behaviour2": "UNLOCALIZED: _Disengages_ any active connection immediately.",
|
||||
|
||||
|
@ -1555,17 +1555,17 @@
|
|||
|
||||
"block.create.mechanical_piston.tooltip": "PISTON MÉCANIQUE",
|
||||
"block.create.mechanical_piston.tooltip.summary": "Une version plus avancée du _piston_. Il utilise une _force_ _de_ rotation_ pour déplacer précisément les structures attachées. Les _pôles_ _d'extension_ _de_ _piston_ à l'arrière définissent la _portée_ de cet appareil. Sans extensions, le piston ne bougera pas. Utilisez un _châssis_ ou un _bloc_ _de_ slime_ pour déplacer plus d'une seule ligne de blocs.",
|
||||
"block.create.mechanical_piston.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.mechanical_piston.tooltip.condition1": "Quand tourné",
|
||||
"block.create.mechanical_piston.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.",
|
||||
|
||||
"block.create.piston_extension_pole.tooltip": "PÔLE DE PISTON",
|
||||
"block.create.piston_extension_pole.tooltip": "BARRE DE PISTON",
|
||||
"block.create.piston_extension_pole.tooltip.summary": "Étend la portée des _pistons_ _mécaniques.",
|
||||
"block.create.piston_extension_pole.tooltip.condition1": "Lorsqu'attaché à un piston mécanique",
|
||||
"block.create.piston_extension_pole.tooltip.behaviour1": "Étend la portée du _piston_ d'un bloc",
|
||||
|
||||
"block.create.mechanical_bearing.tooltip": "ROULEMENT MÉCANIQUE",
|
||||
"block.create.mechanical_bearing.tooltip.summary": "Utilisé pour faire tourner de _plus_ _grande_ _structures_ ou pour exploiter une _force_ _de_ rotation_ contre le vent.",
|
||||
"block.create.mechanical_bearing.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.mechanical_bearing.tooltip.condition1": "Quand tourné",
|
||||
"block.create.mechanical_bearing.tooltip.behaviour1": "Démarre les blocs attachés en rotation. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.",
|
||||
|
||||
"block.create.windmill_bearing.tooltip": "UNLOCALIZED: WINDMILL BEARING",
|
||||
|
@ -1583,20 +1583,20 @@
|
|||
|
||||
"block.create.clockwork_bearing.tooltip": "ROULEMENT MÉCANIQUE HORLOGER",
|
||||
"block.create.clockwork_bearing.tooltip.summary": "Une version avancée du _roulement_ _mécanique_ pour faire tourner jusqu'à deux _aiguilles_ _d'horloge_ en fonction du _temps_ _en-jeu_ actuel.",
|
||||
"block.create.clockwork_bearing.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.clockwork_bearing.tooltip.condition1": "Quand tourné",
|
||||
"block.create.clockwork_bearing.tooltip.behaviour1": "Commence la rotation de la structure attachée vers l'_heure_ _actuelle_. Si une seconde structure est présente, elle servira _d'aiguille_ _des_ _minutes_.",
|
||||
|
||||
"block.create.sequenced_gearshift.tooltip": "DÉCALEUR DE ROTATION SÉQUENCÉ",
|
||||
"block.create.sequenced_gearshift.tooltip": "BOÎITE À VITESSES SÉQUENCÉE",
|
||||
"block.create.sequenced_gearshift.tooltip.summary": "Un _composant_ _utilitaire_ _programmable_, qui peut changer son _débit_ _de_ _rotation_ suivant jusqu'à _5_ _instructions_ _consécutives_. Utilisez-le pour alimenter des roulements mécaniques, des pistons ou des poulies avec plus de contrôle sur le timing et la vitesse. Peut devenir moins précis à des vitesses plus élevées.",
|
||||
"block.create.sequenced_gearshift.tooltip.condition1": "Lorsqu'alimenté par de la redstone",
|
||||
"block.create.sequenced_gearshift.tooltip.behaviour1": "_Commence_ _à_ _exécuter_ les instructions programmées en fonction de la vitesse d'entrée.",
|
||||
"block.create.sequenced_gearshift.tooltip.condition2": "Clic droit",
|
||||
"block.create.sequenced_gearshift.tooltip.behaviour2": "Ouvre _l'interface_ _de_ _configuration_",
|
||||
|
||||
"block.create.cart_assembler.tooltip": "ASSEMBLEUR DE CHARIOT",
|
||||
"block.create.cart_assembler.tooltip.summary": "Monte une structure connectée sur un _chariot_ _passant_.",
|
||||
"block.create.cart_assembler.tooltip": "ASSEMBLEUR DE WAGON",
|
||||
"block.create.cart_assembler.tooltip.summary": "Monte une structure connectée sur un _wagon_ _passant_.",
|
||||
"block.create.cart_assembler.tooltip.condition1": "Lorsqu'alimenté par de la redstone",
|
||||
"block.create.cart_assembler.tooltip.behaviour1": "_Démonte_ les structures montées un _chariot_ _passant_ et les remet dans le monde.",
|
||||
"block.create.cart_assembler.tooltip.behaviour1": "_Démonte_ les structures montées un _wagon passant_ et les remet dans le monde.",
|
||||
"block.create.cart_assembler.tooltip.condition2": "UNLOCALIZED: Carriage Contraptions",
|
||||
"block.create.cart_assembler.tooltip.behaviour2": "UNLOCALIZED: Two cart assembers _connected by_ a _structure_ will, once both contain a minecart, connect those carts with a _contraption mounted between_ the _two_ of them. The structure will behave similarly to a _Minecart Coupling_.",
|
||||
"block.create.cart_assembler.tooltip.control1": "UNLOCALIZED: When placed above Rail",
|
||||
|
@ -1608,35 +1608,35 @@
|
|||
"block.create.cart_assembler.tooltip.control4": "UNLOCALIZED: When placed above Activator Rail",
|
||||
"block.create.cart_assembler.tooltip.action4": "UNLOCALIZED: _Disassembles_ carts when powered.",
|
||||
|
||||
"block.create.rope_pulley.tooltip": "POULIE DE CORDE",
|
||||
"block.create.rope_pulley.tooltip": "POULIE",
|
||||
"block.create.rope_pulley.tooltip.summary": "Déplace les _blocs_ et _structures_ attachés _verticalement_. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.",
|
||||
"block.create.rope_pulley.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.rope_pulley.tooltip.condition1": "Quand tourné",
|
||||
"block.create.rope_pulley.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.",
|
||||
|
||||
"block.create.linear_chassis.tooltip": "CHÂSSIS DE TRADUCTION",
|
||||
"block.create.linear_chassis.tooltip": "CHÂSSIS LINÉAIRE",
|
||||
"block.create.linear_chassis.tooltip.summary": "Un bloc de base configurable reliant les structures pour le mouvement.",
|
||||
"block.create.linear_chassis.tooltip.condition1": "Lorsque déplacé",
|
||||
"block.create.linear_chassis.tooltip.condition1": "Quand déplacé",
|
||||
"block.create.linear_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ avec la même orientation, et une colonne de blocs dans sa portée. Les blocs ne seront tirés que si la face du châssis est _collante_ (Voir [Ctrl]).",
|
||||
"block.create.linear_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé",
|
||||
"block.create.linear_chassis.tooltip.behaviour2": "Configurez la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la plage de tous les blocs de châssis connectés.",
|
||||
"block.create.linear_chassis.tooltip.control1": "Clic droit avec une boule de slime",
|
||||
"block.create.linear_chassis.tooltip.action1": "Rends la face _collante_. Lorsque déplace, le châssis va _tirer_ les blocs attachés, quelle que soit la direction du mouvement.",
|
||||
"block.create.linear_chassis.tooltip.action1": "Rend la face _collante_. Quand déplacé, le châssis va _tirer_ les blocs attachés, quelle que soit la direction du mouvement.",
|
||||
|
||||
"block.create.secondary_linear_chassis.tooltip": "UNLOCALIZED: SECONDARY LINEAR CHASSIS",
|
||||
"block.create.secondary_linear_chassis.tooltip.summary": "UNLOCALIZED: A second type of _Linear Chassis_ that does not connect to the other.",
|
||||
"block.create.secondary_linear_chassis.tooltip": "CHÂSSIS LINÉAIRE SECONDAIRE",
|
||||
"block.create.secondary_linear_chassis.tooltip.summary": "Un deuxième type de _châssis linéaire_ qui ne se connecte pas au premier.",
|
||||
|
||||
"block.create.radial_chassis.tooltip": "CHÂSSIS DE ROTATION",
|
||||
"block.create.radial_chassis.tooltip.summary": "Un bloc de base configurable reliant les structures pour le mouvement.",
|
||||
"block.create.radial_chassis.tooltip.condition1": "Lorsque déplacé",
|
||||
"block.create.radial_chassis.tooltip.condition1": "Quand déplacé",
|
||||
"block.create.radial_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ en colonne, et un cylindre de blocs autour de lui. Les blocs qui l'entourent ne sont déplacés que lorsqu'ils sont à portée et attachés à un côté collant (voir [Ctrl]).",
|
||||
"block.create.radial_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé",
|
||||
"block.create.radial_chassis.tooltip.behaviour2": "Configure la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la portée de tous les blocs de châssis connectés.",
|
||||
"block.create.radial_chassis.tooltip.control1": "Clic droit avec une boule de slime",
|
||||
"block.create.radial_chassis.tooltip.action1": "Rend la face _collante_. Lorsque le châssis se déplace, tous les blocs désignés attachés au côté collant sont déplacés avec lui.",
|
||||
"block.create.radial_chassis.tooltip.action1": "Rend la face _collante_. Quand le châssis se déplace, tous les blocs désignés attachés au côté collant sont déplacés avec lui.",
|
||||
|
||||
"block.create.mechanical_drill.tooltip": "PERCEUSE MÉCANIQUE",
|
||||
"block.create.mechanical_drill.tooltip.summary": "Un dispositif mécanique adapté pour _casser_ les _blocs_. Il est déplaceable avec _pistons_ _mécaniques_ ou _roulements_.",
|
||||
"block.create.mechanical_drill.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.mechanical_drill.tooltip.condition1": "Quand tourné",
|
||||
"block.create.mechanical_drill.tooltip.behaviour1": "Agit comme un casseur de bloc _stationnaire_. Inflige aussi des _dégats_ aux _entités_ se situant dans sa zone effective.",
|
||||
"block.create.mechanical_drill.tooltip.condition2": "Lorsqu'en mouvement",
|
||||
"block.create.mechanical_drill.tooltip.behaviour2": "Casse les blocs avec lesquels la perceuse entre en collision.",
|
||||
|
@ -1646,36 +1646,36 @@
|
|||
"block.create.mechanical_harvester.tooltip.condition1": "Lorsqu'en mouvement",
|
||||
"block.create.mechanical_harvester.tooltip.behaviour1": "_Récolte_ toutes les _cultures_ _matures_ que la lame entre en touche et les remet à leur état de croissance initial.",
|
||||
|
||||
"block.create.mechanical_plough.tooltip": "UNLOCALIZED: MECHANICAL PLOUGH",
|
||||
"block.create.mechanical_plough.tooltip.summary": "UNLOCALIZED: A mechanical plough has a variety of uses. It is movable with _Mechanical Pistons_, _Bearings_ or other controllers.",
|
||||
"block.create.mechanical_plough.tooltip.condition1": "UNLOCALIZED: While Moving",
|
||||
"block.create.mechanical_plough.tooltip.behaviour1": "UNLOCALIZED: _Breaks blocks_ which _cannot be collided_ with, such as torches, tracks or snow layers. _Applies_ its _motion_ to _entities_ without hurting them. _Tills soil blocks_ as though a Hoe would be used on them.",
|
||||
"block.create.mechanical_plough.tooltip": "CHARRUE MÉCANIQUE",
|
||||
"block.create.mechanical_plough.tooltip.summary": "Une charrue mécanique a divers usages. Elle peut être déplacée à l'aide de _pistons mécaniques_, de _roulements_ ou d'autres dispositifs de commande.",
|
||||
"block.create.mechanical_plough.tooltip.condition1": "Lorsqu’en mouvement",
|
||||
"block.create.mechanical_plough.tooltip.behaviour1": "_Casse les blocs_ avec lesquels _on ne peut pas entrer en collision_, tels que les torches, les sentiers ou les couches de neige. _Applique_ son _mouvement_ aux _entités_ sans les blesser. _Bêche les blocs de terre_ comme si une houe était utilisée sur ceux-ci.",
|
||||
|
||||
"block.create.mechanical_saw.tooltip": "SCIE MÉCANIQUE",
|
||||
"block.create.mechanical_saw.tooltip.summary": "Convient pour _couper_ des _arbres_ efficacement et pour _tailler_ des _blocs_ dans leurs homologues menuisés. Il est déplaceable à l'aide de _pistons_ _mécaniques_ ou _roulements_.",
|
||||
"block.create.mechanical_saw.tooltip.condition1": "Lorsque tourné vers le haut",
|
||||
"block.create.mechanical_saw.tooltip.behaviour1": "Applique les _recettes_ de _sciage_ et de _taillerie_ aux éléments jetés ou insérés dedans. Lorsque plusieurs sorties sont possibles, il les parcourt à moins qu'un _filtre_ ne soit affecté.",
|
||||
"block.create.mechanical_saw.tooltip.summary": "Convient pour _couper_ des _rotors_ efficacement et pour _tailler_ des _blocs_ dans leurs homologues menuisés. Il est déplaceable à l'aide de _pistons_ _mécaniques_ ou _roulements_.",
|
||||
"block.create.mechanical_saw.tooltip.condition1": "Quand tourné vers le haut",
|
||||
"block.create.mechanical_saw.tooltip.behaviour1": "Applique les _recettes_ de _sciage_ et de _taillerie_ aux éléments jetés ou insérés dedans. Quand plusieurs sorties sont possibles, il les parcourt à moins qu'un _filtre_ ne soit affecté.",
|
||||
"block.create.mechanical_saw.tooltip.condition2": "Lorsqu'à l'horizontal",
|
||||
"block.create.mechanical_saw.tooltip.behaviour2": "_Casse_ les _troncs_ devant elle. Si le tronc a supportait un arbre, _l'arbre_ _tombera_ loin de la scie.",
|
||||
"block.create.mechanical_saw.tooltip.behaviour2": "_Casse_ les _troncs_ devant elle. Si le tronc a supportait un rotor, _le rotor_ _tombera_ loin de la scie.",
|
||||
"block.create.mechanical_saw.tooltip.condition3": "Lorsqu'en mouvement",
|
||||
"block.create.mechanical_saw.tooltip.behaviour3": "_Coupe_ tous les _arbres_ avec lesquels la scie entre en collision.",
|
||||
"block.create.mechanical_saw.tooltip.behaviour3": "_Coupe_ tous les _rotors_ avec lesquels la scie entre en collision.",
|
||||
|
||||
"block.create.stockpile_switch.tooltip": "DÉTÉCTEUR DE STOCKAGE",
|
||||
"block.create.stockpile_switch.tooltip.summary": "Bascule un signal Redstone basé sur _l'espace_ _de_ _stockage_ dans le conteneur attaché.",
|
||||
"block.create.stockpile_switch.tooltip.condition1": "Lorsqu'en dessous de la limite de stockage minimum",
|
||||
"block.create.stockpile_switch.tooltip.behaviour1": "Arrête de fournir de _l'énergie_",
|
||||
|
||||
"block.create.content_observer.tooltip": "UNLOCALIZED: CONTENT OBSERVER",
|
||||
"block.create.content_observer.tooltip.summary": "UNLOCALIZED: _Detects Items_ inside _containers_ and _conveyors_ matching a configured _filter_. While the observed _inventory_, _belt_ or _chute contains_ a matching item, this component will emit a _Redstone Signal_. When an observed _funnel transfers_ a matching item, this component will emit a _Redstone Pulse_.",
|
||||
"block.create.content_observer.tooltip": "OBSERVATEUR DE CONTENU",
|
||||
"block.create.content_observer.tooltip.summary": "_Détecte les objets_ à l'intérieur des _conteneurs_ et des _transporteurs_ correspondant à un _filtre_ configuré. Tant que l'_inventaire_, le _tapis roulant_ ou la _glissière_ observé _contient_ un objet correspondant, ce composant émet un _signal de redstone_. Quand un _entonnoir_ observé _transfère_ un objet correspondant, ce composant émet une _impulsion de redstone_.",
|
||||
|
||||
"block.create.redstone_link.tooltip": "LIAISON REDSTONE",
|
||||
"block.create.redstone_link.tooltip.summary": "Points de terminaison pour les connexions de _redstone_ _sans-fil_. Peut être attribué des _fréquences_ en utilisant n'importe quel objet. La portée du signal est limitée, quoique raisonnablement loin.",
|
||||
"block.create.redstone_link.tooltip.condition1": "Lorsqu'alimenté",
|
||||
"block.create.redstone_link.tooltip.behaviour1": "La réception de liens de la même _fréquence_ produira un signal redstone.",
|
||||
"block.create.redstone_link.tooltip": "LIEN DE REDSTONE",
|
||||
"block.create.redstone_link.tooltip.summary": "Terminaux pour les connexions de _redstone_ _sans-fil_. Peut être attribué des _fréquences_ en utilisant n'importe quel objet. La portée du signal est limitée, nonobstant raisonnablement loin.",
|
||||
"block.create.redstone_link.tooltip.condition1": "Quand alimenté",
|
||||
"block.create.redstone_link.tooltip.behaviour1": "Les liens de la même _fréquence_ configurés en réception produira un signal redstone.",
|
||||
"block.create.redstone_link.tooltip.control1": "Clic droit avec un objet",
|
||||
"block.create.redstone_link.tooltip.action1": "Définit la _fréquence_ sur cet élément. Un total de _deux_ _différents_ _objets_ peuvent être utilisés en combinaison pour définir une fréquence.",
|
||||
"block.create.redstone_link.tooltip.control2": "Clic droit en étant accroupi",
|
||||
"block.create.redstone_link.tooltip.action2": "TBascule entre le mode _receveur_ et _transmetteur_.",
|
||||
"block.create.redstone_link.tooltip.action2": "Bascule entre le mode _récepteur_ et _transmetteur_.",
|
||||
|
||||
"block.create.nixie_tube.tooltip": "UNLOCALIZED: NIXIE TUBE",
|
||||
"block.create.nixie_tube.tooltip.summary": "UNLOCALIZED: A fancy redstone-powered _Number_ and _Text Display_.",
|
||||
|
@ -1684,12 +1684,12 @@
|
|||
"block.create.nixie_tube.tooltip.condition2": "UNLOCALIZED: With Name Tag",
|
||||
"block.create.nixie_tube.tooltip.behaviour2": "UNLOCALIZED: Display _contents_ of your _name tag_ with several nixie tubes _arranged_ in a _line_.",
|
||||
|
||||
"block.create.redstone_contact.tooltip": "redstone_contact REDSTONE",
|
||||
"block.create.redstone_contact.tooltip.summary": "N'émet de l'énergie que par paires. Il est mobile avec _pistons_ _mécaniques_ ou _roulements_.",
|
||||
"block.create.redstone_contact.tooltip.condition1": "Lorsque tourné vers un autre redstone_contact",
|
||||
"block.create.redstone_contact.tooltip.behaviour1": "Fournit un _signal_ _redstone_.",
|
||||
"block.create.redstone_contact.tooltip.condition2": "Lorsqu'en mouvement",
|
||||
"block.create.redstone_contact.tooltip.behaviour2": "Déclenche tous les redstone_contacts fixes qu'il passe.",
|
||||
"block.create.redstone_contact.tooltip": "CONTACT DE REDSTONE",
|
||||
"block.create.redstone_contact.tooltip.summary": "N'émet de l'énergie que par paires. Il est mobile avec des _pistons_ _mécaniques_ ou _roulements_.",
|
||||
"block.create.redstone_contact.tooltip.condition1": "Quand tourné vers un autre contact de redstone",
|
||||
"block.create.redstone_contact.tooltip.behaviour1": "Fournit un _signal_ de _redstone_.",
|
||||
"block.create.redstone_contact.tooltip.condition2": "Quand en mouvement",
|
||||
"block.create.redstone_contact.tooltip.behaviour2": "Déclenche tous les contacts de redstone fixes qu'il passe.",
|
||||
|
||||
"block.create.adjustable_crate.tooltip": "CAISSE AJUSTABLE",
|
||||
"block.create.adjustable_crate.tooltip.summary": "Ce _conteneur_ _de_ _stockage_ permet un contrôle manuel de sa capacité. Il peut contenir jusqu'à _16_ _piles_ de n'importe quel objet. Prend en charge les _comparateurs_ _de_ _redstone_.",
|
||||
|
@ -1698,20 +1698,20 @@
|
|||
|
||||
"block.create.creative_crate.tooltip": "CAISSE CRÉATIVE",
|
||||
"block.create.creative_crate.tooltip.summary": "Fournit une réserve infinie de blocs aux _Schémacanons_ adjacents.",
|
||||
"block.create.creative_crate.tooltip.condition1": "UNLOCALIZED: When Item in Filter Slot",
|
||||
"block.create.creative_crate.tooltip.behaviour1": "UNLOCALIZED: Anything _extracting_ from this container will provide an _endless supply_ of the item specified. Items _inserted_ into this crate will be _voided._",
|
||||
"block.create.creative_crate.tooltip.condition1": "Quand un objet se trouve dans l'emplacement de filtrage",
|
||||
"block.create.creative_crate.tooltip.behaviour1": "Tout ce qui _extrait_ de ce conteneur aura une _alimentation illimitée_ de l'objet spécifié. Les objets _insérés_ dans cette caisse seront _éliminés_.",
|
||||
|
||||
"block.create.deployer.tooltip": "DÉPLOYEUR",
|
||||
"block.create.deployer.tooltip.summary": "_Frappe_, _utilise_ et _active_. Cette machine essaiera _d'imiter_ un _joueur_ autant que possible. Peut _prendre_ et _déposer_ des _objets_ dans _l'inventaire_ adjacent. Peut être affecté à une pile d'éléments en tant que _filtre_.",
|
||||
"block.create.deployer.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.deployer.tooltip.condition1": "Quand tourné",
|
||||
"block.create.deployer.tooltip.behaviour1": "Étend son bras et _active_ dans l'espace de bloc _2m_ _devant_ de lui-même.",
|
||||
"block.create.deployer.tooltip.condition2": "Clic droit avec une clé",
|
||||
"block.create.deployer.tooltip.behaviour2": "Bascule le mode frappe. Dans le _mode_ _frappe_, le déployeur tentera d'utiliser son élément pour _casser_ les _blocs_ ou infliger des _dégats_ aux _entités_.",
|
||||
"block.create.deployer.tooltip.condition3": "UNLOCALIZED: When Filter assigned",
|
||||
"block.create.deployer.tooltip.behaviour3": "UNLOCALIZED: Deployer will not activate unless held item _matches_ the _filter._ Items not matching cannot be inserted; Held items matching the filter cannot be extracted.",
|
||||
"block.create.deployer.tooltip.condition3": "Quand un filtre est attribué",
|
||||
"block.create.deployer.tooltip.behaviour3": "Le déploiement n'est activé que si l'élément tenu _correspond_ au _filtre._ Les éléments ne correspondant pas ne peuvent pas être insérés ; les éléments tenus correspondant au filtre ne peuvent pas être extraits.",
|
||||
|
||||
"block.create.brass_casing.tooltip": "BOÎTIER EN LAITON",
|
||||
"block.create.brass_casing.tooltip.summary": "Boîtier de machine robuste avec une variété d'utilisations. Sans danger pour la décoration.",
|
||||
"block.create.brass_casing.tooltip": "REVÊTEMENT EN LAITON",
|
||||
"block.create.brass_casing.tooltip.summary": "Revêtement de machine robuste avec une variété d'utilisations. Sans danger pour la décoration.",
|
||||
|
||||
"block.create.pulse_repeater.tooltip": "RÉPÉTEUR D'IMPULSIONS",
|
||||
"block.create.pulse_repeater.tooltip.summary": "Un circuit simple pour couper les signaux de redstone passant à une longueur de _1_ _tick_.",
|
||||
|
@ -1738,28 +1738,28 @@
|
|||
|
||||
"block.create.speedometer.tooltip": "COMPTEUR DE VITESSE",
|
||||
"block.create.speedometer.tooltip.summary": "Mesure et affiche la _ vitesse de rotation _ des composants cinétiques attachés. Prend en charge les _comparateurs_ _de_ _redstone_.",
|
||||
"block.create.speedometer.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.speedometer.tooltip.condition1": "Quand tourné",
|
||||
"block.create.speedometer.tooltip.behaviour1": "Indique une couleur correspondant au niveau de vitesse. _Vert_ indique une rotation lente, _Bleu_ modérée et _violet_ rapide. Certains composants mécaniques nécessitent une vitesse suffisante pour fonctionner correctement.",
|
||||
|
||||
"block.create.stressometer.tooltip": "STRESSOMÈTRE",
|
||||
"block.create.stressometer.tooltip.summary": "Mesure et affiche la _stress__ globale du réseau cinétique attaché. Prend en charge les _comparateurs_ _de_ _redstone_.",
|
||||
"block.create.stressometer.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.stressometer.tooltip.condition1": "Quand tourné",
|
||||
"block.create.stressometer.tooltip.behaviour1": "Indique une couleur correspondant au niveau de contrainte. Les _réseaux_ _surchargés_ cesseront de bouger. Le stress peut être soulagé en ajoutant plus de _sources_ _rotationnelles_ au réseau.",
|
||||
|
||||
"item.create.sand_paper.tooltip": "UNLOCALIZED: SAND PAPER",
|
||||
"item.create.sand_paper.tooltip.summary": "UNLOCALIZED: A rough paper that can be used to _polish materials_. Can be automatically applied using the Deployer.",
|
||||
"item.create.sand_paper.tooltip.condition1": "UNLOCALIZED: When Used",
|
||||
"item.create.sand_paper.tooltip.behaviour1": "UNLOCALIZED: Applies polish to items held in the _offhand_ or lying on the _floor_ when _looking at them_",
|
||||
"item.create.sand_paper.tooltip": "PAPIER DE VERRE",
|
||||
"item.create.sand_paper.tooltip.summary": "Un papier rugueux qui peut être utilisé pour _polir des matériaux_. Peut être appliqué automatiquement à l'aide du déployeur.",
|
||||
"item.create.sand_paper.tooltip.condition1": "Quand utilisé",
|
||||
"item.create.sand_paper.tooltip.behaviour1": "Polit les objets qui se tenus dans la _main secondaire_ ou par terre quand on les _regarde_.",
|
||||
|
||||
"item.create.super_glue.tooltip": "UNLOCALIZED: SUPER GLUE",
|
||||
"item.create.super_glue.tooltip.summary": "UNLOCALIZED: Glue a block to another, and they will forever be inseparable.",
|
||||
"item.create.super_glue.tooltip.condition1": "UNLOCALIZED: When Used",
|
||||
"item.create.super_glue.tooltip.behaviour1": "UNLOCALIZED: Makes the _clicked face_ of a block _sticky_. Blocks attached to sticky faces will be _dragged along_ when moved by _mechanical pistons_, _bearings_ and other controllers.",
|
||||
"item.create.super_glue.tooltip.condition2": "UNLOCALIZED: When Held in Offhand",
|
||||
"item.create.super_glue.tooltip.behaviour2": "UNLOCALIZED: _Automatically attaches_ blocks placed from the main hand to the _side_ they were _placed against._",
|
||||
"item.create.super_glue.tooltip": "COLLE EXTRA-FORTE",
|
||||
"item.create.super_glue.tooltip.summary": "Collez un bloc à un autre, et ils seront à jamais inséparables.",
|
||||
"item.create.super_glue.tooltip.condition1": "Quand utilisé",
|
||||
"item.create.super_glue.tooltip.behaviour1": "Rend la face _cliquée_ d'un bloc _collante_. Les blocs attachés aux faces collantes seront entraînés par des _pistons mécaniques_, _des roulements_ et d'autres contrôleurs.",
|
||||
"item.create.super_glue.tooltip.condition2": "Quand tenu en main secondaire",
|
||||
"item.create.super_glue.tooltip.behaviour2": "Attache automatiquement les blocs placés de la main principale à la _face_ contre laquelle ils ont été _placés_.",
|
||||
|
||||
"item.create.builders_tea.tooltip": "UNLOCALIZED: BUILDERS TEA",
|
||||
"item.create.builders_tea.tooltip.summary": "UNLOCALIZED: The perfect drink to get the day started- _Motivating_ and _Saturating._",
|
||||
"item.create.builders_tea.tooltip": "THÉ DU CONSTRUCTEUR",
|
||||
"item.create.builders_tea.tooltip.summary": "La boisson parfaite pour commencer la journée - _motivante_ et _rasasiante_.",
|
||||
|
||||
"item.create.refined_radiance.tooltip": "ÉCLAT RAFFINÉ",
|
||||
"item.create.refined_radiance.tooltip.summary": "Un matériau chromatique forgé à partir de _lumière_ _absorbée_.",
|
||||
|
@ -1767,7 +1767,7 @@
|
|||
"item.create.shadow_steel.tooltip": "ACIER SOMBRE",
|
||||
"item.create.shadow_steel.tooltip.summary": "Un matériau chromatique forgé _dans_ _le_ _néant_.",
|
||||
|
||||
"item.create.minecart_coupling.tooltip": "UNLOCALIZED: MINECART COUPLING",
|
||||
"item.create.minecart_coupling.tooltip": "LIEN POUR WAGONS",
|
||||
"item.create.minecart_coupling.tooltip.summary": "UNLOCALIZED: _Chains_ all your _Minecarts_ or _Carriage Contraptions_ together to form a majestic Train.",
|
||||
"item.create.minecart_coupling.tooltip.condition1": "UNLOCALIZED: When Used on Minecart",
|
||||
"item.create.minecart_coupling.tooltip.behaviour1": "UNLOCALIZED: _Couples_ two Minecarts together, attempting to keep them at a _constant distance_ while moving.",
|
||||
|
@ -1780,7 +1780,7 @@
|
|||
"create.tooltip.randomWipDescription0": "Veuillez garder cet objet hors de portée des enfants.",
|
||||
"create.tooltip.randomWipDescription1": "Un bébé panda meurt chaque fois que vous utilisez cet objet. Chaque. Fois.",
|
||||
"create.tooltip.randomWipDescription2": "À utiliser à vos risques et périls.",
|
||||
"create.tooltip.randomWipDescription3": "Ce n'est pas l'objet que vous recherchez, *agites les doigts* veuillez vous disperser.",
|
||||
"create.tooltip.randomWipDescription3": "Ce n'est pas l'objet que vous recherchez, *agite les doigts* circulez.",
|
||||
"create.tooltip.randomWipDescription4": "Cet objet s'autodétruit en 10 secondes. 10, 9, 8...",
|
||||
"create.tooltip.randomWipDescription5": "Croyez-moi, c'est inutile.",
|
||||
"create.tooltip.randomWipDescription6": "En utilisant cet article, vous êtes responsables et acceptez ses conditions.",
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
"create:redstone_link",
|
||||
"create:analog_lever",
|
||||
"create:adjustable_repeater",
|
||||
"create:adjustable_pulse_repeater"
|
||||
"create:adjustable_pulse_repeater",
|
||||
"#minecraft:signs"
|
||||
]
|
||||
}
|
|
@ -187,5 +187,7 @@ public class AllTags {
|
|||
AllBlockTags.FAN_TRANSPARENT.add(Blocks.IRON_BARS);
|
||||
|
||||
AllBlockTags.FAN_HEATERS.add(Blocks.MAGMA_BLOCK, Blocks.CAMPFIRE, Blocks.LAVA, Blocks.FIRE);
|
||||
|
||||
AllBlockTags.SAFE_NBT.includeAll(BlockTags.SIGNS);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,6 @@ import java.util.stream.Collectors;
|
|||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.compat.jei.category.animations.AnimatedCrafter;
|
||||
import com.simibubi.create.compat.jei.category.animations.AnimatedKinetics;
|
||||
import com.simibubi.create.foundation.gui.AllGuiTextures;
|
||||
|
||||
import mezz.jei.api.constants.VanillaTypes;
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.simibubi.create.content.contraptions.components.fan;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.content.contraptions.base.DirectionalKineticBlock;
|
||||
import com.simibubi.create.content.logistics.block.chute.AbstractChuteBlock;
|
||||
|
@ -33,9 +32,16 @@ public class EncasedFanBlock extends DirectionalKineticBlock implements ITE<Enca
|
|||
|
||||
@Override
|
||||
public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) {
|
||||
super.onBlockAdded(state, worldIn, pos, oldState, isMoving);
|
||||
blockUpdate(state, worldIn, pos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateNeighbors(BlockState stateIn, IWorld worldIn, BlockPos pos, int flags) {
|
||||
super.updateNeighbors(stateIn, worldIn, pos, flags);
|
||||
blockUpdate(stateIn, worldIn, pos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReplaced(BlockState state, World world, BlockPos pos, BlockState p_196243_4_, boolean p_196243_5_) {
|
||||
if (state.hasTileEntity() && (state.getBlock() != p_196243_4_.getBlock() || !p_196243_4_.hasTileEntity())) {
|
||||
|
@ -70,13 +76,13 @@ public class EncasedFanBlock extends DirectionalKineticBlock implements ITE<Enca
|
|||
.isSneaking() ? preferredFacing : preferredFacing.getOpposite());
|
||||
}
|
||||
|
||||
protected void blockUpdate(BlockState state, World worldIn, BlockPos pos) {
|
||||
protected void blockUpdate(BlockState state, IWorld worldIn, BlockPos pos) {
|
||||
if (worldIn instanceof WrappedWorld)
|
||||
return;
|
||||
notifyFanTile(worldIn, pos);
|
||||
if (worldIn.isRemote)
|
||||
if (worldIn.isRemote())
|
||||
return;
|
||||
withTileEntityDo(worldIn, pos, te -> te.updateGenerator(state.get(FACING)));
|
||||
withTileEntityDo(worldIn, pos, te -> te.queueGeneratorUpdate());
|
||||
}
|
||||
|
||||
protected void notifyFanTile(IWorld world, BlockPos pos) {
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.simibubi.create.content.contraptions.components.fan;
|
|||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllTags.AllBlockTags;
|
||||
import com.simibubi.create.content.contraptions.base.GeneratingKineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlock;
|
||||
|
@ -18,7 +19,6 @@ import net.minecraft.util.Direction;
|
|||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
|
||||
@MethodsReturnNonnullByDefault
|
||||
public class EncasedFanTileEntity extends GeneratingKineticTileEntity implements IAirCurrentSource {
|
||||
|
||||
|
@ -27,18 +27,21 @@ public class EncasedFanTileEntity extends GeneratingKineticTileEntity implements
|
|||
protected int entitySearchCooldown;
|
||||
protected boolean isGenerator;
|
||||
protected boolean updateAirFlow;
|
||||
protected boolean updateGenerator;
|
||||
|
||||
public EncasedFanTileEntity(TileEntityType<? extends EncasedFanTileEntity> type) {
|
||||
super(type);
|
||||
isGenerator = false;
|
||||
airCurrent = new AirCurrent(this);
|
||||
updateAirFlow = true;
|
||||
updateGenerator = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void read(CompoundNBT compound, boolean clientPacket) {
|
||||
super.read(compound, clientPacket);
|
||||
isGenerator = compound.getBoolean("Generating");
|
||||
if (!wasMoved)
|
||||
isGenerator = compound.getBoolean("Generating");
|
||||
if (clientPacket)
|
||||
airCurrent.rebuild();
|
||||
}
|
||||
|
@ -64,12 +67,20 @@ public class EncasedFanTileEntity extends GeneratingKineticTileEntity implements
|
|||
return isGenerator ? AllConfigs.SERVER.kinetics.generatingFanSpeed.get() : 0;
|
||||
}
|
||||
|
||||
public void updateGenerator(Direction facing) {
|
||||
boolean shouldGenerate = world.isBlockPowered(pos) && facing == Direction.DOWN
|
||||
&& world.isBlockPresent(pos.down()) && blockBelowIsHot();
|
||||
if (shouldGenerate == isGenerator)
|
||||
public void queueGeneratorUpdate() {
|
||||
updateGenerator = true;
|
||||
}
|
||||
|
||||
public void updateGenerator() {
|
||||
BlockState blockState = getBlockState();
|
||||
if (!AllBlocks.ENCASED_FAN.has(blockState))
|
||||
return;
|
||||
if (blockState.get(EncasedFanBlock.FACING) != Direction.DOWN)
|
||||
return;
|
||||
|
||||
boolean shouldGenerate = world.isBlockPowered(pos) && world.isBlockPresent(pos.down()) && blockBelowIsHot();
|
||||
if (shouldGenerate == isGenerator)
|
||||
return;
|
||||
isGenerator = shouldGenerate;
|
||||
updateGeneratedRotation();
|
||||
}
|
||||
|
@ -171,6 +182,11 @@ public class EncasedFanTileEntity extends GeneratingKineticTileEntity implements
|
|||
sendData();
|
||||
}
|
||||
|
||||
if (updateGenerator) {
|
||||
updateGenerator = false;
|
||||
updateGenerator();
|
||||
}
|
||||
|
||||
if (getSpeed() == 0 || isGenerator)
|
||||
return;
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ import org.apache.commons.lang3.tuple.Pair;
|
|||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllMovementBehaviours;
|
||||
import com.simibubi.create.content.contraptions.base.IRotate;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.components.actors.SeatBlock;
|
||||
import com.simibubi.create.content.contraptions.components.actors.SeatEntity;
|
||||
|
@ -35,6 +36,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.glu
|
|||
import com.simibubi.create.content.contraptions.components.structureMovement.glue.SuperGlueHandler;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonBlock.PistonState;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.piston.MechanicalPistonHeadBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.piston.PistonExtensionPoleBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyBlock;
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.pulley.PulleyBlock.MagnetBlock;
|
||||
|
@ -50,6 +52,7 @@ import com.simibubi.create.foundation.fluid.CombinedTankWrapper;
|
|||
import com.simibubi.create.foundation.utility.BlockFace;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import com.simibubi.create.foundation.utility.NBTHelper;
|
||||
import com.simibubi.create.foundation.utility.NBTProcessors;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld;
|
||||
|
||||
|
@ -72,6 +75,7 @@ import net.minecraft.nbt.NBTUtil;
|
|||
import net.minecraft.state.properties.BlockStateProperties;
|
||||
import net.minecraft.state.properties.ChestType;
|
||||
import net.minecraft.state.properties.DoubleBlockHalf;
|
||||
import net.minecraft.state.properties.PistonType;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
|
@ -267,25 +271,11 @@ public abstract class Contraption {
|
|||
if (AllBlocks.BELT.has(state))
|
||||
moveBelt(pos, frontier, visited, state);
|
||||
|
||||
if (AllBlocks.GANTRY_PINION.has(state)) {
|
||||
BlockPos offset = pos.offset(state.get(GantryPinionBlock.FACING));
|
||||
if (!visited.contains(offset))
|
||||
frontier.add(offset);
|
||||
}
|
||||
if (AllBlocks.GANTRY_PINION.has(state))
|
||||
moveGantryPinion(world, pos, frontier, visited, state);
|
||||
|
||||
if (AllBlocks.GANTRY_SHAFT.has(state))
|
||||
for (Direction d : Iterate.directions) {
|
||||
BlockPos offset = pos.offset(d);
|
||||
if (!visited.contains(offset)) {
|
||||
BlockState offsetState = world.getBlockState(offset);
|
||||
Direction facing = state.get(GantryShaftBlock.FACING);
|
||||
if (d.getAxis() == facing.getAxis() && AllBlocks.GANTRY_SHAFT.has(offsetState)
|
||||
&& offsetState.get(GantryShaftBlock.FACING) == facing)
|
||||
frontier.add(offset);
|
||||
else if (AllBlocks.GANTRY_PINION.has(offsetState) && offsetState.get(GantryPinionBlock.FACING) == d)
|
||||
frontier.add(offset);
|
||||
}
|
||||
}
|
||||
moveGantryShaft(world, pos, frontier, visited, state);
|
||||
|
||||
// Bearings potentially create stabilized sub-contraptions
|
||||
if (AllBlocks.MECHANICAL_BEARING.has(state))
|
||||
|
@ -303,6 +293,10 @@ public abstract class Contraption {
|
|||
if (state.getBlock() instanceof MechanicalPistonBlock)
|
||||
if (!moveMechanicalPiston(world, pos, frontier, visited, state))
|
||||
return false;
|
||||
if (isExtensionPole(state))
|
||||
movePistonPole(world, pos, frontier, visited, state);
|
||||
if (isPistonHead(state))
|
||||
movePistonHead(world, pos, frontier, visited, state);
|
||||
|
||||
// Doors try to stay whole
|
||||
if (state.getBlock() instanceof DoorBlock) {
|
||||
|
@ -358,6 +352,83 @@ public abstract class Contraption {
|
|||
return blocks.size() <= AllConfigs.SERVER.kinetics.maxBlocksMoved.get();
|
||||
}
|
||||
|
||||
protected void movePistonHead(World world, BlockPos pos, List<BlockPos> frontier, Set<BlockPos> visited,
|
||||
BlockState state) {
|
||||
Direction direction = state.get(MechanicalPistonHeadBlock.FACING);
|
||||
BlockPos offset = pos.offset(direction.getOpposite());
|
||||
if (!visited.contains(offset)) {
|
||||
BlockState blockState = world.getBlockState(offset);
|
||||
if (isExtensionPole(blockState) && blockState.get(PistonExtensionPoleBlock.FACING)
|
||||
.getAxis() == direction.getAxis())
|
||||
frontier.add(offset);
|
||||
if (blockState.getBlock() instanceof MechanicalPistonBlock) {
|
||||
Direction pistonFacing = blockState.get(MechanicalPistonBlock.FACING);
|
||||
if (pistonFacing == direction && blockState.get(MechanicalPistonBlock.STATE) == PistonState.EXTENDED)
|
||||
frontier.add(offset);
|
||||
}
|
||||
}
|
||||
if (state.get(MechanicalPistonHeadBlock.TYPE) == PistonType.STICKY) {
|
||||
BlockPos attached = pos.offset(direction);
|
||||
if (!visited.contains(attached))
|
||||
frontier.add(attached);
|
||||
}
|
||||
}
|
||||
|
||||
protected void movePistonPole(World world, BlockPos pos, List<BlockPos> frontier, Set<BlockPos> visited,
|
||||
BlockState state) {
|
||||
for (Direction d : Iterate.directionsInAxis(state.get(PistonExtensionPoleBlock.FACING)
|
||||
.getAxis())) {
|
||||
BlockPos offset = pos.offset(d);
|
||||
if (!visited.contains(offset)) {
|
||||
BlockState blockState = world.getBlockState(offset);
|
||||
if (isExtensionPole(blockState) && blockState.get(PistonExtensionPoleBlock.FACING)
|
||||
.getAxis() == d.getAxis())
|
||||
frontier.add(offset);
|
||||
if (isPistonHead(blockState) && blockState.get(MechanicalPistonHeadBlock.FACING)
|
||||
.getAxis() == d.getAxis())
|
||||
frontier.add(offset);
|
||||
if (blockState.getBlock() instanceof MechanicalPistonBlock) {
|
||||
Direction pistonFacing = blockState.get(MechanicalPistonBlock.FACING);
|
||||
if (pistonFacing == d || pistonFacing == d.getOpposite()
|
||||
&& blockState.get(MechanicalPistonBlock.STATE) == PistonState.EXTENDED)
|
||||
frontier.add(offset);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void moveGantryPinion(World world, BlockPos pos, List<BlockPos> frontier, Set<BlockPos> visited,
|
||||
BlockState state) {
|
||||
BlockPos offset = pos.offset(state.get(GantryPinionBlock.FACING));
|
||||
if (!visited.contains(offset))
|
||||
frontier.add(offset);
|
||||
Axis rotationAxis = ((IRotate) state.getBlock()).getRotationAxis(state);
|
||||
for (Direction d : Iterate.directionsInAxis(rotationAxis)) {
|
||||
offset = pos.offset(d);
|
||||
BlockState offsetState = world.getBlockState(offset);
|
||||
if (AllBlocks.GANTRY_SHAFT.has(offsetState) && offsetState.get(GantryShaftBlock.FACING)
|
||||
.getAxis() == d.getAxis())
|
||||
if (!visited.contains(offset))
|
||||
frontier.add(offset);
|
||||
}
|
||||
}
|
||||
|
||||
protected void moveGantryShaft(World world, BlockPos pos, List<BlockPos> frontier, Set<BlockPos> visited,
|
||||
BlockState state) {
|
||||
for (Direction d : Iterate.directions) {
|
||||
BlockPos offset = pos.offset(d);
|
||||
if (!visited.contains(offset)) {
|
||||
BlockState offsetState = world.getBlockState(offset);
|
||||
Direction facing = state.get(GantryShaftBlock.FACING);
|
||||
if (d.getAxis() == facing.getAxis() && AllBlocks.GANTRY_SHAFT.has(offsetState)
|
||||
&& offsetState.get(GantryShaftBlock.FACING) == facing)
|
||||
frontier.add(offset);
|
||||
else if (AllBlocks.GANTRY_PINION.has(offsetState) && offsetState.get(GantryPinionBlock.FACING) == d)
|
||||
frontier.add(offset);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void moveBearing(BlockPos pos, List<BlockPos> frontier, Set<BlockPos> visited, BlockState state) {
|
||||
Direction facing = state.get(MechanicalBearingBlock.FACING);
|
||||
if (!canBeStabilized(facing, pos.subtract(anchor))) {
|
||||
|
@ -410,47 +481,25 @@ public abstract class Contraption {
|
|||
|
||||
private boolean moveMechanicalPiston(World world, BlockPos pos, List<BlockPos> frontier, Set<BlockPos> visited,
|
||||
BlockState state) {
|
||||
int limit = AllConfigs.SERVER.kinetics.maxPistonPoles.get();
|
||||
Direction direction = state.get(MechanicalPistonBlock.FACING);
|
||||
if (state.get(MechanicalPistonBlock.STATE) == PistonState.EXTENDED) {
|
||||
BlockPos searchPos = pos;
|
||||
while (limit-- >= 0) {
|
||||
searchPos = searchPos.offset(direction);
|
||||
BlockState blockState = world.getBlockState(searchPos);
|
||||
if (isExtensionPole(blockState)) {
|
||||
if (blockState.get(PistonExtensionPoleBlock.FACING)
|
||||
.getAxis() != direction.getAxis())
|
||||
break;
|
||||
if (!visited.contains(searchPos))
|
||||
frontier.add(searchPos);
|
||||
continue;
|
||||
}
|
||||
if (isPistonHead(blockState))
|
||||
if (!visited.contains(searchPos))
|
||||
frontier.add(searchPos);
|
||||
break;
|
||||
}
|
||||
if (limit <= -1)
|
||||
return false;
|
||||
}
|
||||
|
||||
BlockPos searchPos = pos;
|
||||
while (limit-- >= 0) {
|
||||
searchPos = searchPos.offset(direction.getOpposite());
|
||||
BlockState blockState = world.getBlockState(searchPos);
|
||||
if (isExtensionPole(blockState)) {
|
||||
if (blockState.get(PistonExtensionPoleBlock.FACING)
|
||||
.getAxis() != direction.getAxis())
|
||||
break;
|
||||
if (!visited.contains(searchPos))
|
||||
frontier.add(searchPos);
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (limit <= -1)
|
||||
PistonState pistonState = state.get(MechanicalPistonBlock.STATE);
|
||||
if (pistonState == PistonState.MOVING)
|
||||
return false;
|
||||
|
||||
BlockPos offset = pos.offset(direction.getOpposite());
|
||||
if (!visited.contains(offset)) {
|
||||
BlockState poleState = world.getBlockState(offset);
|
||||
if (AllBlocks.PISTON_EXTENSION_POLE.has(poleState) && poleState.get(PistonExtensionPoleBlock.FACING)
|
||||
.getAxis() == direction.getAxis())
|
||||
frontier.add(offset);
|
||||
}
|
||||
|
||||
if (pistonState == PistonState.EXTENDED || MechanicalPistonBlock.isStickyPiston(state)) {
|
||||
offset = pos.offset(direction);
|
||||
if (!visited.contains(offset))
|
||||
frontier.add(offset);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -837,6 +886,8 @@ public abstract class Contraption {
|
|||
|
||||
TileEntity tileEntity = world.getTileEntity(targetPos);
|
||||
CompoundNBT tag = block.nbt;
|
||||
if (tileEntity != null)
|
||||
tag = NBTProcessors.process(tileEntity, tag, false);
|
||||
if (tileEntity != null && tag != null) {
|
||||
tag.putInt("x", targetPos.getX());
|
||||
tag.putInt("y", targetPos.getY());
|
||||
|
@ -867,9 +918,10 @@ public abstract class Contraption {
|
|||
}
|
||||
}
|
||||
for (BlockInfo block : blocks.values()) {
|
||||
BlockPos targetPos = transform.apply(block.pos);
|
||||
if (!shouldUpdateAfterMovement(block))
|
||||
continue;
|
||||
BlockPos targetPos = transform.apply(block.pos);
|
||||
BlockState state = world.getBlockState(targetPos);
|
||||
world.markAndNotifyBlock(targetPos, null, block.state, block.state,
|
||||
BlockFlags.IS_MOVING | BlockFlags.DEFAULT);
|
||||
}
|
||||
|
|
|
@ -10,11 +10,15 @@ import com.simibubi.create.foundation.utility.Iterate;
|
|||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.item.BlockItemUseContext;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.ActionResultType;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.Direction.Axis;
|
||||
import net.minecraft.util.Hand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.BlockRayTraceResult;
|
||||
import net.minecraft.world.IBlockReader;
|
||||
import net.minecraft.world.IWorld;
|
||||
import net.minecraft.world.IWorldReader;
|
||||
|
@ -34,10 +38,15 @@ public class GantryPinionBlock extends DirectionalAxisKineticBlock implements IT
|
|||
.getAxis() != direction.getAxis();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateNeighbors(BlockState stateIn, IWorld worldIn, BlockPos pos, int flags) {
|
||||
super.updateNeighbors(stateIn, worldIn, pos, flags);
|
||||
withTileEntityDo(worldIn, pos, GantryPinionTileEntity::checkValidGantryShaft);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockAdded(BlockState state, World worldIn, BlockPos pos, BlockState oldState, boolean isMoving) {
|
||||
super.onBlockAdded(state, worldIn, pos, oldState, isMoving);
|
||||
withTileEntityDo(worldIn, pos, GantryPinionTileEntity::checkValidGantryShaft);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -50,6 +59,18 @@ public class GantryPinionBlock extends DirectionalAxisKineticBlock implements IT
|
|||
return context.getFace();
|
||||
}
|
||||
|
||||
public ActionResultType onUse(BlockState state, World worldIn, BlockPos pos, PlayerEntity player, Hand handIn,
|
||||
BlockRayTraceResult hit) {
|
||||
if (!player.isAllowEdit() || player.isSneaking())
|
||||
return ActionResultType.PASS;
|
||||
if (player.getHeldItem(handIn)
|
||||
.isEmpty()) {
|
||||
withTileEntityDo(worldIn, pos, te -> te.checkValidGantryShaft());
|
||||
return ActionResultType.SUCCESS;
|
||||
}
|
||||
return ActionResultType.PASS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockItemUseContext context) {
|
||||
BlockState stateForPlacement = super.getStateForPlacement(context);
|
||||
|
|
|
@ -6,6 +6,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.Abs
|
|||
import com.simibubi.create.foundation.networking.SimplePacketBase;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.util.Direction;
|
||||
|
@ -45,22 +46,26 @@ public class ContraptionInteractionPacket extends SimplePacketBase {
|
|||
|
||||
@Override
|
||||
public void handle(Supplier<Context> context) {
|
||||
context.get()
|
||||
.enqueueWork(() -> {
|
||||
ServerPlayerEntity sender = context.get()
|
||||
.getSender();
|
||||
if (sender == null)
|
||||
return;
|
||||
Entity entityByID = sender.getServerWorld()
|
||||
.getEntityByID(target);
|
||||
if (!(entityByID instanceof AbstractContraptionEntity))
|
||||
return;
|
||||
AbstractContraptionEntity contraptionEntity = (AbstractContraptionEntity) entityByID;
|
||||
if (contraptionEntity.handlePlayerInteraction(sender, localPos, face, interactionHand))
|
||||
sender.swingHand(interactionHand, true);
|
||||
});
|
||||
context.get()
|
||||
.setPacketHandled(true);
|
||||
context.get().enqueueWork(() -> {
|
||||
ServerPlayerEntity sender = context.get().getSender();
|
||||
if (sender == null)
|
||||
return;
|
||||
Entity entityByID = sender.getServerWorld().getEntityByID(target);
|
||||
if (!(entityByID instanceof AbstractContraptionEntity))
|
||||
return;
|
||||
AbstractContraptionEntity contraptionEntity = (AbstractContraptionEntity) entityByID;
|
||||
double d = sender.getAttribute(PlayerEntity.REACH_DISTANCE).getValue();
|
||||
if (!sender.canEntityBeSeen(entityByID))
|
||||
d -= 3;
|
||||
d *= d;
|
||||
if (sender.getDistanceSq(entityByID) > d) {
|
||||
// TODO log?
|
||||
return;
|
||||
}
|
||||
if (contraptionEntity.handlePlayerInteraction(sender, localPos, face, interactionHand))
|
||||
sender.swingHand(interactionHand, true);
|
||||
});
|
||||
context.get().setPacketHandled(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -21,9 +21,7 @@ import com.simibubi.create.foundation.utility.VecHelper;
|
|||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.PotionItem;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.particles.BlockParticleData;
|
||||
import net.minecraft.particles.IParticleData;
|
||||
import net.minecraft.particles.ParticleTypes;
|
||||
import net.minecraft.potion.PotionUtils;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
import net.minecraft.util.Direction;
|
||||
|
|
|
@ -113,17 +113,25 @@ public class GantryShaftBlock extends DirectionalKineticBlock {
|
|||
@Override
|
||||
public BlockState getStateForPlacement(BlockItemUseContext context) {
|
||||
BlockState state = super.getStateForPlacement(context);
|
||||
BlockPos pos = context.getPos();
|
||||
World world = context.getWorld();
|
||||
Direction face = context.getFace();
|
||||
BlockState blockState = context.getWorld()
|
||||
.getBlockState(context.getPos()
|
||||
.offset(face.getOpposite()));
|
||||
if (AllBlocks.GANTRY_SHAFT.has(blockState) && blockState.get(FACING)
|
||||
.getAxis() == face.getAxis()) {
|
||||
Direction facing = blockState.get(FACING);
|
||||
|
||||
BlockState neighbour = world.getBlockState(pos.offset(state.get(FACING)
|
||||
.getOpposite()));
|
||||
|
||||
BlockState clickedState =
|
||||
AllBlocks.GANTRY_SHAFT.has(neighbour) ? neighbour : world.getBlockState(pos.offset(face.getOpposite()));
|
||||
|
||||
if (AllBlocks.GANTRY_SHAFT.has(clickedState) && clickedState.get(FACING)
|
||||
.getAxis() == state.get(FACING)
|
||||
.getAxis()) {
|
||||
Direction facing = clickedState.get(FACING);
|
||||
state = state.with(FACING, context.getPlayer() == null || !context.getPlayer()
|
||||
.isSneaking() ? facing : facing.getOpposite());
|
||||
}
|
||||
return state.with(POWERED, shouldBePowered(state, context.getWorld(), context.getPos()));
|
||||
|
||||
return state.with(POWERED, shouldBePowered(state, world, pos));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -179,13 +187,9 @@ public class GantryShaftBlock extends DirectionalKineticBlock {
|
|||
toUpdate.add(pos);
|
||||
for (BlockPos blockPos : toUpdate) {
|
||||
BlockState blockState = worldIn.getBlockState(blockPos);
|
||||
|
||||
if (!shouldPower) {
|
||||
TileEntity te = worldIn.getTileEntity(blockPos);
|
||||
if (te instanceof KineticTileEntity)
|
||||
((KineticTileEntity) te).detachKinetics();
|
||||
}
|
||||
|
||||
TileEntity te = worldIn.getTileEntity(blockPos);
|
||||
if (te instanceof KineticTileEntity)
|
||||
((KineticTileEntity) te).detachKinetics();
|
||||
if (blockState.getBlock() instanceof GantryShaftBlock)
|
||||
worldIn.setBlockState(blockPos, blockState.with(POWERED, shouldPower), 2);
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import java.util.function.Supplier;
|
|||
import com.simibubi.create.foundation.networking.SimplePacketBase;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.util.Hand;
|
||||
|
@ -53,25 +54,29 @@ public class ExtendoGripInteractionPacket extends SimplePacketBase {
|
|||
|
||||
@Override
|
||||
public void handle(Supplier<Context> context) {
|
||||
context.get()
|
||||
.enqueueWork(() -> {
|
||||
ServerPlayerEntity sender = context.get()
|
||||
.getSender();
|
||||
if (sender == null)
|
||||
context.get().enqueueWork(() -> {
|
||||
ServerPlayerEntity sender = context.get().getSender();
|
||||
if (sender == null)
|
||||
return;
|
||||
Entity entityByID = sender.getServerWorld().getEntityByID(target);
|
||||
if (entityByID != null && ExtendoGripItem.isHoldingExtendoGrip(sender)) {
|
||||
double d = sender.getAttribute(PlayerEntity.REACH_DISTANCE).getValue();
|
||||
if (!sender.canEntityBeSeen(entityByID))
|
||||
d -= 3;
|
||||
d *= d;
|
||||
if (sender.getDistanceSq(entityByID) > d) {
|
||||
// TODO log?
|
||||
return;
|
||||
Entity entityByID = sender.getServerWorld()
|
||||
.getEntityByID(target);
|
||||
if (entityByID != null && ExtendoGripItem.isHoldingExtendoGrip(sender)) {
|
||||
if (interactionHand == null)
|
||||
sender.attackTargetEntityWithCurrentItem(entityByID);
|
||||
else if (specificPoint == null)
|
||||
sender.interactOn(entityByID, interactionHand);
|
||||
else
|
||||
entityByID.applyPlayerInteraction(sender, specificPoint, interactionHand);
|
||||
}
|
||||
});
|
||||
context.get()
|
||||
.setPacketHandled(true);
|
||||
if (interactionHand == null)
|
||||
sender.attackTargetEntityWithCurrentItem(entityByID);
|
||||
else if (specificPoint == null)
|
||||
sender.interactOn(entityByID, interactionHand);
|
||||
else
|
||||
entityByID.applyPlayerInteraction(sender, specificPoint, interactionHand);
|
||||
}
|
||||
});
|
||||
context.get().setPacketHandled(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ import com.simibubi.create.foundation.item.ItemDescription;
|
|||
import com.simibubi.create.foundation.networking.AllPackets;
|
||||
import com.simibubi.create.foundation.utility.BlockHelper;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.NBTProcessors;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
|
@ -115,7 +116,7 @@ public abstract class ZapperItem extends Item {
|
|||
});
|
||||
applyCooldown(player, item, false);
|
||||
}
|
||||
return new ActionResult<ItemStack>(ActionResultType.SUCCESS, item);
|
||||
return new ActionResult<>(ActionResultType.SUCCESS, item);
|
||||
}
|
||||
|
||||
boolean mainHand = hand == Hand.MAIN_HAND;
|
||||
|
@ -125,7 +126,7 @@ public abstract class ZapperItem extends Item {
|
|||
|
||||
// Pass To Offhand
|
||||
if (mainHand && isSwap && gunInOtherHand)
|
||||
return new ActionResult<ItemStack>(ActionResultType.FAIL, item);
|
||||
return new ActionResult<>(ActionResultType.FAIL, item);
|
||||
if (mainHand && !isSwap && gunInOtherHand)
|
||||
item.getTag()
|
||||
.putBoolean("_Swap", true);
|
||||
|
@ -144,7 +145,7 @@ public abstract class ZapperItem extends Item {
|
|||
world.playSound(player, player.getPosition(), AllSoundEvents.BLOCKZAPPER_DENY.get(), SoundCategory.BLOCKS,
|
||||
1f, 0.5f);
|
||||
player.sendStatusMessage(msg.applyTextStyle(TextFormatting.RED), true);
|
||||
return new ActionResult<ItemStack>(ActionResultType.FAIL, item);
|
||||
return new ActionResult<>(ActionResultType.FAIL, item);
|
||||
}
|
||||
|
||||
BlockState stateToUse = Blocks.AIR.getDefaultState();
|
||||
|
@ -169,7 +170,7 @@ public abstract class ZapperItem extends Item {
|
|||
// No target
|
||||
if (pos == null || stateReplaced.getBlock() == Blocks.AIR) {
|
||||
applyCooldown(player, item, gunInOtherHand);
|
||||
return new ActionResult<ItemStack>(ActionResultType.SUCCESS, item);
|
||||
return new ActionResult<>(ActionResultType.SUCCESS, item);
|
||||
}
|
||||
|
||||
// Find exact position of gun barrel for VFX
|
||||
|
@ -183,7 +184,7 @@ public abstract class ZapperItem extends Item {
|
|||
// Client side
|
||||
if (world.isRemote) {
|
||||
ZapperRenderHandler.dontAnimateItem(hand);
|
||||
return new ActionResult<ItemStack>(ActionResultType.SUCCESS, item);
|
||||
return new ActionResult<>(ActionResultType.SUCCESS, item);
|
||||
}
|
||||
|
||||
// Server side
|
||||
|
@ -195,7 +196,7 @@ public abstract class ZapperItem extends Item {
|
|||
new ZapperBeamPacket(barrelPos, raytrace.getHitVec(), hand, true));
|
||||
}
|
||||
|
||||
return new ActionResult<ItemStack>(ActionResultType.SUCCESS, item);
|
||||
return new ActionResult<>(ActionResultType.SUCCESS, item);
|
||||
}
|
||||
|
||||
public ITextComponent validateUsage(ItemStack item) {
|
||||
|
@ -240,10 +241,13 @@ public abstract class ZapperItem extends Item {
|
|||
return UseAction.NONE;
|
||||
}
|
||||
|
||||
public static void setTileData(World world, BlockPos pos, CompoundNBT data) {
|
||||
if (data != null) {
|
||||
public static void setTileData(World world, BlockPos pos, BlockState state, CompoundNBT data, PlayerEntity player) {
|
||||
if (data != null && AllBlockTags.SAFE_NBT.matches(state)) {
|
||||
TileEntity tile = world.getTileEntity(pos);
|
||||
if (tile != null && !tile.onlyOpsCanSetNbt()) {
|
||||
if (tile != null) {
|
||||
data = NBTProcessors.process(tile, data, !player.isCreative());
|
||||
if (data == null)
|
||||
return;
|
||||
data.putInt("x", pos.getX());
|
||||
data.putInt("y", pos.getY());
|
||||
data.putInt("z", pos.getZ());
|
||||
|
|
|
@ -135,7 +135,7 @@ public class BlockzapperItem extends ZapperItem {
|
|||
blocksnapshot.restore(true, false);
|
||||
return false;
|
||||
}
|
||||
setTileData(world, placed, data);
|
||||
setTileData(world, placed, state, data, player);
|
||||
|
||||
if (player instanceof ServerPlayerEntity && world instanceof ServerWorld) {
|
||||
ServerPlayerEntity serverPlayer = (ServerPlayerEntity) player;
|
||||
|
|
|
@ -10,6 +10,7 @@ import com.simibubi.create.foundation.utility.Lang;
|
|||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.Direction;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
|
@ -36,7 +37,7 @@ public enum TerrainTools {
|
|||
return this != Clear && this != Flatten;
|
||||
}
|
||||
|
||||
public void run(World world, List<BlockPos> targetPositions, Direction facing, @Nullable BlockState paintedState, @Nullable CompoundNBT data) {
|
||||
public void run(World world, List<BlockPos> targetPositions, Direction facing, @Nullable BlockState paintedState, @Nullable CompoundNBT data, PlayerEntity player) {
|
||||
switch (this) {
|
||||
case Clear:
|
||||
targetPositions.forEach(p -> world.setBlockState(p, Blocks.AIR.getDefaultState()));
|
||||
|
@ -47,7 +48,7 @@ public enum TerrainTools {
|
|||
if (!isReplaceable(toReplace))
|
||||
return;
|
||||
world.setBlockState(p, paintedState);
|
||||
ZapperItem.setTileData(world, p, data);
|
||||
ZapperItem.setTileData(world, p, paintedState, data, player);
|
||||
});
|
||||
break;
|
||||
case Flatten:
|
||||
|
@ -67,13 +68,13 @@ public enum TerrainTools {
|
|||
if (!isReplaceable(toReplace))
|
||||
return;
|
||||
world.setBlockState(p, paintedState);
|
||||
ZapperItem.setTileData(world, p, data);
|
||||
ZapperItem.setTileData(world, p, paintedState, data, player);
|
||||
});
|
||||
break;
|
||||
case Place:
|
||||
targetPositions.forEach(p -> {
|
||||
world.setBlockState(p, paintedState);
|
||||
ZapperItem.setTileData(world, p, data);
|
||||
ZapperItem.setTileData(world, p, paintedState, data, player);
|
||||
});
|
||||
break;
|
||||
case Replace:
|
||||
|
@ -82,7 +83,7 @@ public enum TerrainTools {
|
|||
if (isReplaceable(toReplace))
|
||||
return;
|
||||
world.setBlockState(p, paintedState);
|
||||
ZapperItem.setTileData(world, p, data);
|
||||
ZapperItem.setTileData(world, p, paintedState, data, player);
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -77,7 +77,7 @@ public class WorldshaperItem extends ZapperItem {
|
|||
for (BlockPos blockPos : brush.getIncludedPositions())
|
||||
affectedPositions.add(targetPos.add(blockPos));
|
||||
PlacementPatterns.applyPattern(affectedPositions, stack);
|
||||
tool.run(world, affectedPositions, raytrace.getFace(), stateToUse, data);
|
||||
tool.run(world, affectedPositions, raytrace.getFace(), stateToUse, data, player);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -379,29 +379,6 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor
|
|||
.isHorizontal())
|
||||
return false;
|
||||
|
||||
// BlockState stateBelow = world.getBlockState(pos.down());
|
||||
// if (stateBelow.getBlock() instanceof FunnelBlock) {
|
||||
// if (stateBelow.has(BrassFunnelBlock.POWERED) && stateBelow.get(BrassFunnelBlock.POWERED))
|
||||
// return false;
|
||||
// if (stateBelow.get(BrassFunnelBlock.FACING) != Direction.UP)
|
||||
// return false;
|
||||
// ItemStack remainder = FunnelBlock.tryInsert(world, pos.down(), item, simulate);
|
||||
// if (!simulate)
|
||||
// setItem(remainder);
|
||||
// return remainder.isEmpty();
|
||||
// }
|
||||
//
|
||||
// DirectBeltInputBehaviour directInput =
|
||||
// TileEntityBehaviour.get(world, pos.down(), DirectBeltInputBehaviour.TYPE);
|
||||
// if (directInput != null) {
|
||||
// if (!directInput.canInsertFromSide(Direction.UP))
|
||||
// return false;
|
||||
// ItemStack remainder = directInput.handleInsertion(item, Direction.UP, simulate);
|
||||
// if (!simulate)
|
||||
// setItem(remainder);
|
||||
// return remainder.isEmpty();
|
||||
// }
|
||||
|
||||
if (Block.hasSolidSideOnTop(world, pos.down()))
|
||||
return false;
|
||||
|
||||
|
@ -420,17 +397,6 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor
|
|||
|
||||
private boolean handleUpwardOutput(boolean simulate) {
|
||||
BlockState stateAbove = world.getBlockState(pos.up());
|
||||
// if (stateAbove.getBlock() instanceof FunnelBlock) {
|
||||
// boolean powered = stateAbove.has(BrassFunnelBlock.POWERED) && stateAbove.get(BrassFunnelBlock.POWERED);
|
||||
// if (!powered && stateAbove.get(BrassFunnelBlock.FACING) == Direction.DOWN) {
|
||||
// ItemStack remainder = FunnelBlock.tryInsert(world, pos.up(), item, simulate);
|
||||
// if (remainder.isEmpty()) {
|
||||
// if (!simulate)
|
||||
// setItem(remainder);
|
||||
// return true;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
if (world == null)
|
||||
return false;
|
||||
|
@ -501,9 +467,12 @@ public class ChuteTileEntity extends SmartTileEntity implements IHaveGoggleInfor
|
|||
if (world == null)
|
||||
return LazyOptional.empty();
|
||||
TileEntity te = world.getTileEntity(pos);
|
||||
if (te == null
|
||||
|| (te instanceof ChuteTileEntity) && (side != Direction.DOWN || !(te instanceof SmartChuteTileEntity)))
|
||||
if (te == null)
|
||||
return LazyOptional.empty();
|
||||
if (te instanceof ChuteTileEntity) {
|
||||
if (side != Direction.DOWN || !(te instanceof SmartChuteTileEntity) || getItemMotion() > 0)
|
||||
return LazyOptional.empty();
|
||||
}
|
||||
return te.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side.getOpposite());
|
||||
}
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ public class SmartChuteTileEntity extends ChuteTileEntity {
|
|||
|
||||
@Override
|
||||
protected boolean canAcceptItem(ItemStack stack) {
|
||||
return super.canAcceptItem(stack) && canCollectItemsFromBelow();
|
||||
return super.canAcceptItem(stack) && canCollectItemsFromBelow() && filtering.test(stack);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -2,7 +2,6 @@ package com.simibubi.create.content.logistics.block.redstone;
|
|||
|
||||
import com.simibubi.create.AllShapes;
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.content.logistics.block.funnel.FunnelBlock;
|
||||
import com.simibubi.create.foundation.block.ITE;
|
||||
import com.simibubi.create.foundation.block.ProperDirectionalBlock;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
package com.simibubi.create.content.schematics;
|
||||
|
||||
import com.mojang.datafixers.Dynamic;
|
||||
import com.mojang.datafixers.types.DynamicOps;
|
||||
import com.simibubi.create.foundation.utility.NBTProcessors;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityType;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.IWorldReader;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.gen.feature.template.IStructureProcessorType;
|
||||
import net.minecraft.world.gen.feature.template.PlacementSettings;
|
||||
import net.minecraft.world.gen.feature.template.StructureProcessor;
|
||||
import net.minecraft.world.gen.feature.template.Template;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Optional;
|
||||
|
||||
public class SchematicProcessor extends StructureProcessor {
|
||||
public static final SchematicProcessor INSTANCE = new SchematicProcessor();
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Template.BlockInfo process(IWorldReader world, BlockPos pos, Template.BlockInfo rawInfo,
|
||||
Template.BlockInfo info, PlacementSettings settings, @Nullable Template template) {
|
||||
if (info.nbt != null) {
|
||||
TileEntity te = info.state.createTileEntity(world);
|
||||
if (te != null) {
|
||||
CompoundNBT nbt = NBTProcessors.process(te, info.nbt, false);
|
||||
if (nbt != info.nbt)
|
||||
return new Template.BlockInfo(info.pos, info.state, nbt);
|
||||
}
|
||||
}
|
||||
return info;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Template.EntityInfo processEntity(IWorldReader world, BlockPos pos, Template.EntityInfo rawInfo,
|
||||
Template.EntityInfo info, PlacementSettings settings, Template template) {
|
||||
return EntityType.readEntityType(info.nbt).flatMap(type -> {
|
||||
if (world instanceof World) {
|
||||
Entity e = type.create((World) world);
|
||||
if (e != null && !e.ignoreItemEntityData()) {
|
||||
return Optional.of(info);
|
||||
}
|
||||
}
|
||||
return Optional.empty();
|
||||
}).orElse(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected IStructureProcessorType getType() {
|
||||
return dynamic -> INSTANCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected <T> Dynamic<T> serialize0(DynamicOps<T> ops) {
|
||||
return new Dynamic<>(ops, ops.emptyMap());
|
||||
}
|
||||
}
|
|
@ -5,7 +5,6 @@ import java.io.OutputStream;
|
|||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
|
@ -14,8 +13,6 @@ import java.util.Optional;
|
|||
import java.util.Set;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
|
||||
import com.simibubi.create.AllBlocks;
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.Create;
|
||||
|
@ -91,10 +88,8 @@ public class ServerSchematicLoader {
|
|||
}
|
||||
|
||||
public void handleNewUpload(ServerPlayerEntity player, String schematic, long size, BlockPos pos) {
|
||||
String playerPath = getSchematicPath() + "/" + player.getName()
|
||||
.getFormattedText();
|
||||
String playerSchematicId = player.getName()
|
||||
.getFormattedText() + "/" + schematic;
|
||||
String playerPath = getSchematicPath() + "/" + player.getGameProfile().getName();
|
||||
String playerSchematicId = player.getGameProfile().getName() + "/" + schematic;
|
||||
FilesHelper.createFolderIfMissing(playerPath);
|
||||
|
||||
// Unsupported Format
|
||||
|
@ -103,6 +98,14 @@ public class ServerSchematicLoader {
|
|||
return;
|
||||
}
|
||||
|
||||
Path playerSchematicsPath = Paths.get(getSchematicPath(), player.getGameProfile().getName()).toAbsolutePath();
|
||||
|
||||
Path uploadPath = playerSchematicsPath.resolve(schematic).normalize();
|
||||
if (!uploadPath.startsWith(playerSchematicsPath)) {
|
||||
Create.logger.warn("Attempted Schematic Upload with directory escape: {}", playerSchematicId);
|
||||
return;
|
||||
}
|
||||
|
||||
// Too big
|
||||
if (!validateSchematicSizeOnServer(player, size))
|
||||
return;
|
||||
|
@ -118,11 +121,15 @@ public class ServerSchematicLoader {
|
|||
return;
|
||||
|
||||
// Delete schematic with same name
|
||||
Files.deleteIfExists(Paths.get(getSchematicPath(), playerSchematicId));
|
||||
Files.deleteIfExists(uploadPath);
|
||||
|
||||
// Too many Schematics
|
||||
Stream<Path> list = Files.list(Paths.get(playerPath));
|
||||
if (list.count() >= getConfig().maxSchematics.get()) {
|
||||
long count;
|
||||
try (Stream<Path> list = Files.list(Paths.get(playerPath))) {
|
||||
count = list.count();
|
||||
}
|
||||
|
||||
if (count >= getConfig().maxSchematics.get()) {
|
||||
Stream<Path> list2 = Files.list(Paths.get(playerPath));
|
||||
Optional<Path> lastFilePath = list2.filter(f -> !Files.isDirectory(f))
|
||||
.min(Comparator.comparingLong(f -> f.toFile()
|
||||
|
@ -132,11 +139,9 @@ public class ServerSchematicLoader {
|
|||
Files.deleteIfExists(lastFilePath.get());
|
||||
}
|
||||
}
|
||||
list.close();
|
||||
|
||||
// Open Stream
|
||||
OutputStream writer =
|
||||
Files.newOutputStream(Paths.get(getSchematicPath(), playerSchematicId), StandardOpenOption.CREATE_NEW);
|
||||
OutputStream writer = Files.newOutputStream(uploadPath);
|
||||
activeUploads.put(playerSchematicId, new SchematicUploadEntry(writer, size, player.getServerWorld(), pos));
|
||||
|
||||
// Notify Tile Entity
|
||||
|
@ -165,8 +170,7 @@ public class ServerSchematicLoader {
|
|||
}
|
||||
|
||||
public void handleWriteRequest(ServerPlayerEntity player, String schematic, byte[] data) {
|
||||
String playerSchematicId = player.getName()
|
||||
.getFormattedText() + "/" + schematic;
|
||||
String playerSchematicId = player.getGameProfile().getName() + "/" + schematic;
|
||||
|
||||
if (activeUploads.containsKey(playerSchematicId)) {
|
||||
SchematicUploadEntry entry = activeUploads.get(playerSchematicId);
|
||||
|
@ -236,8 +240,7 @@ public class ServerSchematicLoader {
|
|||
}
|
||||
|
||||
public void handleFinishedUpload(ServerPlayerEntity player, String schematic) {
|
||||
String playerSchematicId = player.getName()
|
||||
.getFormattedText() + "/" + schematic;
|
||||
String playerSchematicId = player.getGameProfile().getName() + "/" + schematic;
|
||||
|
||||
if (activeUploads.containsKey(playerSchematicId)) {
|
||||
try {
|
||||
|
@ -258,8 +261,7 @@ public class ServerSchematicLoader {
|
|||
if (table == null)
|
||||
return;
|
||||
table.finishUpload();
|
||||
table.inventory.setStackInSlot(1, SchematicItem.create(schematic, player.getName()
|
||||
.getFormattedText()));
|
||||
table.inventory.setStackInSlot(1, SchematicItem.create(schematic, player.getGameProfile().getName()));
|
||||
|
||||
} catch (IOException e) {
|
||||
Create.logger.error("Exception Thrown when finishing Upload: " + playerSchematicId);
|
||||
|
@ -270,15 +272,21 @@ public class ServerSchematicLoader {
|
|||
|
||||
public void handleInstantSchematic(ServerPlayerEntity player, String schematic, World world, BlockPos pos,
|
||||
BlockPos bounds) {
|
||||
String playerPath = getSchematicPath() + "/" + player.getName()
|
||||
.getFormattedText();
|
||||
String playerSchematicId = player.getName()
|
||||
.getFormattedText() + "/" + schematic;
|
||||
String playerPath = getSchematicPath() + "/" + player.getGameProfile().getName();
|
||||
String playerSchematicId = player.getGameProfile().getName() + "/" + schematic;
|
||||
FilesHelper.createFolderIfMissing(playerPath);
|
||||
|
||||
// Unsupported Format
|
||||
if (!schematic.endsWith(".nbt")) {
|
||||
Create.logger.warn("Attempted Schematic Upload with non-supported Format: " + playerSchematicId);
|
||||
Create.logger.warn("Attempted Schematic Upload with non-supported Format: {}", playerSchematicId);
|
||||
return;
|
||||
}
|
||||
|
||||
Path schematicPath = Paths.get(getSchematicPath()).toAbsolutePath();
|
||||
|
||||
Path path = schematicPath.resolve(playerSchematicId).normalize();
|
||||
if (!path.startsWith(schematicPath)) {
|
||||
Create.logger.warn("Attempted Schematic Upload with directory escape: {}", playerSchematicId);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -288,12 +296,15 @@ public class ServerSchematicLoader {
|
|||
|
||||
try {
|
||||
// Delete schematic with same name
|
||||
Path path = Paths.get(getSchematicPath(), playerSchematicId);
|
||||
Files.deleteIfExists(path);
|
||||
|
||||
// Too many Schematics
|
||||
Stream<Path> list = Files.list(Paths.get(playerPath));
|
||||
if (list.count() >= getConfig().maxSchematics.get()) {
|
||||
long count;
|
||||
try (Stream<Path> list = Files.list(Paths.get(playerPath))) {
|
||||
count = list.count();
|
||||
}
|
||||
|
||||
if (count >= getConfig().maxSchematics.get()) {
|
||||
Stream<Path> list2 = Files.list(Paths.get(playerPath));
|
||||
Optional<Path> lastFilePath = list2.filter(f -> !Files.isDirectory(f))
|
||||
.min(Comparator.comparingLong(f -> f.toFile()
|
||||
|
@ -302,24 +313,17 @@ public class ServerSchematicLoader {
|
|||
if (lastFilePath.isPresent())
|
||||
Files.deleteIfExists(lastFilePath.get());
|
||||
}
|
||||
list.close();
|
||||
|
||||
Template t = new Template();
|
||||
t.takeBlocksFromWorld(world, pos, bounds, true, Blocks.AIR);
|
||||
|
||||
OutputStream outputStream = null;
|
||||
try {
|
||||
outputStream = Files.newOutputStream(path, StandardOpenOption.CREATE);
|
||||
try (OutputStream outputStream = Files.newOutputStream(path)) {
|
||||
CompoundNBT nbttagcompound = t.writeToNBT(new CompoundNBT());
|
||||
CompressedStreamTools.writeCompressed(nbttagcompound, outputStream);
|
||||
player.setHeldItem(Hand.MAIN_HAND, SchematicItem.create(schematic, player.getName()
|
||||
.getFormattedText()));
|
||||
player.setHeldItem(Hand.MAIN_HAND, SchematicItem.create(schematic, player.getGameProfile().getName()));
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if (outputStream != null)
|
||||
IOUtils.closeQuietly(outputStream);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
Create.logger.error("Exception Thrown in direct Schematic Upload: " + playerSchematicId);
|
||||
|
|
|
@ -422,8 +422,7 @@ public class SchematicannonScreen extends AbstractSimiContainerScreen<Schematica
|
|||
}
|
||||
|
||||
protected void sendOptionUpdate(Option option, boolean set) {
|
||||
AllPackets.channel.sendToServer(ConfigureSchematicannonPacket.setOption(container.getTileEntity()
|
||||
.getPos(), option, set));
|
||||
AllPackets.channel.sendToServer(new ConfigureSchematicannonPacket(option, set));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
|
|||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.BlockHelper;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import com.simibubi.create.foundation.utility.NBTProcessors;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.Blocks;
|
||||
|
@ -466,8 +467,9 @@ public class SchematicannonTileEntity extends SmartTileEntity implements INamedC
|
|||
CompoundNBT data = null;
|
||||
if (AllBlockTags.SAFE_NBT.matches(blockState)) {
|
||||
TileEntity tile = blockReader.getTileEntity(target);
|
||||
if (tile != null && !tile.onlyOpsCanSetNbt()) {
|
||||
if (tile != null) {
|
||||
data = tile.write(new CompoundNBT());
|
||||
data = NBTProcessors.process(tile, data, true);
|
||||
}
|
||||
}
|
||||
launchBlock(target, icon, blockState, data);
|
||||
|
|
|
@ -9,7 +9,6 @@ import com.google.common.cache.Cache;
|
|||
import com.google.common.cache.CacheBuilder;
|
||||
import com.simibubi.create.content.schematics.SchematicWorld;
|
||||
import com.simibubi.create.content.schematics.item.SchematicItem;
|
||||
import com.simibubi.create.foundation.utility.Debug;
|
||||
import com.simibubi.create.foundation.utility.WorldAttached;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
@ -63,10 +62,6 @@ public class SchematicInstances {
|
|||
PlacementSettings settings = SchematicItem.getSettings(schematic);
|
||||
activeTemplate.addBlocksToWorld(world, anchor, settings);
|
||||
|
||||
Debug.debugChat("Loading Schematic Instance of " + schematic.getTag()
|
||||
.getString("File") + ". Total active instances: " + (loadedSchematics.get(wrapped).size() + 1));
|
||||
|
||||
|
||||
return world;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,17 +1,22 @@
|
|||
package com.simibubi.create.content.schematics.item;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.util.List;
|
||||
import java.util.zip.GZIPInputStream;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.content.schematics.SchematicProcessor;
|
||||
import com.simibubi.create.content.schematics.client.SchematicEditScreen;
|
||||
import com.simibubi.create.content.schematics.filtering.SchematicInstances;
|
||||
import com.simibubi.create.foundation.gui.ScreenOpener;
|
||||
|
@ -25,6 +30,7 @@ import net.minecraft.item.ItemStack;
|
|||
import net.minecraft.item.ItemUseContext;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.nbt.CompressedStreamTools;
|
||||
import net.minecraft.nbt.NBTSizeTracker;
|
||||
import net.minecraft.nbt.NBTUtil;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.ActionResultType;
|
||||
|
@ -46,6 +52,8 @@ import net.minecraftforge.fml.common.thread.SidedThreadGroups;
|
|||
|
||||
public class SchematicItem extends Item {
|
||||
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
|
||||
public SchematicItem(Properties properties) {
|
||||
super(properties.maxStackSize(1));
|
||||
}
|
||||
|
@ -96,6 +104,7 @@ public class SchematicItem extends Item {
|
|||
PlacementSettings settings = new PlacementSettings();
|
||||
settings.setRotation(Rotation.valueOf(tag.getString("Rotation")));
|
||||
settings.setMirror(Mirror.valueOf(tag.getString("Mirror")));
|
||||
settings.addProcessor(SchematicProcessor.INSTANCE);
|
||||
return settings;
|
||||
}
|
||||
|
||||
|
@ -106,25 +115,30 @@ public class SchematicItem extends Item {
|
|||
String schematic = blueprint.getTag()
|
||||
.getString("File");
|
||||
|
||||
String filepath = "";
|
||||
if (!schematic.endsWith(".nbt"))
|
||||
return t;
|
||||
|
||||
if (Thread.currentThread()
|
||||
.getThreadGroup() == SidedThreadGroups.SERVER)
|
||||
filepath = "schematics/uploaded/" + owner + "/" + schematic;
|
||||
else
|
||||
filepath = "schematics/" + schematic;
|
||||
Path dir;
|
||||
Path file;
|
||||
|
||||
InputStream stream = null;
|
||||
try {
|
||||
stream = Files.newInputStream(Paths.get(filepath), StandardOpenOption.READ);
|
||||
CompoundNBT nbt = CompressedStreamTools.readCompressed(stream);
|
||||
if (Thread.currentThread().getThreadGroup() == SidedThreadGroups.SERVER) {
|
||||
dir = Paths.get("schematics", "uploaded").toAbsolutePath();
|
||||
file = Paths.get(owner, schematic);
|
||||
} else {
|
||||
dir = Paths.get("schematics").toAbsolutePath();
|
||||
file = Paths.get(schematic);
|
||||
}
|
||||
|
||||
Path path = dir.resolve(file).normalize();
|
||||
if (!path.startsWith(dir))
|
||||
return t;
|
||||
|
||||
try (DataInputStream stream = new DataInputStream(new BufferedInputStream(
|
||||
new GZIPInputStream(Files.newInputStream(path, StandardOpenOption.READ))))) {
|
||||
CompoundNBT nbt = CompressedStreamTools.read(stream, new NBTSizeTracker(0x20000000L));
|
||||
t.read(nbt);
|
||||
|
||||
} catch (IOException e) {
|
||||
// Player/Server doesnt have schematic saved
|
||||
} finally {
|
||||
if (stream != null)
|
||||
IOUtils.closeQuietly(stream);
|
||||
LOGGER.warn("Failed to read schematic", e);
|
||||
}
|
||||
|
||||
return t;
|
||||
|
@ -142,7 +156,7 @@ public class SchematicItem extends Item {
|
|||
public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) {
|
||||
if (!onItemUse(playerIn, handIn))
|
||||
return super.onItemRightClick(worldIn, playerIn, handIn);
|
||||
return new ActionResult<ItemStack>(ActionResultType.SUCCESS, playerIn.getHeldItem(handIn));
|
||||
return new ActionResult<>(ActionResultType.SUCCESS, playerIn.getHeldItem(handIn));
|
||||
}
|
||||
|
||||
private boolean onItemUse(PlayerEntity player, Hand hand) {
|
||||
|
|
|
@ -2,15 +2,13 @@ package com.simibubi.create.content.schematics.packet;
|
|||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import com.simibubi.create.content.schematics.block.SchematicannonContainer;
|
||||
import com.simibubi.create.content.schematics.block.SchematicannonTileEntity;
|
||||
import com.simibubi.create.content.schematics.block.SchematicannonTileEntity.State;
|
||||
import com.simibubi.create.foundation.networking.SimplePacketBase;
|
||||
|
||||
import net.minecraft.entity.player.ServerPlayerEntity;
|
||||
import net.minecraft.network.PacketBuffer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.network.NetworkEvent.Context;
|
||||
|
||||
public class ConfigureSchematicannonPacket extends SimplePacketBase {
|
||||
|
@ -21,45 +19,28 @@ public class ConfigureSchematicannonPacket extends SimplePacketBase {
|
|||
|
||||
private Option option;
|
||||
private boolean set;
|
||||
private BlockPos pos;
|
||||
|
||||
public static ConfigureSchematicannonPacket setOption(BlockPos pos, Option option, boolean set) {
|
||||
ConfigureSchematicannonPacket packet = new ConfigureSchematicannonPacket(pos);
|
||||
packet.option = option;
|
||||
packet.set = set;
|
||||
return packet;
|
||||
}
|
||||
|
||||
public ConfigureSchematicannonPacket(BlockPos pos) {
|
||||
this.pos = pos;
|
||||
public ConfigureSchematicannonPacket(Option option, boolean set) {
|
||||
this.option = option;
|
||||
this.set = set;
|
||||
}
|
||||
|
||||
public ConfigureSchematicannonPacket(PacketBuffer buffer) {
|
||||
pos = buffer.readBlockPos();
|
||||
option = Option.values()[buffer.readInt()];
|
||||
set = buffer.readBoolean();
|
||||
this(buffer.readEnumValue(Option.class), buffer.readBoolean());
|
||||
}
|
||||
|
||||
public void write(PacketBuffer buffer) {
|
||||
buffer.writeBlockPos(pos);
|
||||
buffer.writeInt(option.ordinal());
|
||||
buffer.writeEnumValue(option);
|
||||
buffer.writeBoolean(set);
|
||||
}
|
||||
|
||||
public void handle(Supplier<Context> context) {
|
||||
context.get().enqueueWork(() -> {
|
||||
ServerPlayerEntity player = context.get().getSender();
|
||||
if (player == null)
|
||||
return;
|
||||
World world = player.world;
|
||||
if (world == null || !world.isBlockPresent(pos))
|
||||
if (player == null || !(player.openContainer instanceof SchematicannonContainer))
|
||||
return;
|
||||
|
||||
TileEntity tileEntity = world.getTileEntity(pos);
|
||||
if (!(tileEntity instanceof SchematicannonTileEntity))
|
||||
return;
|
||||
|
||||
SchematicannonTileEntity te = (SchematicannonTileEntity) tileEntity;
|
||||
SchematicannonTileEntity te = ((SchematicannonContainer) player.openContainer).getTileEntity();
|
||||
switch (option) {
|
||||
case DONT_REPLACE:
|
||||
case REPLACE_ANY:
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.simibubi.create.content.schematics.packet;
|
|||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import com.simibubi.create.content.schematics.SchematicProcessor;
|
||||
import com.simibubi.create.content.schematics.item.SchematicItem;
|
||||
import com.simibubi.create.foundation.networking.SimplePacketBase;
|
||||
|
||||
|
@ -36,6 +37,8 @@ public class SchematicPlacePacket extends SimplePacketBase {
|
|||
return;
|
||||
Template t = SchematicItem.loadSchematic(stack);
|
||||
PlacementSettings settings = SchematicItem.getSettings(stack);
|
||||
if (player.canUseCommandBlock())
|
||||
settings.func_215220_b(SchematicProcessor.INSTANCE); // remove processor
|
||||
settings.setIgnoreEntities(false);
|
||||
t.addBlocksToWorld(player.getServerWorld(), NBTUtil.readBlockPos(stack.getTag().getCompound("Anchor")),
|
||||
settings);
|
||||
|
|
|
@ -39,48 +39,52 @@ import net.minecraft.network.PacketBuffer;
|
|||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fml.network.NetworkDirection;
|
||||
import net.minecraftforge.fml.network.NetworkEvent.Context;
|
||||
import net.minecraftforge.fml.network.NetworkRegistry;
|
||||
import net.minecraftforge.fml.network.PacketDistributor;
|
||||
import net.minecraftforge.fml.network.PacketDistributor.TargetPoint;
|
||||
import net.minecraftforge.fml.network.simple.SimpleChannel;
|
||||
|
||||
import static net.minecraftforge.fml.network.NetworkDirection.PLAY_TO_SERVER;
|
||||
import static net.minecraftforge.fml.network.NetworkDirection.PLAY_TO_CLIENT;
|
||||
|
||||
public enum AllPackets {
|
||||
|
||||
// Client to Server
|
||||
NBT(NbtPacket.class, NbtPacket::new),
|
||||
CONFIGURE_SCHEMATICANNON(ConfigureSchematicannonPacket.class, ConfigureSchematicannonPacket::new),
|
||||
CONFIGURE_FLEXCRATE(ConfigureFlexcratePacket.class, ConfigureFlexcratePacket::new),
|
||||
CONFIGURE_STOCKSWITCH(ConfigureStockswitchPacket.class, ConfigureStockswitchPacket::new),
|
||||
CONFIGURE_SEQUENCER(ConfigureSequencedGearshiftPacket.class, ConfigureSequencedGearshiftPacket::new),
|
||||
PLACE_SCHEMATIC(SchematicPlacePacket.class, SchematicPlacePacket::new),
|
||||
UPLOAD_SCHEMATIC(SchematicUploadPacket.class, SchematicUploadPacket::new),
|
||||
CONFIGURE_FILTER(FilterScreenPacket.class, FilterScreenPacket::new),
|
||||
CONFIGURE_FILTERING_AMOUNT(FilteringCountUpdatePacket.class, FilteringCountUpdatePacket::new),
|
||||
CONFIGURE_SCROLLABLE(ScrollValueUpdatePacket.class, ScrollValueUpdatePacket::new),
|
||||
EXTENDO_INTERACT(ExtendoGripInteractionPacket.class, ExtendoGripInteractionPacket::new),
|
||||
CONTRAPTION_INTERACT(ContraptionInteractionPacket.class, ContraptionInteractionPacket::new),
|
||||
CLIENT_MOTION(ClientMotionPacket.class, ClientMotionPacket::new),
|
||||
PLACE_ARM(ArmPlacementPacket.class, ArmPlacementPacket::new),
|
||||
MINECART_COUPLING_CREATION(CouplingCreationPacket.class, CouplingCreationPacket::new),
|
||||
INSTANT_SCHEMATIC(InstantSchematicPacket.class, InstantSchematicPacket::new),
|
||||
SYNC_SCHEMATIC(SchematicSyncPacket.class, SchematicSyncPacket::new),
|
||||
LEFT_CLICK(LeftClickPacket.class, LeftClickPacket::new),
|
||||
NBT(NbtPacket.class, NbtPacket::new, PLAY_TO_SERVER),
|
||||
CONFIGURE_SCHEMATICANNON(ConfigureSchematicannonPacket.class, ConfigureSchematicannonPacket::new, PLAY_TO_SERVER),
|
||||
CONFIGURE_FLEXCRATE(ConfigureFlexcratePacket.class, ConfigureFlexcratePacket::new, PLAY_TO_SERVER),
|
||||
CONFIGURE_STOCKSWITCH(ConfigureStockswitchPacket.class, ConfigureStockswitchPacket::new, PLAY_TO_SERVER),
|
||||
CONFIGURE_SEQUENCER(ConfigureSequencedGearshiftPacket.class, ConfigureSequencedGearshiftPacket::new, PLAY_TO_SERVER),
|
||||
PLACE_SCHEMATIC(SchematicPlacePacket.class, SchematicPlacePacket::new, PLAY_TO_SERVER),
|
||||
UPLOAD_SCHEMATIC(SchematicUploadPacket.class, SchematicUploadPacket::new, PLAY_TO_SERVER),
|
||||
CONFIGURE_FILTER(FilterScreenPacket.class, FilterScreenPacket::new, PLAY_TO_SERVER),
|
||||
CONFIGURE_FILTERING_AMOUNT(FilteringCountUpdatePacket.class, FilteringCountUpdatePacket::new, PLAY_TO_SERVER),
|
||||
CONFIGURE_SCROLLABLE(ScrollValueUpdatePacket.class, ScrollValueUpdatePacket::new, PLAY_TO_SERVER),
|
||||
EXTENDO_INTERACT(ExtendoGripInteractionPacket.class, ExtendoGripInteractionPacket::new, PLAY_TO_SERVER),
|
||||
CONTRAPTION_INTERACT(ContraptionInteractionPacket.class, ContraptionInteractionPacket::new, PLAY_TO_SERVER),
|
||||
CLIENT_MOTION(ClientMotionPacket.class, ClientMotionPacket::new, PLAY_TO_SERVER),
|
||||
PLACE_ARM(ArmPlacementPacket.class, ArmPlacementPacket::new, PLAY_TO_SERVER),
|
||||
MINECART_COUPLING_CREATION(CouplingCreationPacket.class, CouplingCreationPacket::new, PLAY_TO_SERVER),
|
||||
INSTANT_SCHEMATIC(InstantSchematicPacket.class, InstantSchematicPacket::new, PLAY_TO_SERVER),
|
||||
SYNC_SCHEMATIC(SchematicSyncPacket.class, SchematicSyncPacket::new, PLAY_TO_SERVER),
|
||||
LEFT_CLICK(LeftClickPacket.class, LeftClickPacket::new, PLAY_TO_SERVER),
|
||||
|
||||
// Server to Client
|
||||
SYMMETRY_EFFECT(SymmetryEffectPacket.class, SymmetryEffectPacket::new),
|
||||
SERVER_SPEED(ServerSpeedProvider.Packet.class, ServerSpeedProvider.Packet::new),
|
||||
BEAM_EFFECT(ZapperBeamPacket.class, ZapperBeamPacket::new),
|
||||
CONFIGURE_CONFIG(ConfigureConfigPacket.class, ConfigureConfigPacket::new),
|
||||
CONTRAPTION_STALL(ContraptionStallPacket.class, ContraptionStallPacket::new),
|
||||
CONTRAPTION_DISASSEMBLE(ContraptionDisassemblyPacket.class, ContraptionDisassemblyPacket::new),
|
||||
GLUE_EFFECT(GlueEffectPacket.class, GlueEffectPacket::new),
|
||||
CONTRAPTION_SEAT_MAPPING(ContraptionSeatMappingPacket.class, ContraptionSeatMappingPacket::new),
|
||||
LIMBSWING_UPDATE(LimbSwingUpdatePacket.class, LimbSwingUpdatePacket::new),
|
||||
MINECART_CONTROLLER(MinecartControllerUpdatePacket.class, MinecartControllerUpdatePacket::new),
|
||||
FLUID_SPLASH(FluidSplashPacket.class, FluidSplashPacket::new),
|
||||
CONTRAPTION_FLUID(ContraptionFluidPacket.class, ContraptionFluidPacket::new),
|
||||
GANTRY_UPDATE(GantryContraptionUpdatePacket.class, GantryContraptionUpdatePacket::new),
|
||||
SYMMETRY_EFFECT(SymmetryEffectPacket.class, SymmetryEffectPacket::new, PLAY_TO_CLIENT),
|
||||
SERVER_SPEED(ServerSpeedProvider.Packet.class, ServerSpeedProvider.Packet::new, PLAY_TO_CLIENT),
|
||||
BEAM_EFFECT(ZapperBeamPacket.class, ZapperBeamPacket::new, PLAY_TO_CLIENT),
|
||||
CONFIGURE_CONFIG(ConfigureConfigPacket.class, ConfigureConfigPacket::new, PLAY_TO_CLIENT),
|
||||
CONTRAPTION_STALL(ContraptionStallPacket.class, ContraptionStallPacket::new, PLAY_TO_CLIENT),
|
||||
CONTRAPTION_DISASSEMBLE(ContraptionDisassemblyPacket.class, ContraptionDisassemblyPacket::new, PLAY_TO_CLIENT),
|
||||
GLUE_EFFECT(GlueEffectPacket.class, GlueEffectPacket::new, PLAY_TO_CLIENT),
|
||||
CONTRAPTION_SEAT_MAPPING(ContraptionSeatMappingPacket.class, ContraptionSeatMappingPacket::new, PLAY_TO_CLIENT),
|
||||
LIMBSWING_UPDATE(LimbSwingUpdatePacket.class, LimbSwingUpdatePacket::new, PLAY_TO_CLIENT),
|
||||
MINECART_CONTROLLER(MinecartControllerUpdatePacket.class, MinecartControllerUpdatePacket::new, PLAY_TO_CLIENT),
|
||||
FLUID_SPLASH(FluidSplashPacket.class, FluidSplashPacket::new, PLAY_TO_CLIENT),
|
||||
CONTRAPTION_FLUID(ContraptionFluidPacket.class, ContraptionFluidPacket::new, PLAY_TO_CLIENT),
|
||||
GANTRY_UPDATE(GantryContraptionUpdatePacket.class, GantryContraptionUpdatePacket::new, PLAY_TO_CLIENT),
|
||||
|
||||
;
|
||||
|
||||
|
@ -90,14 +94,14 @@ public enum AllPackets {
|
|||
|
||||
private LoadedPacket<?> packet;
|
||||
|
||||
private <T extends SimplePacketBase> AllPackets(Class<T> type, Function<PacketBuffer, T> factory) {
|
||||
packet = new LoadedPacket<>(type, factory);
|
||||
private <T extends SimplePacketBase> AllPackets(Class<T> type, Function<PacketBuffer, T> factory, NetworkDirection direction) {
|
||||
packet = new LoadedPacket<>(type, factory, direction);
|
||||
}
|
||||
|
||||
public static void registerPackets() {
|
||||
channel = NetworkRegistry.ChannelBuilder.named(CHANNEL_NAME)
|
||||
.serverAcceptedVersions(s -> true)
|
||||
.clientAcceptedVersions(s -> true)
|
||||
.serverAcceptedVersions(NETWORK_VERSION::equals)
|
||||
.clientAcceptedVersions(NETWORK_VERSION::equals)
|
||||
.networkProtocolVersion(() -> NETWORK_VERSION)
|
||||
.simpleChannel();
|
||||
for (AllPackets packet : values())
|
||||
|
@ -117,16 +121,18 @@ public enum AllPackets {
|
|||
Function<PacketBuffer, T> decoder;
|
||||
BiConsumer<T, Supplier<Context>> handler;
|
||||
Class<T> type;
|
||||
NetworkDirection direction;
|
||||
|
||||
private LoadedPacket(Class<T> type, Function<PacketBuffer, T> factory) {
|
||||
private LoadedPacket(Class<T> type, Function<PacketBuffer, T> factory, NetworkDirection direction) {
|
||||
encoder = T::write;
|
||||
decoder = factory;
|
||||
handler = T::handle;
|
||||
this.type = type;
|
||||
this.direction = direction;
|
||||
}
|
||||
|
||||
private void register() {
|
||||
channel.messageBuilder(type, index++)
|
||||
channel.messageBuilder(type, index++, direction)
|
||||
.encoder(encoder)
|
||||
.decoder(decoder)
|
||||
.consumer(handler)
|
||||
|
|
|
@ -5,7 +5,6 @@ import java.io.IOException;
|
|||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
|
||||
|
@ -21,17 +20,10 @@ import net.minecraft.nbt.CompoundNBT;
|
|||
public class FilesHelper {
|
||||
|
||||
public static void createFolderIfMissing(String name) {
|
||||
Path path = Paths.get(name);
|
||||
if (path.getParent() != null)
|
||||
createFolderIfMissing(path.getParent()
|
||||
.toString());
|
||||
|
||||
if (!Files.isDirectory(path)) {
|
||||
try {
|
||||
Files.createDirectory(path);
|
||||
} catch (IOException e) {
|
||||
Create.logger.warn("Could not create Folder: " + name);
|
||||
}
|
||||
try {
|
||||
Files.createDirectories(Paths.get(name));
|
||||
} catch (IOException e) {
|
||||
Create.logger.warn("Could not create Folder: {}", name);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
package com.simibubi.create.foundation.utility;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.function.UnaryOperator;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.content.logistics.item.filter.FilterItem;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
|
||||
public final class NBTProcessors {
|
||||
|
||||
private static final Map<TileEntityType<?>, UnaryOperator<CompoundNBT>> processors = new HashMap<>();
|
||||
private static final Map<TileEntityType<?>, UnaryOperator<CompoundNBT>> survivalProcessors = new HashMap<>();
|
||||
|
||||
public static synchronized void addProcessor(TileEntityType<?> type, UnaryOperator<CompoundNBT> processor) {
|
||||
processors.put(type, processor);
|
||||
}
|
||||
|
||||
public static synchronized void addSurvivalProcessor(TileEntityType<?> type, UnaryOperator<CompoundNBT> processor) {
|
||||
survivalProcessors.put(type, processor);
|
||||
}
|
||||
|
||||
static {
|
||||
addProcessor(TileEntityType.SIGN, data -> {
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
String s = data.getString("Text" + (i + 1));
|
||||
ITextComponent textcomponent = ITextComponent.Serializer.fromJson(s.isEmpty() ? "\"\"" : s);
|
||||
if (textcomponent != null && textcomponent.getStyle() != null
|
||||
&& textcomponent.getStyle().getClickEvent() != null)
|
||||
return null;
|
||||
}
|
||||
return data;
|
||||
});
|
||||
addSurvivalProcessor(AllTileEntities.FUNNEL.get(), data -> {
|
||||
if (data.contains("Filter")) {
|
||||
ItemStack filter = ItemStack.read(data.getCompound("Filter"));
|
||||
if (filter.getItem() instanceof FilterItem)
|
||||
data.remove("Filter");
|
||||
}
|
||||
return data;
|
||||
});
|
||||
}
|
||||
|
||||
private NBTProcessors() {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static CompoundNBT process(TileEntity tileEntity, CompoundNBT compound, boolean survival) {
|
||||
if (compound == null)
|
||||
return null;
|
||||
TileEntityType<?> type = tileEntity.getType();
|
||||
if (survival && survivalProcessors.containsKey(type))
|
||||
compound = survivalProcessors.get(type).apply(compound);
|
||||
if (processors.containsKey(type))
|
||||
return processors.get(type).apply(compound);
|
||||
if (tileEntity.onlyOpsCanSetNbt())
|
||||
return null;
|
||||
return compound;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,5 +1,4 @@
|
|||
{
|
||||
|
||||
"_": "->------------------------] Game Elements [------------------------<-",
|
||||
|
||||
"block.create.acacia_window": "Fenêtre en acacia",
|
||||
|
@ -8,49 +7,88 @@
|
|||
"block.create.adjustable_pulse_repeater": "Répéteur d'impulsions réglable",
|
||||
"block.create.adjustable_repeater": "Répéteur réglable",
|
||||
"block.create.analog_lever": "Levier analogique",
|
||||
"block.create.andesite_belt_funnel": "Entonnoir en andésite pour tapis roulant",
|
||||
"block.create.andesite_bricks": "Briques d'andésite",
|
||||
"block.create.andesite_bricks_slab": "Dalle en briques d'andésite",
|
||||
"block.create.andesite_bricks_stairs": "Escalier en briques d'andésite",
|
||||
"block.create.andesite_bricks_wall": "Mur en briques d'andésite",
|
||||
"block.create.andesite_casing": "Boîtier en andésite",
|
||||
"block.create.andesite_casing": "Revêtement en andésite",
|
||||
"block.create.andesite_cobblestone": "Pierres d'andésite",
|
||||
"block.create.andesite_cobblestone_slab": "Dalles en pierres d'andésite",
|
||||
"block.create.andesite_cobblestone_stairs": "Escaliers en pierres d'andésite",
|
||||
"block.create.andesite_cobblestone_wall": "Mur en pierres d'andésite",
|
||||
"block.create.andesite_encased_shaft": "Arbre mécanique dans un revêtement en andésite",
|
||||
"block.create.andesite_encased_shaft": "Rotor dans un revêtement en andésite",
|
||||
"block.create.andesite_funnel": "Entonnoir en andésite",
|
||||
"block.create.andesite_pillar": "Pilier en andésite",
|
||||
"block.create.andesite_tunnel": "Tunnel en andésite",
|
||||
"block.create.basin": "Bassin",
|
||||
"block.create.belt": "Tapis roulant",
|
||||
"block.create.birch_window": "Fenêtre en bouleau",
|
||||
"block.create.brass_casing": "Boîtier en laiton",
|
||||
"block.create.birch_window_pane": "Vitre en bouleau",
|
||||
"block.create.black_sail": "Voile noire",
|
||||
"block.create.black_seat": "Siège noir",
|
||||
"block.create.black_valve_handle": "Vanne noire",
|
||||
"block.create.blaze_burner": "Brûleur à blaze",
|
||||
"block.create.blue_sail": "Voile bleue",
|
||||
"block.create.blue_seat": "Siège bleu",
|
||||
"block.create.blue_valve_handle": "Vanne bleue",
|
||||
"block.create.brass_belt_funnel": "Entonnoir en laiton pour tapis roulant",
|
||||
"block.create.brass_block": "Bloc de laiton",
|
||||
"block.create.brass_casing": "Revêtement en laiton",
|
||||
"block.create.brass_encased_shaft": "Rotor dans un revêtement en laiton",
|
||||
"block.create.brass_funnel": "Entonnoir en laiton",
|
||||
"block.create.brass_tunnel": "Tunnel en laiton",
|
||||
"block.create.brown_sail": "Voile brune",
|
||||
"block.create.brown_seat": "Siège brun",
|
||||
"block.create.brown_valve_handle": "Vanne brune",
|
||||
"block.create.cart_assembler": "Assembleur de wagon",
|
||||
"block.create.chiseled_dark_scoria": "Scoria sombre taillé",
|
||||
"block.create.chiseled_dolomite": "Dolomite taillée",
|
||||
"block.create.chiseled_gabbro": "Gabbro taillé",
|
||||
"block.create.chiseled_limestone": "Calcaire taillé",
|
||||
"block.create.chiseled_scoria": "Scoria taillé",
|
||||
"block.create.chiseled_weathered_limestone": "Calcaire altéré taillé",
|
||||
"block.create.chocolate": "Chocolat",
|
||||
"block.create.chute": "Glissière",
|
||||
"block.create.clockwork_bearing": "Roulement mécanique horloger",
|
||||
"block.create.clutch": "Embrayage",
|
||||
"block.create.cogwheel": "Roue dentée",
|
||||
"block.create.content_observer": "Observateur de contenu",
|
||||
"block.create.controller_rail": "Rails controlleurs",
|
||||
"block.create.copper_block": "Bloc de cuivre",
|
||||
"block.create.copper_casing": "Boîtier en cuivre",
|
||||
"block.create.copper_casing": "Revêtement en cuivre",
|
||||
"block.create.copper_ore": "Minerai de cuivre",
|
||||
"block.create.copper_shingles": "Bardeaux de cuivre",
|
||||
"block.create.copper_tiles": "Tuiles en cuivre",
|
||||
"block.create.copper_valve_handle": "Vanne en cuivre",
|
||||
"block.create.creative_crate": "Créateur de schémacanon",
|
||||
"block.create.creative_fluid_tank": "Réservoir créatif",
|
||||
"block.create.creative_motor": "Moteur",
|
||||
"block.create.crushing_wheel": "Roue de concassage",
|
||||
"block.create.crushing_wheel_controller": "Contrôleur de roue de concassage",
|
||||
"block.create.cuckoo_clock": "Horloge à coucou",
|
||||
"block.create.cyan_sail": "Voile cyan",
|
||||
"block.create.cyan_seat": "Siège cyan",
|
||||
"block.create.cyan_valve_handle": "Vanne cyan",
|
||||
"block.create.dark_oak_window": "fenêtre en chêne sombre",
|
||||
"block.create.dark_oak_window_pane": "Vitre en chêne sombre",
|
||||
"block.create.dark_scoria": "Scorie sombre",
|
||||
"block.create.dark_scoria_bricks": "Briques de scorie sombre",
|
||||
"block.create.dark_scoria_bricks_slab": "Dalles de briques de scorie sombre",
|
||||
"block.create.dark_scoria_bricks_stairs": "Escaliers de briques de scorie sombre",
|
||||
"block.create.dark_scoria_bricks_wall": "Muret de briques de scorie sombre",
|
||||
"block.create.dark_scoria_cobblestone": "Pierres de scorie sombre",
|
||||
"block.create.deployer": "Déployeur",
|
||||
"block.create.depot": "Dépot",
|
||||
"block.create.diorite_bricks": "Briques de diorite",
|
||||
"block.create.dolomite": "Dolomie",
|
||||
"block.create.dolomite_bricks": "Briques de dolomie",
|
||||
"block.create.dolomite_bricks_slab": "Dalle de briques de dolomie",
|
||||
"block.create.dolomite_bricks_stairs": "Escaliers de briques de dolomie",
|
||||
"block.create.dolomite_bricks_wall": "Muret de briques de dolomie",
|
||||
"block.create.dolomite_pillar": "Pillier de dolomie",
|
||||
"block.create.encased_fan": "Ventilateur enfermé",
|
||||
"block.create.dolomite": "Dolomite",
|
||||
"block.create.dolomite_bricks": "Briques de dolomite",
|
||||
"block.create.dolomite_bricks_slab": "Dalle de briques de dolomite",
|
||||
"block.create.dolomite_bricks_stairs": "Escaliers de briques de dolomite",
|
||||
"block.create.dolomite_bricks_wall": "Muret de briques de dolomite",
|
||||
"block.create.dolomite_pillar": "Pillier de dolomite",
|
||||
"block.create.encased_chain_drive": "Chaine de transmission",
|
||||
"block.create.encased_fan": "Ventilateur enchâssé",
|
||||
"block.create.flywheel": "Volant d'inertie",
|
||||
"block.create.framed_glass": "Grande fenêtre en verre",
|
||||
"block.create.framed_glass_pane": "Grande vitre encadrée",
|
||||
|
@ -85,23 +123,23 @@
|
|||
"block.create.mechanical_saw": "Scie mécanique",
|
||||
"block.create.natural_scoria": "Scorie naturelle",
|
||||
"block.create.nozzle": "Buse",
|
||||
"block.create.piston_extension_pole": "Pôle d'extension de piston",
|
||||
"block.create.piston_extension_pole": "Barre d'extension de piston",
|
||||
"block.create.polished_dark_scoria": "Scorie sombre polie",
|
||||
"block.create.polished_dolomite": "Dolomie polie",
|
||||
"block.create.polished_dolomite": "Dolomite polie",
|
||||
"block.create.polished_gabbro": "Gabbro poli",
|
||||
"block.create.polished_limestone": "Calcaire poli",
|
||||
"block.create.polished_limestone_slab": "Dalle de calcaire polie",
|
||||
"block.create.polished_scoria": "Scorie polie",
|
||||
"block.create.polished_scoria_slab": "Dalle de scorie polie",
|
||||
"block.create.polished_weathered_limestone": "Calcaire patinées polies",
|
||||
"block.create.polished_weathered_limestone_slab": "Dalle de calcaire patinées",
|
||||
"block.create.polished_weathered_limestone": "Calcaire altéré polies",
|
||||
"block.create.polished_weathered_limestone_slab": "Dalle de calcaire altéré",
|
||||
"block.create.portable_storage_interface": "Interface de stockage portable",
|
||||
"block.create.powered_latch": "Verrou alimenté",
|
||||
"block.create.powered_toggle_latch": "Verrou alimenté à bascule",
|
||||
"block.create.pulley_magnet": "Aimant de poulie",
|
||||
"block.create.pulse_repeater": "Répéteur d'impulsions",
|
||||
"block.create.radial_chassis": "Châssis radial",
|
||||
"block.create.redstone_contact": "redstone_contact Redstone",
|
||||
"block.create.redstone_contact": "Contact de redstone",
|
||||
"block.create.redstone_link": "Liaison Redstone",
|
||||
"block.create.rope": "Corde",
|
||||
"block.create.rope_pulley": "Poulie à corde",
|
||||
|
@ -112,7 +150,7 @@
|
|||
"block.create.scoria_bricks": "Briques de scorie",
|
||||
"block.create.scoria_pillar": "Pillier de scorie",
|
||||
"block.create.sequenced_gearshift": "Décaleur de rotation séquencé",
|
||||
"block.create.shaft": "Arbre mécanique",
|
||||
"block.create.shaft": "Rotor",
|
||||
"block.create.speedometer": "Compteur de vitesse",
|
||||
"block.create.sticky_mechanical_piston": "Piston mécanique collant",
|
||||
"block.create.stockpile_switch": "Détecteur de stockage",
|
||||
|
@ -123,12 +161,12 @@
|
|||
"block.create.vertical_framed_glass": "Fenêtre en verre verticale",
|
||||
"block.create.vertical_framed_glass_pane": "Vitre encadrée verticale",
|
||||
"block.create.water_wheel": "Roue à eau",
|
||||
"block.create.weathered_limestone": "Calcaire patinées",
|
||||
"block.create.weathered_limestone_bricks": "Briques de calcaire patinées",
|
||||
"block.create.weathered_limestone_bricks_slab": "Dalle de briques de calcaire patinées",
|
||||
"block.create.weathered_limestone_bricks_stairs": "Escaliers de briques de calcaire patinées",
|
||||
"block.create.weathered_limestone_bricks_wall": "Muret de briques de calcaire patinées",
|
||||
"block.create.weathered_limestone_pillar": "Pillier de calcaire patinées",
|
||||
"block.create.weathered_limestone": "Calcaire altéré",
|
||||
"block.create.weathered_limestone_bricks": "Briques de Calcaire altéré",
|
||||
"block.create.weathered_limestone_bricks_slab": "Dalle de briques de Calcaire altéré",
|
||||
"block.create.weathered_limestone_bricks_stairs": "Escaliers de briques de Calcaire altéré",
|
||||
"block.create.weathered_limestone_bricks_wall": "Muret de briques de Calcaire altéré",
|
||||
"block.create.weathered_limestone_pillar": "Pillier de Calcaire altéré",
|
||||
"block.create.zinc_block": "Bloc de zinc",
|
||||
"block.create.zinc_ore": "Minerai de zinc",
|
||||
|
||||
|
@ -203,7 +241,7 @@
|
|||
"item.create.schematic_and_quill": "Schéma et plume",
|
||||
"item.create.shadow_steel": "Acier sombre",
|
||||
"item.create.super_glue": "Colle extra-forte",
|
||||
"item.create.tree_fertilizer": "Engrais pour arbre",
|
||||
"item.create.tree_fertilizer": "Engrais pour arbres",
|
||||
"item.create.vertical_gearbox": "Boîte de transfert verticale",
|
||||
"item.create.wand_of_symmetry": "Bâton de symétrie",
|
||||
"item.create.wheat_flour": "Farine",
|
||||
|
@ -220,7 +258,7 @@
|
|||
"advancement.create.andesite_alloy.desc": "Certains matériaux de Create ont des noms bizzares; l'alliage d'andésite est l'un d'entre eux.",
|
||||
"advancement.create.its_alive": "Ça bouge!",
|
||||
"advancement.create.its_alive.desc": "Regardez vos bremiers composants tourner.",
|
||||
"advancement.create.shifting_gears": "Arbre de transmission",
|
||||
"advancement.create.shifting_gears": "rotor de transmission",
|
||||
"advancement.create.shifting_gears.desc": "Connectez une roue dentée à une grande roue dentée afin de changer la vitesse de votre engin",
|
||||
"advancement.create.overstressed": "Surtension",
|
||||
"advancement.create.overstressed.desc": "Testez d'abord les limites de la force mécanique",
|
||||
|
@ -237,7 +275,7 @@
|
|||
"itemGroup.create.base": "Create",
|
||||
"itemGroup.create.palettes": "Create Palettes",
|
||||
|
||||
"death.attack.create.crush": "%1$s nanana a été traitée par une roue de concassage",
|
||||
"death.attack.create.crush": "%1$s a été concassé.e",
|
||||
"death.attack.create.fan_fire": "%1$s a été brûlé à mort par l'air chaud",
|
||||
"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",
|
||||
|
@ -365,10 +403,10 @@
|
|||
"create.contraptions.movement_mode": "Mode de mouvement",
|
||||
"create.contraptions.movement_mode.move_place": "Toujours placer à l'arrêt",
|
||||
"create.contraptions.movement_mode.move_place_returned": "Placer uniquement en position de départ",
|
||||
"create.contraptions.movement_mode.move_never_place": "Ne placer que lorsque l'ancre est détruite",
|
||||
"create.contraptions.movement_mode.move_never_place": "Ne placer que Quand l'ancre est détruite",
|
||||
"create.contraptions.movement_mode.rotate_place": "Toujours placer à l'arrêt",
|
||||
"create.contraptions.movement_mode.rotate_place_returned": "Placer uniquement près de l'angle initial",
|
||||
"create.contraptions.movement_mode.rotate_never_place": "Ne placer que lorsque l'ancre est détruite",
|
||||
"create.contraptions.movement_mode.rotate_never_place": "Ne placer que Quand l'ancre est détruite",
|
||||
|
||||
"create.logistics.filter": "Filtre",
|
||||
"create.logistics.recipe_filter": "Filtre de recettes",
|
||||
|
@ -607,7 +645,7 @@
|
|||
"create.command.killTPSCommand.status.usage.1": "[Create]: use /killtps start <tickTime> to artificially slow down the server tick",
|
||||
"create.command.killTPSCommand.argument.tickTime": "tickTime",
|
||||
|
||||
"create.subtitle.schematicannon_launch_block": "Tire de schémacanon",
|
||||
"create.subtitle.schematicannon_launch_block": "Tir de schémacanon",
|
||||
"create.subtitle.schematicannon_finish": "Fin de schémacanon",
|
||||
"create.subtitle.slime_added": "Bruit de slime",
|
||||
"create.subtitle.mechanical_press_activation": "Activation de la presse mechanique",
|
||||
|
@ -626,12 +664,12 @@
|
|||
"item.create.example_item.tooltip.behaviour1": "Donc cet objet fait ceci. (les comportements sont affichés avec shift)",
|
||||
"item.create.example_item.tooltip.condition2": "Et quand cela",
|
||||
"item.create.example_item.tooltip.behaviour2": "Vous pouvez ajouter autant de comportements que vous le souhaitez",
|
||||
"item.create.example_item.tooltip.control1": "Lorsque Ctrl enfoncé",
|
||||
"item.create.example_item.tooltip.control1": "Quand Ctrl enfoncé",
|
||||
"item.create.example_item.tooltip.action1": "Ces commandes sont affichées.",
|
||||
|
||||
"item.create.wand_of_symmetry.tooltip": "BÂTON DE SYMÉTRIE",
|
||||
"item.create.wand_of_symmetry.tooltip.summary": "Reflète parfaitement le placement des blocs sur les plans configurés.",
|
||||
"item.create.wand_of_symmetry.tooltip.condition1": "Lorsque positionné dans la barre active",
|
||||
"item.create.wand_of_symmetry.tooltip.condition1": "Quand positionné dans la barre active",
|
||||
"item.create.wand_of_symmetry.tooltip.behaviour1": "Reste actif",
|
||||
"item.create.wand_of_symmetry.tooltip.control1": "Clic droit au sol",
|
||||
"item.create.wand_of_symmetry.tooltip.action1": "_Créé_ ou _déplace_ le mirroir",
|
||||
|
@ -658,25 +696,25 @@
|
|||
"item.create.handheld_worldshaper.tooltip.control3": "Clic droit en étant accroupi",
|
||||
"item.create.handheld_worldshaper.tooltip.action3": "Ouvre l'_interface_ _de_ _configuration_",
|
||||
|
||||
"item.create.tree_fertilizer.tooltip": "ENGRAIS POUR ARBRE",
|
||||
"item.create.tree_fertilizer.tooltip.summary": "Une puissante combinaison de minéraux adaptée pour accélérer la croissance des types d'arbres communs.",
|
||||
"item.create.tree_fertilizer.tooltip.condition1": "Lorsqu'utilisé sur une pousse d'arbre",
|
||||
"item.create.tree_fertilizer.tooltip.behaviour1": "Fait pousser des arbres _indépendamment_ de leurs _conditions_ _d'emplacement_",
|
||||
"item.create.tree_fertilizer.tooltip": "ENGRAIS POUR ARBRES",
|
||||
"item.create.tree_fertilizer.tooltip.summary": "Une puissante combinaison de minéraux adaptée pour accélérer la croissance des types d'rotors communs.",
|
||||
"item.create.tree_fertilizer.tooltip.condition1": "Lorsqu'utilisé sur une pousse d'rotor",
|
||||
"item.create.tree_fertilizer.tooltip.behaviour1": "Fait pousser des rotors _indépendamment_ de leurs _conditions_ _d'emplacement_",
|
||||
|
||||
"item.create.deforester.tooltip": "DÉFORESTEUR",
|
||||
"item.create.deforester.tooltip.summary": "Une _hache_ _rayonnante_ capable d'abattre des arbres en une fraction de seconde.",
|
||||
"item.create.deforester.tooltip.summary": "Une _hache_ _rayonnante_ capable d'abattre des rotors en une fraction de seconde.",
|
||||
|
||||
|
||||
"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_.",
|
||||
"item.create.filter.tooltip.condition1": "Lorsque dans l'emplacement de filtre",
|
||||
"item.create.filter.tooltip.condition1": "Quand dans l'emplacement de filtre",
|
||||
"item.create.filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.",
|
||||
"item.create.filter.tooltip.condition2": "Clic droit",
|
||||
"item.create.filter.tooltip.behaviour2": "Ouvre l'_interface_ _de_ _configuration_.",
|
||||
|
||||
"item.create.attribute_filter.tooltip": "FILTRE D'ATTRIBUTS",
|
||||
"item.create.attribute_filter.tooltip.summary": "_Contrôle_ les _sorties_ et les _entrées_ de dispositifs logistiques avec plus de _précision_, en les comparant à un _ensemble_ _d'objets_ ou à plusieurs _filtres_ _imbriqués_.",
|
||||
"item.create.attribute_filter.tooltip.condition1": "Lorsque dans l'emplacement de filtre",
|
||||
"item.create.attribute_filter.tooltip.condition1": "Quand dans l'emplacement de filtre",
|
||||
"item.create.attribute_filter.tooltip.behaviour1": "_Contrôle_ le flux d'object selon sa _configuration_.",
|
||||
"item.create.attribute_filter.tooltip.condition2": "Clic droit",
|
||||
"item.create.attribute_filter.tooltip.behaviour2": "Ouvre l'_interface_ _de_ _configuration_.",
|
||||
|
@ -686,7 +724,7 @@
|
|||
|
||||
"item.create.schematic.tooltip": "SCHÉMA",
|
||||
"item.create.schematic.tooltip.summary": "Contient une structure à positionner et à placer dans le monde. Positionnez l'hologramme comme vous le souhaitez et utilisez un _schémacanon_ pour le construire.",
|
||||
"item.create.schematic.tooltip.condition1": "Lorsque tenu en main",
|
||||
"item.create.schematic.tooltip.condition1": "Quand tenu en main",
|
||||
"item.create.schematic.tooltip.behaviour1": "Peut être positionné à l'aide des outils à l'écran.",
|
||||
"item.create.schematic.tooltip.control1": "Clic droit en étant accroupi",
|
||||
"item.create.schematic.tooltip.action1": "Ouvre une _interface_ pour rentrer les _coordonées_ correctes.",
|
||||
|
@ -711,54 +749,54 @@
|
|||
|
||||
"block.create.schematic_table.tooltip": "TABLE À SCHÉMA",
|
||||
"block.create.schematic_table.tooltip.summary": "Écrit les schémas enregistrés dans un _schéma_ _vide_.",
|
||||
"block.create.schematic_table.tooltip.condition1": "Lorsque donné un schéma vide",
|
||||
"block.create.schematic_table.tooltip.condition1": "Quand donné un schéma vide",
|
||||
"block.create.schematic_table.tooltip.behaviour1": "Télécharge un fichier choisi à partir de votre dossier de schémas.",
|
||||
|
||||
"block.create.shaft.tooltip": "ARBRE MÉCANIQUE",
|
||||
"block.create.shaft.tooltip.summary": "_Relais_ la _rotation_ en ligne droite.",
|
||||
"block.create.shaft.tooltip": "ROTOR",
|
||||
"block.create.shaft.tooltip.summary": "_Relaie_ la _rotation_ en ligne droite.",
|
||||
|
||||
"block.create.cogwheel.tooltip": "ROUE DENTÉE",
|
||||
"block.create.cogwheel.tooltip.summary": "_Relais_ la _rotation_ en ligne droite, et aux _roues_ _dentées_ adjacentes.",
|
||||
"block.create.cogwheel.tooltip.summary": "_Relaie_ la _rotation_ en ligne droite, et aux _roues_ _dentées_ adjacentes.",
|
||||
|
||||
"block.create.large_cogwheel.tooltip": "GRANDE ROUE DENTÉE",
|
||||
"block.create.large_cogwheel.tooltip.summary": "Une version plus grande de la _roue_ _dentée_, permettant des _changements_ dans la _vitesse_ _de_ _rotation_ lorsqu'il est connecté à son homologue plus petit.",
|
||||
|
||||
"block.create.encased_shaft.tooltip": "ARBRE MÉCANIQUE ENBOÎTÉ",
|
||||
"block.create.encased_shaft.tooltip.summary": "_Relais_ la _rotation_ en ligne droite. Convient pour propager la rotation à travers les murs.",
|
||||
"block.create.encased_shaft.tooltip": "ROTOR ENCASTRÉ",
|
||||
"block.create.encased_shaft.tooltip.summary": "_Relaie_ la _rotation_ en ligne droite. Convient pour propager la rotation à travers les murs.",
|
||||
|
||||
"block.create.gearbox.tooltip": "BOÎTE DE VITESSES",
|
||||
"block.create.gearbox.tooltip.summary": "_Relais_ la _rotation_ dans _quatre_ _directions_. Inverse les connexions directes.",
|
||||
"block.create.gearbox.tooltip.summary": "_Relaie_ la _rotation_ dans _quatre_ _directions_. Inverse les connexions directes.",
|
||||
|
||||
"block.create.gearshift.tooltip": "DÉCALEUR DE ROTATION",
|
||||
"block.create.gearshift.tooltip.summary": "Une commande pour basculer le sens de rotation des arbres connectés.",
|
||||
"block.create.gearshift.tooltip": "BOÎTE DE VITESSES",
|
||||
"block.create.gearshift.tooltip.summary": "Une commande pour basculer le sens de rotation des rotors connectés.",
|
||||
"block.create.gearshift.tooltip.condition1": "Lorsqu'alimenté",
|
||||
"block.create.gearshift.tooltip.behaviour1": "_Inverse_ la rotation sortante.",
|
||||
|
||||
"block.create.clutch.tooltip": "EMBRAYAGE",
|
||||
"block.create.clutch.tooltip.summary": "Une commande pour engager / désengager la rotation des arbres connectés.",
|
||||
"block.create.clutch.tooltip.summary": "Une commande pour engager / désengager la rotation des rotors connectés.",
|
||||
"block.create.clutch.tooltip.condition1": "Lorsqu'alimenté",
|
||||
"block.create.clutch.tooltip.behaviour1": "_Arrête_ de transmettre la rotation de l'autre côté.",
|
||||
|
||||
|
||||
|
||||
"item.create.belt_connector.tooltip": "CONNECTEUR DE TAPIS ROULANTS",
|
||||
"item.create.belt_connector.tooltip.summary": "Connecte deux _arbres_ ou plus à un _tapis_ _roulant_ _mécanique_. Les arbres connectés auront exactement la même vitesse et le même sens de rotation. La ceinture peut agir comme un _convoyeur_ pour _objets_ et _entités_.",
|
||||
"item.create.belt_connector.tooltip.control1": "Clic droit sur arbre",
|
||||
"item.create.belt_connector.tooltip.action1": "Sélectionne l'arbre comme une poulie de la courroie. Les deux arbres sélectionnés doivent être _alignés_ soit _verticalement_, _horizontalement_, ou _diagonalement_ en direction de la courroie.",
|
||||
"item.create.belt_connector.tooltip.summary": "Connecte deux _rotors_ ou plus à un _tapis_ _roulant_ _mécanique_. Les rotors connectés auront exactement la même vitesse et le même sens de rotation. La ceinture peut agir comme un _convoyeur_ pour _objets_ et _entités_.",
|
||||
"item.create.belt_connector.tooltip.control1": "Clic droit sur rotor",
|
||||
"item.create.belt_connector.tooltip.action1": "Sélectionne le rotor comme une poulie de la courroie. Les deux rotors sélectionnés doivent être _alignés_ soit _verticalement_, _horizontalement_, ou _diagonalement_ en direction de la courroie.",
|
||||
"item.create.belt_connector.tooltip.control2": "Clic droit en étant accroupi",
|
||||
"item.create.belt_connector.tooltip.action2": "_Réinitialise_ la première position sélectionnée pour le tapis roulant.",
|
||||
|
||||
"item.create.goggles.tooltip": "LUNETTES",
|
||||
"item.create.goggles.tooltip.summary": "Une paire de lunettes pour augmenter votre vision avec des _informations_ _kinétiques_ utiles.",
|
||||
"item.create.goggles.tooltip.condition1": "Lorsque portées",
|
||||
"item.create.goggles.tooltip.condition1": "Quand portées",
|
||||
"item.create.goggles.tooltip.behaviour1": "Affiche des _indicateurs_ _colorés_ correspondants au _niveau_ _de_ _vitesse_ d'un composant cinétique placé ainsi que _l'impact_ du _stress_ et la _capacité_ des composants individuels.",
|
||||
"item.create.goggles.tooltip.condition2": "Lorsque vision portée sur une jauge",
|
||||
"item.create.goggles.tooltip.condition2": "Quand vision portée sur une jauge",
|
||||
"item.create.goggles.tooltip.behaviour2": "Affiche des informations détaillées sur la _vitesse_ ou le _stress_ du réseau auquel la jauge est connectée.",
|
||||
|
||||
"item.create.wrench.tooltip": "CLÉ",
|
||||
"item.create.wrench.tooltip.summary": "Un outil utile pour travailler sur les engins cinétiques. Peut être utilisé pour _tourner_, _démonter_ et _configurer_ les composants.",
|
||||
"item.create.wrench.tooltip.control1": "Clic droit a kinetic block",
|
||||
"item.create.wrench.tooltip.action1": "_Tourne_ les _composents_ proche ou loin de la face avec lequel vous avez interagi.",
|
||||
"item.create.wrench.tooltip.control1": "Clic droit sur un bloc de Create",
|
||||
"item.create.wrench.tooltip.action1": "_Tourne_ le _composant_ le long de l'axe dépendant de la face avec lequel vous avez interagi.",
|
||||
"item.create.wrench.tooltip.control2": "Clic droit en étant accroupi",
|
||||
"item.create.wrench.tooltip.action2": "_Démonte_ les _composants_ _cinétiques_ et les replace dans _votre_ _inventaire_.",
|
||||
|
||||
|
@ -768,17 +806,17 @@
|
|||
"block.create.water_wheel.tooltip": "ROUE À EAU",
|
||||
"block.create.water_wheel.tooltip.summary": "Fournit une _force_ _de_ _rotation_ provenant de _courants_ _d'eau_ adjacents.",
|
||||
|
||||
"block.create.encased_fan.tooltip": "VENTILATEUR ENFERMÉ",
|
||||
"block.create.encased_fan.tooltip": "VENTILATEUR ENCHÂSSÉ",
|
||||
"block.create.encased_fan.tooltip.summary": "Convertit _force_ _de_ _rotation_ en _courants_ _d'air_ et inversement. A une variété d'utilisations.",
|
||||
"block.create.encased_fan.tooltip.condition1": "Lorsqu'alimenté par de la redstone",
|
||||
"block.create.encased_fan.tooltip.behaviour1": "Fournit _force_ _de_ _rotation_ à partir de toute _source_ _de_ _chaleur_ immédiatement en dessous de lui. Le ventilateur doit être tourné vers le bas.",
|
||||
"block.create.encased_fan.tooltip.condition2": "Lorsque tourné",
|
||||
"block.create.encased_fan.tooltip.condition2": "Quand tourné",
|
||||
"block.create.encased_fan.tooltip.behaviour2": "_Pousse_ ou _tire_ les entités, selon la vitesse de rotation entrante.",
|
||||
"block.create.encased_fan.tooltip.condition3": "Lorsque souffle à travers des blocs spéciaux",
|
||||
"block.create.encased_fan.tooltip.condition3": "Quand souffle à travers des blocs spéciaux",
|
||||
"block.create.encased_fan.tooltip.behaviour3": "Des particules de _liquides_ et de _feu_ sont émises dans le flux d'air. Cela peut être utilisé pour _traiter_ des _objets_.",
|
||||
|
||||
"block.create.nozzle.tooltip": "BUSE",
|
||||
"block.create.nozzle.tooltip.summary": "Attachez-le à l'avant d'un _ventilateur_ _enfermé_ pour répartir son effet sur les entités dans _toutes_ les _directions_.",
|
||||
"block.create.nozzle.tooltip.summary": "Attachez-le à l'avant d'un _ventilateur_ enchâssé_ pour répartir son effet sur les entités dans _toutes_ les _directions_.",
|
||||
|
||||
"block.create.hand_crank.tooltip": "MANIVELLE",
|
||||
"block.create.hand_crank.tooltip.summary": "Une simple _source_ de _force_ _de_ _rotation_ qui nécessite l'interaction des joueurs.",
|
||||
|
@ -787,16 +825,16 @@
|
|||
|
||||
"block.create.cuckoo_clock.tooltip": "COUCOU",
|
||||
"block.create.cuckoo_clock.tooltip.summary": "Un bel artisanat pour _décorer_ un espace et _garder_ la _notion_ _du_ _temps_.",
|
||||
"block.create.cuckoo_clock.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.cuckoo_clock.tooltip.condition1": "Quand tourné",
|
||||
"block.create.cuckoo_clock.tooltip.behaviour1": "Affiche le _temps_ _présent_ et joue une mélodie deux fois par jour. _S'active_ une fois le _midi_ et une fois au crépuscule, dès que les _joueurs_ _peuvent_ _dormir_.",
|
||||
|
||||
"block.create.turntable.tooltip": "PLAQUE TOURNANTE",
|
||||
"block.create.turntable.tooltip.summary": "Transforme la _force_ _de_ _rotation_ en une nausée.",
|
||||
"block.create.turntable.tooltip.summary": "Transforme la _force_ _de_ _rotation_ en énergie cinétique.",
|
||||
|
||||
|
||||
"block.create.crushing_wheel.tooltip": "ROUE DE CONCASSAGE",
|
||||
"block.create.crushing_wheel.tooltip.summary": "Grandes roues rotatives qui _cassent_ n'importe quoi.",
|
||||
"block.create.crushing_wheel.tooltip.condition1": "Lorsque fixé à une autre roue de concassage",
|
||||
"block.create.crushing_wheel.tooltip.condition1": "Quand fixé à une autre roue de concassage",
|
||||
"block.create.crushing_wheel.tooltip.behaviour1": "Forme une machine de concassage pour traiter une variété de choses. Les dents des roues doivent se connecter et se déplacer avec la _même_ _vitesse_ dans des _directions_ _opposées_.",
|
||||
|
||||
"block.create.mechanical_press.tooltip": "PRESSE MÉCANIQUE",
|
||||
|
@ -814,11 +852,11 @@
|
|||
"block.create.mechanical_mixer.tooltip": "MIXEUR MÉCANIQUE",
|
||||
"block.create.mechanical_mixer.tooltip.summary": "Un fouet cinétique pour appliquer toutes les recettes d'artisanat informes aux objets en dessous. Nécessite une _force_ _de_ _rotation_ constant et un _bassin_ placé en dessous (avec un espace entre les deux).",
|
||||
"block.create.mechanical_mixer.tooltip.condition1": "Lorsqu'au-dessus d'un bassin",
|
||||
"block.create.mechanical_mixer.tooltip.behaviour1": "Commence à mélanger les objets dans le bassin lorsque tous les ingrédients nécessaires sont présents.",
|
||||
"block.create.mechanical_mixer.tooltip.behaviour1": "Commence à mélanger les objets dans le bassin Quand tous les ingrédients nécessaires sont présents.",
|
||||
|
||||
"block.create.mechanical_crafter.tooltip": "ÉTABLI MÉCANIQUE",
|
||||
"block.create.mechanical_crafter.tooltip.summary": "Un assembleur cinétique pour _automatiser_ n'importe quelle recette _en_ _forme_. Placez-en _plusieurs_ _dans_ _une_ _grille_ correspondant à votre recette, et _arrangez_ _leurs_ _tapis_ _roulant_ pour créer un _flux_ qui sort de la grille sur l'un des établis.",
|
||||
"block.create.mechanical_crafter.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.mechanical_crafter.tooltip.condition1": "Quand tourné",
|
||||
"block.create.mechanical_crafter.tooltip.behaviour1": "_Démarre_ _le_ _processus_ _d'artisanat_ dès que _tous_ les _établis_ dans la grille ont _reçu_ _un_ _objet_.",
|
||||
"block.create.mechanical_crafter.tooltip.control1": "Lorsqu'utilisation de la clé à l'avant",
|
||||
"block.create.mechanical_crafter.tooltip.action1": "_Fait_ _défiler_ _la_ _direction_ dans laquelle un établi individuel _déplace_ _ses_ _objets_. Pour former une grille de travail, disposer les _tapis_ _roulants_ _dans_ _un_ _flux_ qui déplace tous les articles vers un établi final. Le dernier artisan doit _pointer_ _autrepart_ de la grille.",
|
||||
|
@ -838,7 +876,7 @@
|
|||
"block.create.portable_storage_interface.tooltip": "INTERFACE DE STOCKAGE PORTABLE",
|
||||
"block.create.portable_storage_interface.tooltip.summary": "Un point d'échange portable pour _déplacer_ des _objets_ vers et depuis une _structure_ déplacée par un piston, un roulement, un chariot ou une poulie.",
|
||||
"block.create.portable_storage_interface.tooltip.condition1": "Lorsqu'en mouvement",
|
||||
"block.create.portable_storage_interface.tooltip.behaviour1": "Interagit avec les _transposeurs_ stationnaires de sorte que les transposeurs faisant _face_ _autrepart_ de l'interface tirent les objets, et les transposeurs ciblant l'interface y _insereront_ les _objets_ de l'inventaire joint. L'engin se bloquera brièvement lorsque les objets seront échangés.",
|
||||
"block.create.portable_storage_interface.tooltip.behaviour1": "Interagit avec les _transposeurs_ stationnaires de sorte que les transposeurs faisant _face_ _autrepart_ de l'interface tirent les objets, et les transposeurs ciblant l'interface y _insereront_ les _objets_ de l'inventaire joint. L'engin se bloquera brièvement Quand les objets seront échangés.",
|
||||
|
||||
|
||||
"block.create.rotation_speed_controller.tooltip": "CONTRÔLEUR DE VITESSE DE ROTATION",
|
||||
|
@ -848,17 +886,17 @@
|
|||
|
||||
"block.create.mechanical_piston.tooltip": "PISTON MÉCANIQUE",
|
||||
"block.create.mechanical_piston.tooltip.summary": "Une version plus avancée du _piston_. Il utilise une _force_ _de_ rotation_ pour déplacer précisément les structures attachées. Les _pôles_ _d'extension_ _de_ _piston_ à l'arrière définissent la _portée_ de cet appareil. Sans extensions, le piston ne bougera pas. Utilisez un _châssis_ ou un _bloc_ _de_ slime_ pour déplacer plus d'une seule ligne de blocs.",
|
||||
"block.create.mechanical_piston.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.mechanical_piston.tooltip.condition1": "Quand tourné",
|
||||
"block.create.mechanical_piston.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.",
|
||||
|
||||
"block.create.piston_extension_pole.tooltip": "PÔLE DE PISTON",
|
||||
"block.create.piston_extension_pole.tooltip": "BARRE DE PISTON",
|
||||
"block.create.piston_extension_pole.tooltip.summary": "Étend la portée des _pistons_ _mécaniques.",
|
||||
"block.create.piston_extension_pole.tooltip.condition1": "Lorsqu'attaché à un piston mécanique",
|
||||
"block.create.piston_extension_pole.tooltip.behaviour1": "Étend la portée du _piston_ d'un bloc",
|
||||
|
||||
"block.create.mechanical_bearing.tooltip": "ROULEMENT MÉCANIQUE",
|
||||
"block.create.mechanical_bearing.tooltip.summary": "Utilisé pour faire tourner de _plus_ _grande_ _structures_ ou pour exploiter une _force_ _de_ rotation_ contre le vent.",
|
||||
"block.create.mechanical_bearing.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.mechanical_bearing.tooltip.condition1": "Quand tourné",
|
||||
"block.create.mechanical_bearing.tooltip.behaviour1": "Démarre les blocs attachés en rotation. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.",
|
||||
|
||||
|
||||
|
@ -866,48 +904,50 @@
|
|||
|
||||
"block.create.clockwork_bearing.tooltip": "ROULEMENT MÉCANIQUE HORLOGER",
|
||||
"block.create.clockwork_bearing.tooltip.summary": "Une version avancée du _roulement_ _mécanique_ pour faire tourner jusqu'à deux _aiguilles_ _d'horloge_ en fonction du _temps_ _en-jeu_ actuel.",
|
||||
"block.create.clockwork_bearing.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.clockwork_bearing.tooltip.condition1": "Quand tourné",
|
||||
"block.create.clockwork_bearing.tooltip.behaviour1": "Commence la rotation de la structure attachée vers l'_heure_ _actuelle_. Si une seconde structure est présente, elle servira _d'aiguille_ _des_ _minutes_.",
|
||||
|
||||
"block.create.sequenced_gearshift.tooltip": "DÉCALEUR DE ROTATION SÉQUENCÉ",
|
||||
"block.create.sequenced_gearshift.tooltip": "BOÎITE À VITESSES SÉQUENCÉE",
|
||||
"block.create.sequenced_gearshift.tooltip.summary": "Un _composant_ _utilitaire_ _programmable_, qui peut changer son _débit_ _de_ _rotation_ suivant jusqu'à _5_ _instructions_ _consécutives_. Utilisez-le pour alimenter des roulements mécaniques, des pistons ou des poulies avec plus de contrôle sur le timing et la vitesse. Peut devenir moins précis à des vitesses plus élevées.",
|
||||
"block.create.sequenced_gearshift.tooltip.condition1": "Lorsqu'alimenté par de la redstone",
|
||||
"block.create.sequenced_gearshift.tooltip.behaviour1": "_Commence_ _à_ _exécuter_ les instructions programmées en fonction de la vitesse d'entrée.",
|
||||
"block.create.sequenced_gearshift.tooltip.condition2": "Clic droit",
|
||||
"block.create.sequenced_gearshift.tooltip.behaviour2": "Ouvre _l'interface_ _de_ _configuration_",
|
||||
|
||||
"block.create.cart_assembler.tooltip": "ASSEMBLEUR DE CHARIOT",
|
||||
"block.create.cart_assembler.tooltip.summary": "Monte une structure connectée sur un _chariot_ _passant_.",
|
||||
"block.create.cart_assembler.tooltip": "ASSEMBLEUR DE WAGON",
|
||||
"block.create.cart_assembler.tooltip.summary": "Monte une structure connectée sur un _wagon_ _passant_.",
|
||||
"block.create.cart_assembler.tooltip.condition1": "Lorsqu'alimenté par de la redstone",
|
||||
"block.create.cart_assembler.tooltip.behaviour1": "_Démonte_ les structures montées un _chariot_ _passant_ et les remet dans le monde.",
|
||||
"block.create.cart_assembler.tooltip.behaviour1": "_Démonte_ les structures montées un _wagon passant_ et les remet dans le monde.",
|
||||
|
||||
"block.create.rope_pulley.tooltip": "POULIE DE CORDE",
|
||||
"block.create.rope_pulley.tooltip": "POULIE",
|
||||
"block.create.rope_pulley.tooltip.summary": "Déplace les _blocs_ et _structures_ attachés _verticalement_. Utilisez un _châssis_ ou _bloc_ _de_ _slime_ pour déplacer plus d'un seul bloc.",
|
||||
"block.create.rope_pulley.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.rope_pulley.tooltip.condition1": "Quand tourné",
|
||||
"block.create.rope_pulley.tooltip.behaviour1": "Commence à déplacer la structure attachée. La vitesse et la direction sont corrélées à la vitesse de rotation entrante.",
|
||||
|
||||
"block.create.linear_chassis.tooltip": "CHÂSSIS DE TRADUCTION",
|
||||
"block.create.linear_chassis.tooltip": "CHÂSSIS LINÉAIRE",
|
||||
"block.create.linear_chassis.tooltip.summary": "Un bloc de base configurable reliant les structures pour le mouvement.",
|
||||
"block.create.linear_chassis.tooltip.condition1": "Lorsque déplacé",
|
||||
"block.create.linear_chassis.tooltip.condition1": "Quand déplacé",
|
||||
"block.create.linear_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ avec la même orientation, et une colonne de blocs dans sa portée. Les blocs ne seront tirés que si la face du châssis est _collante_ (Voir [Ctrl]).",
|
||||
"block.create.linear_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé",
|
||||
"block.create.linear_chassis.tooltip.behaviour2": "Configurez la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la plage de tous les blocs de châssis connectés.",
|
||||
"block.create.linear_chassis.tooltip.control1": "Clic droit avec une boule de slime",
|
||||
"block.create.linear_chassis.tooltip.action1": "Rends la face _collante_. Lorsque déplace, le châssis va _tirer_ les blocs attachés, quelle que soit la direction du mouvement.",
|
||||
"block.create.linear_chassis.tooltip.action1": "Rend la face _collante_. Quand déplacé, le châssis va _tirer_ les blocs attachés, quelle que soit la direction du mouvement.",
|
||||
|
||||
"block.create.secondary_linear_chassis.tooltip": "CHÂSSIS LINÉAIRE SECONDAIRE",
|
||||
"block.create.secondary_linear_chassis.tooltip.summary": "Un deuxième type de _châssis linéaire_ qui ne se connecte pas au premier.",
|
||||
|
||||
"block.create.radial_chassis.tooltip": "CHÂSSIS DE ROTATION",
|
||||
"block.create.radial_chassis.tooltip.summary": "Un bloc de base configurable reliant les structures pour le mouvement.",
|
||||
"block.create.radial_chassis.tooltip.condition1": "Lorsque déplacé",
|
||||
"block.create.radial_chassis.tooltip.condition1": "Quand déplacé",
|
||||
"block.create.radial_chassis.tooltip.behaviour1": "_Déplace_ tous les _châssis_ _attachés_ en colonne, et un cylindre de blocs autour de lui. Les blocs qui l'entourent ne sont déplacés que lorsqu'ils sont à portée et attachés à un côté collant (voir [Ctrl]).",
|
||||
"block.create.radial_chassis.tooltip.condition2": "Lorsqu'utilisé avec une clé",
|
||||
"block.create.radial_chassis.tooltip.behaviour2": "Configure la _portée_ pour ce bloc de châssis. Maintenez CTRL pour modifier également la portée de tous les blocs de châssis connectés.",
|
||||
"block.create.radial_chassis.tooltip.control1": "Clic droit avec une boule de slime",
|
||||
"block.create.radial_chassis.tooltip.action1": "Rend la face _collante_. Lorsque le châssis se déplace, tous les blocs désignés attachés au côté collant sont déplacés avec lui.",
|
||||
"block.create.radial_chassis.tooltip.action1": "Rend la face _collante_. Quand le châssis se déplace, tous les blocs désignés attachés au côté collant sont déplacés avec lui.",
|
||||
|
||||
"block.create.mechanical_drill.tooltip": "PERCEUSE MÉCANIQUE",
|
||||
"block.create.mechanical_drill.tooltip.summary": "Un dispositif mécanique adapté pour _casser_ les _blocs_. Il est déplaceable avec _pistons_ _mécaniques_ ou _roulements_.",
|
||||
"block.create.mechanical_drill.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.mechanical_drill.tooltip.condition1": "Quand tourné",
|
||||
"block.create.mechanical_drill.tooltip.behaviour1": "Agit comme un casseur de bloc _stationnaire_. Inflige aussi des _dégats_ aux _entités_ se situant dans sa zone effective.",
|
||||
"block.create.mechanical_drill.tooltip.condition2": "Lorsqu'en mouvement",
|
||||
"block.create.mechanical_drill.tooltip.behaviour2": "Casse les blocs avec lesquels la perceuse entre en collision.",
|
||||
|
@ -917,38 +957,44 @@
|
|||
"block.create.mechanical_harvester.tooltip.condition1": "Lorsqu'en mouvement",
|
||||
"block.create.mechanical_harvester.tooltip.behaviour1": "_Récolte_ toutes les _cultures_ _matures_ que la lame entre en touche et les remet à leur état de croissance initial.",
|
||||
|
||||
"block.create.mechanical_plough.tooltip": "CHARRUE MÉCANIQUE",
|
||||
"block.create.mechanical_plough.tooltip.summary": "Une charrue mécanique a divers usages. Elle peut être déplacée à l'aide de _pistons mécaniques_, de _roulements_ ou d'autres dispositifs de commande.",
|
||||
"block.create.mechanical_plough.tooltip.condition1": "Lorsqu’en mouvement",
|
||||
"block.create.mechanical_plough.tooltip.behaviour1": "_Casse les blocs_ avec lesquels _on ne peut pas entrer en collision_, tels que les torches, les sentiers ou les couches de neige. _Applique_ son _mouvement_ aux _entités_ sans les blesser. _Bêche les blocs de terre_ comme si une houe était utilisée sur ceux-ci.",
|
||||
|
||||
"block.create.mechanical_saw.tooltip": "SCIE MÉCANIQUE",
|
||||
"block.create.mechanical_saw.tooltip.summary": "Convient pour _couper_ des _arbres_ efficacement et pour _tailler_ des _blocs_ dans leurs homologues menuisés. Il est déplaceable à l'aide de _pistons_ _mécaniques_ ou _roulements_.",
|
||||
"block.create.mechanical_saw.tooltip.condition1": "Lorsque tourné vers le haut",
|
||||
"block.create.mechanical_saw.tooltip.behaviour1": "Applique les _recettes_ de _sciage_ et de _taillerie_ aux éléments jetés ou insérés dedans. Lorsque plusieurs sorties sont possibles, il les parcourt à moins qu'un _filtre_ ne soit affecté.",
|
||||
"block.create.mechanical_saw.tooltip.summary": "Convient pour _couper_ des _rotors_ efficacement et pour _tailler_ des _blocs_ dans leurs homologues menuisés. Il est déplaceable à l'aide de _pistons_ _mécaniques_ ou _roulements_.",
|
||||
"block.create.mechanical_saw.tooltip.condition1": "Quand tourné vers le haut",
|
||||
"block.create.mechanical_saw.tooltip.behaviour1": "Applique les _recettes_ de _sciage_ et de _taillerie_ aux éléments jetés ou insérés dedans. Quand plusieurs sorties sont possibles, il les parcourt à moins qu'un _filtre_ ne soit affecté.",
|
||||
"block.create.mechanical_saw.tooltip.condition2": "Lorsqu'à l'horizontal",
|
||||
"block.create.mechanical_saw.tooltip.behaviour2": "_Casse_ les _troncs_ devant elle. Si le tronc a supportait un arbre, _l'arbre_ _tombera_ loin de la scie.",
|
||||
"block.create.mechanical_saw.tooltip.behaviour2": "_Casse_ les _troncs_ devant elle. Si le tronc a supportait un rotor, _le rotor_ _tombera_ loin de la scie.",
|
||||
"block.create.mechanical_saw.tooltip.condition3": "Lorsqu'en mouvement",
|
||||
"block.create.mechanical_saw.tooltip.behaviour3": "_Coupe_ tous les _arbres_ avec lesquels la scie entre en collision.",
|
||||
"block.create.mechanical_saw.tooltip.behaviour3": "_Coupe_ tous les _rotors_ avec lesquels la scie entre en collision.",
|
||||
|
||||
"block.create.stockpile_switch.tooltip": "DÉTÉCTEUR DE STOCKAGE",
|
||||
"block.create.stockpile_switch.tooltip.summary": "Bascule un signal Redstone basé sur _l'espace_ _de_ _stockage_ dans le conteneur attaché.",
|
||||
"block.create.stockpile_switch.tooltip.condition1": "Lorsqu'en dessous de la limite de stockage minimum",
|
||||
"block.create.stockpile_switch.tooltip.behaviour1": "Arrête de fournir de _l'énergie_",
|
||||
|
||||
"block.create.content_observer.tooltip": "OBSERVATEUR DE CONTENU",
|
||||
"block.create.content_observer.tooltip.summary": "_Détecte les objets_ à l'intérieur des _conteneurs_ et des _transporteurs_ correspondant à un _filtre_ configuré. Tant que l'_inventaire_, le _tapis roulant_ ou la _glissière_ observé _contient_ un objet correspondant, ce composant émet un _signal de redstone_. Quand un _entonnoir_ observé _transfère_ un objet correspondant, ce composant émet une _impulsion de redstone_.",
|
||||
|
||||
"block.create.redstone_link.tooltip": "LIAISON REDSTONE",
|
||||
"block.create.redstone_link.tooltip.summary": "Points de terminaison pour les connexions de _redstone_ _sans-fil_. Peut être attribué des _fréquences_ en utilisant n'importe quel objet. La portée du signal est limitée, quoique raisonnablement loin.",
|
||||
"block.create.redstone_link.tooltip.condition1": "Lorsqu'alimenté",
|
||||
"block.create.redstone_link.tooltip.behaviour1": "La réception de liens de la même _fréquence_ produira un signal redstone.",
|
||||
"block.create.redstone_link.tooltip": "LIEN DE REDSTONE",
|
||||
"block.create.redstone_link.tooltip.summary": "Terminaux pour les connexions de _redstone_ _sans-fil_. Peut être attribué des _fréquences_ en utilisant n'importe quel objet. La portée du signal est limitée, nonobstant raisonnablement loin.",
|
||||
"block.create.redstone_link.tooltip.condition1": "Quand alimenté",
|
||||
"block.create.redstone_link.tooltip.behaviour1": "Les liens de la même _fréquence_ configurés en réception produira un signal redstone.",
|
||||
"block.create.redstone_link.tooltip.control1": "Clic droit avec un objet",
|
||||
"block.create.redstone_link.tooltip.action1": "Définit la _fréquence_ sur cet élément. Un total de _deux_ _différents_ _objets_ peuvent être utilisés en combinaison pour définir une fréquence.",
|
||||
"block.create.redstone_link.tooltip.control2": "Clic droit en étant accroupi",
|
||||
"block.create.redstone_link.tooltip.action2": "TBascule entre le mode _receveur_ et _transmetteur_.",
|
||||
"block.create.redstone_link.tooltip.action2": "Bascule entre le mode _récepteur_ et _transmetteur_.",
|
||||
|
||||
|
||||
"block.create.redstone_contact.tooltip": "redstone_contact REDSTONE",
|
||||
"block.create.redstone_contact.tooltip.summary": "N'émet de l'énergie que par paires. Il est mobile avec _pistons_ _mécaniques_ ou _roulements_.",
|
||||
"block.create.redstone_contact.tooltip.condition1": "Lorsque tourné vers un autre redstone_contact",
|
||||
"block.create.redstone_contact.tooltip.behaviour1": "Fournit un _signal_ _redstone_.",
|
||||
"block.create.redstone_contact.tooltip.condition2": "Lorsqu'en mouvement",
|
||||
"block.create.redstone_contact.tooltip.behaviour2": "Déclenche tous les redstone_contacts fixes qu'il passe.",
|
||||
"block.create.redstone_contact.tooltip": "CONTACT DE REDSTONE",
|
||||
"block.create.redstone_contact.tooltip.summary": "N'émet de l'énergie que par paires. Il est mobile avec des _pistons_ _mécaniques_ ou _roulements_.",
|
||||
"block.create.redstone_contact.tooltip.condition1": "Quand tourné vers un autre contact de redstone",
|
||||
"block.create.redstone_contact.tooltip.behaviour1": "Fournit un _signal_ de _redstone_.",
|
||||
"block.create.redstone_contact.tooltip.condition2": "Quand en mouvement",
|
||||
"block.create.redstone_contact.tooltip.behaviour2": "Déclenche tous les contacts de redstone fixes qu'il passe.",
|
||||
|
||||
"block.create.adjustable_crate.tooltip": "CAISSE AJUSTABLE",
|
||||
"block.create.adjustable_crate.tooltip.summary": "Ce _conteneur_ _de_ _stockage_ permet un contrôle manuel de sa capacité. Il peut contenir jusqu'à _16_ _piles_ de n'importe quel objet. Prend en charge les _comparateurs_ _de_ _redstone_.",
|
||||
|
@ -957,16 +1003,20 @@
|
|||
|
||||
"block.create.creative_crate.tooltip": "CAISSE CRÉATIVE",
|
||||
"block.create.creative_crate.tooltip.summary": "Fournit une réserve infinie de blocs aux _Schémacanons_ adjacents.",
|
||||
"block.create.creative_crate.tooltip.condition1": "Quand un objet se trouve dans l'emplacement de filtrage",
|
||||
"block.create.creative_crate.tooltip.behaviour1": "Tout ce qui _extrait_ de ce conteneur aura une _alimentation illimitée_ de l'objet spécifié. Les objets _insérés_ dans cette caisse seront _éliminés_.",
|
||||
|
||||
"block.create.deployer.tooltip": "DÉPLOYEUR",
|
||||
"block.create.deployer.tooltip.summary": "_Frappe_, _utilise_ et _active_. Cette machine essaiera _d'imiter_ un _joueur_ autant que possible. Peut _prendre_ et _déposer_ des _objets_ dans _l'inventaire_ adjacent. Peut être affecté à une pile d'éléments en tant que _filtre_.",
|
||||
"block.create.deployer.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.deployer.tooltip.condition1": "Quand tourné",
|
||||
"block.create.deployer.tooltip.behaviour1": "Étend son bras et _active_ dans l'espace de bloc _2m_ _devant_ de lui-même.",
|
||||
"block.create.deployer.tooltip.condition2": "Clic droit avec une clé",
|
||||
"block.create.deployer.tooltip.behaviour2": "Bascule le mode frappe. Dans le _mode_ _frappe_, le déployeur tentera d'utiliser son élément pour _casser_ les _blocs_ ou infliger des _dégats_ aux _entités_.",
|
||||
"block.create.deployer.tooltip.condition3": "Quand un filtre est attribué",
|
||||
"block.create.deployer.tooltip.behaviour3": "Le déploiement n'est activé que si l'élément tenu _correspond_ au _filtre._ Les éléments ne correspondant pas ne peuvent pas être insérés ; les éléments tenus correspondant au filtre ne peuvent pas être extraits.",
|
||||
|
||||
"block.create.brass_casing.tooltip": "BOÎTIER EN LAITON",
|
||||
"block.create.brass_casing.tooltip.summary": "Boîtier de machine robuste avec une variété d'utilisations. Sans danger pour la décoration.",
|
||||
"block.create.brass_casing.tooltip": "REVÊTEMENT EN LAITON",
|
||||
"block.create.brass_casing.tooltip.summary": "Revêtement de machine robuste avec une variété d'utilisations. Sans danger pour la décoration.",
|
||||
|
||||
"block.create.pulse_repeater.tooltip": "RÉPÉTEUR D'IMPULSIONS",
|
||||
"block.create.pulse_repeater.tooltip.summary": "Un circuit simple pour couper les signaux de redstone passant à une longueur de _1_ _tick_.",
|
||||
|
@ -989,20 +1039,36 @@
|
|||
|
||||
"block.create.speedometer.tooltip": "COMPTEUR DE VITESSE",
|
||||
"block.create.speedometer.tooltip.summary": "Mesure et affiche la _ vitesse de rotation _ des composants cinétiques attachés. Prend en charge les _comparateurs_ _de_ _redstone_.",
|
||||
"block.create.speedometer.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.speedometer.tooltip.condition1": "Quand tourné",
|
||||
"block.create.speedometer.tooltip.behaviour1": "Indique une couleur correspondant au niveau de vitesse. _Vert_ indique une rotation lente, _Bleu_ modérée et _violet_ rapide. Certains composants mécaniques nécessitent une vitesse suffisante pour fonctionner correctement.",
|
||||
|
||||
"block.create.stressometer.tooltip": "STRESSOMÈTRE",
|
||||
"block.create.stressometer.tooltip.summary": "Mesure et affiche la _stress__ globale du réseau cinétique attaché. Prend en charge les _comparateurs_ _de_ _redstone_.",
|
||||
"block.create.stressometer.tooltip.condition1": "Lorsque tourné",
|
||||
"block.create.stressometer.tooltip.condition1": "Quand tourné",
|
||||
"block.create.stressometer.tooltip.behaviour1": "Indique une couleur correspondant au niveau de contrainte. Les _réseaux_ _surchargés_ cesseront de bouger. Le stress peut être soulagé en ajoutant plus de _sources_ _rotationnelles_ au réseau.",
|
||||
|
||||
"item.create.sand_paper.tooltip": "PAPIER DE VERRE",
|
||||
"item.create.sand_paper.tooltip.summary": "Un papier rugueux qui peut être utilisé pour _polir des matériaux_. Peut être appliqué automatiquement à l'aide du déployeur.",
|
||||
"item.create.sand_paper.tooltip.condition1": "Quand utilisé",
|
||||
"item.create.sand_paper.tooltip.behaviour1": "Polit les objets qui se tenus dans la _main secondaire_ ou par terre quand on les _regarde_.",
|
||||
|
||||
"item.create.super_glue.tooltip": "COLLE EXTRA-FORTE",
|
||||
"item.create.super_glue.tooltip.summary": "Collez un bloc à un autre, et ils seront à jamais inséparables.",
|
||||
"item.create.super_glue.tooltip.condition1": "Quand utilisé",
|
||||
"item.create.super_glue.tooltip.behaviour1": "Rend la face _cliquée_ d'un bloc _collante_. Les blocs attachés aux faces collantes seront entraînés par des _pistons mécaniques_, _des roulements_ et d'autres contrôleurs.",
|
||||
"item.create.super_glue.tooltip.condition2": "Quand tenu en main secondaire",
|
||||
"item.create.super_glue.tooltip.behaviour2": "Attache automatiquement les blocs placés de la main principale à la _face_ contre laquelle ils ont été _placés_.",
|
||||
|
||||
"item.create.builders_tea.tooltip": "THÉ DU CONSTRUCTEUR",
|
||||
"item.create.builders_tea.tooltip.summary": "La boisson parfaite pour commencer la journée - _motivante_ et _rasasiante_.",
|
||||
|
||||
"item.create.refined_radiance.tooltip": "ÉCLAT RAFFINÉ",
|
||||
"item.create.refined_radiance.tooltip.summary": "Un matériau chromatique forgé à partir de _lumière_ _absorbée_.",
|
||||
|
||||
"item.create.shadow_steel.tooltip": "ACIER SOMBRE",
|
||||
"item.create.shadow_steel.tooltip.summary": "Un matériau chromatique forgé _dans_ _le_ _néant_.",
|
||||
|
||||
"item.create.minecart_coupling.tooltip": "LIEN POUR WAGONS",
|
||||
|
||||
"item.create.crafter_slot_cover.tooltip": "COUVERCLE D'EMPLACEMENT",
|
||||
"item.create.crafter_slot_cover.tooltip.summary": "Utilisé pour marquer un _établi_ _mécanique_ comme un emplacement vide dans une recette. Les établis ne doivent pas nécessairement former une grille carrée complète. C'est utile quand il y a des recettes où les _ingredients_ _sont_ _en_ _diagonale_ les uns aux autres.",
|
||||
|
@ -1012,7 +1078,7 @@
|
|||
"create.tooltip.randomWipDescription0": "Veuillez garder cet objet hors de portée des enfants.",
|
||||
"create.tooltip.randomWipDescription1": "Un bébé panda meurt chaque fois que vous utilisez cet objet. Chaque. Fois.",
|
||||
"create.tooltip.randomWipDescription2": "À utiliser à vos risques et périls.",
|
||||
"create.tooltip.randomWipDescription3": "Ce n'est pas l'objet que vous recherchez, *agites les doigts* veuillez vous disperser.",
|
||||
"create.tooltip.randomWipDescription3": "Ce n'est pas l'objet que vous recherchez, *agite les doigts* circulez.",
|
||||
"create.tooltip.randomWipDescription4": "Cet objet s'autodétruit en 10 secondes. 10, 9, 8...",
|
||||
"create.tooltip.randomWipDescription5": "Croyez-moi, c'est inutile.",
|
||||
"create.tooltip.randomWipDescription6": "En utilisant cet article, vous êtes responsables et acceptez ses conditions.",
|
||||
|
|
Loading…
Reference in a new issue